文章目录

    • 1.java概述:
    • 2. 环境变量
    • 3.常用的DOS命令
    • 4.Java的特性
    • 5.Java的加载与执行原理详解
    • 6.“HelloWorld”的执行过程以及原理
    • 7.Javac和java命令的使用
  • 二、关键字
    • 1. 内容:
    • 2. 特点:
    • 3. 注意事项
  • 三、标识符
    • 1.内容:
    • 2.组成规则:
    • 3.注意事项
    • 4.常见的命名规则
  • 四、注释
    • 1.内容
    • 2.分类
    • 3.把HelloWord案例写了一个带注释的版本
    • 4.注释的作用
  • 五、常量
    • 1.内容
    • 2.分类
    • 3.字面值常量
    • 4.在java中针对整数常量提供了四种表现形式
  • 六、进制转换
    • 1. 十进制和其他进制的转换
    • 2. 二进制到其他进制的转换:8421法
  • 七、变量
    • 1.内容
    • 2.变量的格式
    • 3.注意事项
  • 八、数据类型
    • 1.内容
    • 2.分类
    • 3.注意事项
  • 九、数据类型转换
    • 总规则
    • 整数没有超范围可以直接赋值给char,int,short,而不用强制转换
    • 1. boolean类型不参与转换
    • 2. 默认转换
    • 3.强制转换
  • 十、运算符
    • 1.算术运算符
    • 2.赋值运算符
    • 3.比较运算符
    • 4.位运算符
    • 5.三元运算符
  • 十一、Scanner的使用
    • 1.介绍
    • 2.基本方法格式
    • 3.两个常用小方法
    • 4.next()和nextLing()区别:
  • 十二、流程控制语句
  • 十三、if语句
    • 2. 三元运算符和if语句的关系
  • 十四、switch语句
    • 1. 格式:
    • 2.格式解释说明
    • 3.注意事项
    • 4. if语句和switch语句各自的场景
  • 十五、循环语句
    • 1.有三种:for,while,do...whil
    • 2.for循环语句
      • for循环的变形
      • for嵌套的理解
      • for循环中int i的问题
      • 1.例题
    • 4.while循环语句
      • 1、例题
    • 5.do...while循环
    • 6.三种循环的区别
    • 7.死循环
  • 十六、控制跳转语句
    • 1.break
    • 2.continue:继续
    • 3.return语句
  • 十七、方法
    • 1.内容
    • 2.方法的调用
    • 3.方法的注意事项
    • 4.方法重载
    • 递归介绍
  • 十八、数组
    • 1.内容
    • 2.java的内存分配
    • 3. 数组内存图
    • 4.数组的常见操作
      • 1.遍历
      • 2.最值
      • 3.逆序:值倒过来
      • 4.基本查找:通过值找对应的元素位
    • 5.数组操作的两个问题
    • 6.二维数组
      • 3. 二维数组的遍历
      • 4.杨辉三角
      • 5.Java中值传递问题
      • 6.输入一组数字,并转换为数组存储
  • 十九、面向对象
    • 1.介绍
    • 2.类的定义和使用
    • 3.Java程序开发、设计的和特征
    • 4.类和对象的关系
  • 二十、成员变量和局部变量的区别
    • 空指针异常
    • 1.变量什么时候定义为成员变量
  • 二十一、匿名对象
  • 二十二、封装
  • 二十三、private关键字
  • 二十四、this关键字
    • 1.this什么时候不能省略
    • 2.this()的用法!!
  • 二十五、构造方法
  • 二十六、标准代码
  • 二十七、创建对象Student s =new Student()做了哪些事情
  • 二十八、static关键字(静态)
    • 1.特点
    • 2.注意事项
    • 3.静态变量和成员变量的区别
    • 4.什么时候使用静态变量
    • 5.main方法的格式讲解
    • 6.空引用访问静态不会出现空指针
  • 二十九、如何制作帮助文档
  • 三十、通过JDK提供的API学习了Math类
  • 三十一、代码块
    • 1、局部代码块
    • 2、构造代码块
    • 3、静态代码块
    • 4、例子
  • 三十二、继承
    • 什么时候可以使用继承?
    • 1、如何解决父类没有无参构造
    • 2、面试题
    • 3.方法重写
    • 4、方法重写和方法重载的区别
    • 5、super关键字
      • 1.super()的用法
      • 2.super内存图
      • 3.super什么时候不能省
    • 6、this关键字和super关键字区别
    • 7.this和super不能用在main()下
    • 7.超类Object
  • 三十三、final关键字
  • 三十四、多态
    • 1.多态的前提
    • 2.多态的分类
    • 3.多态中的成员访问特点
    • 4.多态的优弊
    • 向下转型的风险
    • instanceof运算符判断引用指向的对象的类型
    • 静态方法不存在方法覆盖
    • 私有方法不能被覆盖
    • 方法覆盖时的返回值类型
    • 5.多态内存图
  • 三十五、抽象
    • 1.概述和特点
    • 2.成员特点
    • 3.例子
    • 4.抽象类的小问题
  • 三十六、接口
    • 1.接口的概述
    • 2.接口的特点
    • 3.接口成员特点
    • 4.类、接口互相的关系
    • 5.抽象类和接口的区别
  • 三十七、形式参数和返回值问题
    • 1.形式参数
    • 2.返回值类型
    • 3.链式编程
  • 三十八、包
    • 1. 介绍
    • 2.带包的编译和运行
    • 3.导包
  • 三十九、权限修饰符
    • 1.使用范围
    • 2.分类介绍
  • 四十、内部类
    • 1.概述和访问特点
    • 2.成员内部类
      • 1.面试题
    • 3.局部内部类
    • 4.匿名内部类
      • 1.匿名内部类在开发中的使用
      • 2.面试题
  • 四十一、eclipsed的概述和使用
    • 1.视窗
    • 2.基础设置
    • 3.快捷键
    • 4.标准代码的快捷键
    • 5.帮助文档和jar
    • 6.如何删除和导出项目
    • 7.几个常见的小问题
    • 8.Debug调试
  • 四十二、API的概述
  • 四十三、Object类
    • 1.概述
    • 2.toString()
      • 1.直接输出类名的结果是?
    • 3.equals()
    • 4.要了解的方法
      • 1.hashCode()
      • 2.getClass()
      • 3.finalize()和clone()
  • 四十四、String类
    • 1.概述
    • 2.构造方法
    • 3.字符串的特点
    • 4.面试题
    • 5.字符串的四大功能
      • 1.String类的判断功能
        • 1.遍历字符串
      • 2.String类的获取功能
      • 3.String类转换功能
        • 1.练习题
      • 4.String类替换功能、去除空格功能、按字典顺序比较功能
        • 1.练习题
      • 5、统计大串中出现小串的次数
  • 四十五、StringBuffer
    • 1.介绍和好处
    • 2.与String的区别
    • 3.构造方法
    • 4.StringBuffer的添加功能
    • 5.StringBuffer的删除功能
    • 6.StringBufferd的替换功能
    • 7.StringBuffer的反转功能
    • 8.StringBuffer的截取功能
    • 9.StringBuffer和String的相互转换
      • 1.字符串拼接
      • 2.字符串的反转
      • 3.判断一个字符串是否对称
    • 10面试题
      • 1.String、StringBuffer和StringBuilder的区别
      • 2.StringBuffer和数组的区别
      • 3.形式参数问题
  • 四十六、数组高级以及Arrays
    • 1.排序
      • 1.冒泡排序
      • 2.选择排序
    • 2.查找
      • 1.二分查找
      • 2.基本查找
    • 3.Array工具类
    • 4.Integer类
      • 1.String和int的相互转换
      • 2.进制转换
      • 3.JDK5的新特征
      • 4.面试题
  • 四十七、Character类
    • 1.介绍
    • 2.构造方法
    • 3.方法
  • 四十八、正则表达式
    • 1.含义
    • 2.规则
    • 3.校验QQ号码
    • 4.判断功能
      • 1.校验手机号码
      • 2.校验邮箱
    • 5.分割功能
      • 1.网站年龄搜索范围
      • 2.小练习
      • 3.分割字符串
    • 6.替换功能
    • 7.获取功能
      • 1.获取字符串中三个字符组成单词
  • 四十九、Math类
    • 1.介绍
    • 2.方法
    • 3.面试题:可以实现获取任意范围内的随机数
  • 五十、Random类:产生随机数
    • 1.方法
  • 五十一、System类:包含一些有用的类字段和方法
    • 1.垃圾回收器
    • 2.终止当前正在运行的虚拟机
    • 3.返回以毫秒为单位的当前时间
    • 4.从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束
  • 五十二、BigInteger类:用于超过Int范围的数据进行计算
    • 1.构造方法
    • 2.方法
  • 五十三、BigDecimal类:用于浮点数据的计算
    • 1.介绍
    • 2.方法
  • 五十四、Date类和DateFormat类
    • 1.Date类
      • 1.构造方法
      • 2.方法
    • 2.DateFormat类
      • 1.介绍
      • 2.String和Date相互转换
        • 1.图解
        • 2.转换
      • 3.算一算你来到这个世界多少天了
  • 五十五、Calendar类:日历类
    • 1.介绍
    • 2.得到日历
    • 3.方法
    • 4.获取任意一年的二月有多少天
  • 五十六、对象数组
    • 1.介绍
    • 2.用数组存储5个学生对象
  • 五十七、集合
    • 1.集合的由来,和数组的区别
    • 2.集合的继承体系结构
    • 3.==Collection单列集合==
      • 1.概述
      • 2.功能
        • 1.基本功能
        • 2.高级功能
        • 3.把集合转成数组,能实现集合的遍历
        • 4、Iterator iterator():迭代器,集合的专用遍历方式,通用的迭代器
          • 1.迭代器的问题探讨
          • 2.迭代器的原理
    • 4.List接口
      • 1.介绍
      • 2.特有功能
      • 3.List特有的遍历方法
      • 4.并发修改异常
        • 1.解决方案
      • 5.常见数据结构
      • 6.List的子类特点
      • 7.子类Vector的特有功能
      • 8.子类LinkedList的特有功能
      • 9.Link集合练习
        • 1.ArrayList去除集合中字符串的重复值
        • 2.去除集合中对象的重复值
        • 3.用LinkedList摸你栈数据结构的集合,并测试
    • 5.Set接口
      • 1.HashSet子类
        • 1.字符串遍历
        • 2.自定义对象存储
        • 3.LinkdeHashSet,HashSet的子类
      • 2.TreeSet子类
        • 1.无参构造,自然排序
        • 2.带参构造,比较器排序
      • 3.Set集合练习题
    • 5.Collection集合总结
      • 1.如何选择
      • 2.常用的方法
    • 7.针对Collection集合我们到底用谁?
    • 8.在集合中常见的数据结构
    • 9.==Map双列集合==
      • 1.概述
      • 2.功能
      • 3.Map集合遍历
    • 10.HashMap子类
      • 2.LinkedHashMap,HashMap的子类
    • 11.TreeMap子类
    • 12.Map集合练习题
      • 1.统计字符串中每个字符出现的次数
      • 2.HashMap集合的嵌套
      • 3.HashMap和Hashtable的区别
      • 3.List,Set,Map等接口是否都继承Map接口?
    • 13.Map集合总结
      • 1.如何选择
      • 2.常用的的方法
    • 14.Collections集合工具类
      • 1.ArrayList存储自定义对象排序
    • 15.斗地主洗牌和发牌排序版
    • 16.登录注册案例集合版
  • 五十八、JDK5新特性
    • 1.泛型
      • 1.概述
      • 2.ArrayList存储字符串或对象的泛型版
      • 3.泛型由来
      • 4.泛型应用
        • 1.泛型类泛型方法
        • 2.泛型接口
        • 3.泛型高级(通配符)
    • 2.增强for
      • 1.ArrayList存储字符串或对象并遍历,增强for版
    • 3.静态导入
    • 4.可变参数
    • 5.练习题
      • 1.集合嵌套
      • 2.获取10个1-20之间的随机数,要求不能重复
      • 3.键盘录入多个数据,要求输出数据中的最大值
    • 6.枚举
      • 2.注意事项
  • 五十九、IO流
    • 1.异常
      • 1.try..catch..finally
      • 2.throws
      • 3.面试题
        • 1.throws和throw的区别
        • 2.final,finally和finalize的区别
        • 3.如果Catch里面有return语句,请问finally里面的代码还会执行吗,如果会,是在return前还是后
        • 4.编译时异常和运行时异常的区别
        • 5.异常中要了解的几个方法
      • 4.我们到底该如何处理异常
      • 5.自定义异常
      • 6.异常注意事项
      • 7.try-with-resources
    • 2.FIle类
      • 1.构造方法
      • 2.创建功能
      • 3.删除功能
      • 4.重命名功能
      • 5.判断功能
      • 6.获取功能
        • 1.基本获取功能
        • 2.高级获取功能
      • 7.判断e盘下是否有后缀为.jpg的文件,如果有,就输出名称
        • 方法一、先全部获取加入File数组,遍历时再选择输出
        • 方法二、先选择满足的要求加入数组,后遍历输出(过滤器功能)
      • 8.批量修改文件名称
    • 3.递归
      • 1.递归的思想概述
      • 2.用递归求5!
      • 3.兔子问题(斐波那契数列)
      • 4.递归输出指定目录下所有java文件的绝对路径
      • 5.递归删除带内容的目录
    • 4.IO流概述和分类
      • ==1.字节输出流FileOutputStream==
        • 1.构造方法
        • 2.往文件中写数据
        • 3.如何实现数据的换行和追加写入
        • 4.try...catch的异常处理方法
      • ==2.字节输入流FileInputStream==
        • 1.读出文件中内容
        • 2.读取数据两种方式图解
      • 3.复制文本文件(先读后写)
      • 4.计算机是如何识别什么时候该把两个字节转换为一个中文呢?
      • ==5.字节缓冲区流==
      • 6.基本字节流和高效字节流的速度比较
      • ==7.字符输出流OutputStreamWriter==
        • 1.字符流(转换流)的由来
        • 2.编码解码问题
        • 3.写数据
        • 4.OutputStreamWriter的方法
      • ==8.字符输入流InputStreamReader==
        • 1.读数据
        • 2.InputStreamReader的方法
      • 9.复制文本文件
      • ==10.字符流的便携类(以后字符流都用他)==
        • 1.复制文本文件
      • ==11.字符缓冲流==
        • 1.复制文本文件
        • 2.字符缓冲流特殊方法
          • 1.复制文本文件
      • 12.IO流小结图解
      • 13.把集合中的字符串数据存储到文本文件
      • 14.从文本中读取数据到集合中
      • 15.随机获取文本文件中的的姓名
      • 16.复制单机文件夹,文件夹里的东西也要复制过去
      • 17.复制指定目录下的指定文件,并修改后缀名
      • 18.复制多级文件夹
      • 19.用Reader模拟BufferedReader的readLine()功能
      • 20.LineNumberReader(获取行号)
        • 1.自定义类模拟LineNimberReader的获取行号功能
      • 21.Close()和flush()的区别
      • 22.登录注册案例IO版
      • 23.数据操作流(操作基本数据类型的流)
      • 24.内存操作流(处理临时存储信息)
      • 25.打印流
        • 1.复制文本文件
      • 26.标准输入输出流
        • 1.键盘录入数据的三种方法
        • 2.用字符缓冲流包装标准输出流
      • 27.随机访问流(它一个就能做写入和读取)
      • 28.合并流
        • 1.合并流读取两个文件的内容复制到一个文件中
        • 2.合并流读取多个文件的内容复制到一个文件中
      • 29.序列化流(对象和文本的操作)
        • 1.修改自定义对象类后,会导致不匹配,的解决办法
        • 2.transient关键字
      • 30.Properties集合(可以和IO流结合的集合)
        • 1.Properties特殊功能
        • 2.和IO流结合方法
        • 3.判断文件中是否有指定的键,如果有就修改值
        • 4.让猜数字小游戏只能玩5次
      • 31.NIO(新IO)
  • 六十、多线程
    • 1.进程和多进程的意义
    • 2.线程和多线程的意义
    • 3.Java程序的运行原理
    • 4.实现多线程的程序(Thread类)
      • 1.多线程实现方式一
      • 2.多线程实现方式二
      • 3.多线程两种方式图解
      • 4.获取和设置线程对象名称
      • 5.线程调度及获取和设置线程优先级
    • 5.线程控制
      • 1.线程休眠
      • 2.线程加入
      • 3.线程礼让
      • 4.线程守护
      • 5.线程中断
    • 6.线程的生命周期
    • 7.继承Thread类的方式卖电影票
    • 8.实现Runnable接口来做卖票(推荐使用)
    • 9.加入Sleep()方法后产生的问题
      • 1.重复值问题
      • 2.负数问题
    • 10.线程安全问题产生的原因
    • 11.同步代码块解决线程安全问题
      • 1.同步代码块解决线程安全问题的解释
    • 12.同步的特点
    • 13.同步代码块的锁及同步方法应用和锁的问题
      • 1.同步方法
    • 14.线程安全类
    • 15.JDK5之后的Lock锁
    • 16.死锁问题和同步的弊端
    • 17.生产者消费者问题
      • 1.为什么这些方法不定义在Thread类中?==
      • 2.等待唤醒机制,一人一次
    • 18.线程的状态转换图
    • 19.生产者消费者最终代码
    • 19.线程组
    • 20.线程池
      • 1.多线程的实现方式3(了解)
      • 2.线程求和
    • 21.匿名内部类实现多线程
      • 1.走哪一个程序 hello还是world
    • 22.定时器
      • 1.在指定的时间删除我们指定的文件
  • 六十一、设计模式
    • 1.简单工厂模式
    • 2.工厂方法模式
    • 3.单例模式
      • 1.单例设计模式之饿汉式(类一加载就创建对象)
      • 2.单例设计模式之懒汉式(用的时候才创建对象)
      • 3.单例模式的思想什么?代码体现
      • 4.Runtime类——单例模式的类
    • 4.模板设计模式
  • 5.装饰设计模式
  • 六十二、GUI(图形用户界面)
    • 1.概述
    • 2.Awt和swing包的概述
    • 3.HelloWorld窗体
    • 4.事件监听机制
      • 1.窗体关闭案例
      • 2.适配器设计模式
      • 3.用适配器改进窗体关闭
    • 5.窗体布局
    • 6.窗体添加流式布局并添加按钮和按钮事件
    • 7.把文本框的值通过按钮转移到文本域中
    • 8.通过鼠标移动到按钮上更改背景色
    • 9.控制在文本框里面只能输入数字字符
    • 10.菜单组件
      • 1.一级菜单
      • 2.多级菜单
  • 六十三、网络编程
    • 1.网络编程概述
    • 2.Scoket编程
    • 2.InetAddress类获取IP地址的
    • 3.UDP发送和接收数据
      • 1.UDP协议发送数据 DatagramSocket类
      • 2.UDP协议接收数据 DatagramSocket类
      • 3.图解
      • 4.键盘录入发送数据
      • 5.多线程实现聊天室
    • 4.TCP发送和接收数据
      • 1.TCP发送数据客户端 Socket类
      • 2.接收数据服务端 ServerSocket类
      • 3.图解
      • 4.服务器给客户端一个反馈
      • 5.客户端键盘录入数据
      • 6.客户端键盘录入写入文本文件中
      • 7.客户端读取文本文件到服务器
      • 8.客户端发送文本文件到服务器的文本文件中(上传文件)
      • 9.TCP上传文件并给出反馈
      • 10.TCP上传图片并给反馈
      • 11.多线程改进多个客户端上传文件
  • 六十四、反射
    • 1.类加载及加载器
    • 2.反射
      • 1.概述
      • 2.获取字节码文件的三种方法
      • 3.反射的使用
        • 1.通过反射获取无参构造并使用
        • 2.通过反射获取带参构造方法并使用
        • 3.通过反射获取私有构造方法并使用
        • 4.通过反射获取成员变量并使用
        • 5.通过反射获取无参无返回值成员方法并使用
        • 6.通过反射获取带参带返回值成员方法并使用
      • 4.通过反射运行配置文件
      • 5.往ArrayList集合中添加 add(“hello”)
      • 6.动态代理

1.java概述:

1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器;

1994年将Oak语言更名为Java;

Java的三种技术架构:

JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发;

JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础;

JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序;

1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。

2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。

3,配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。
程序执行需要使用外部指令javac,但是javac指令只能在JDK安装目录下的 bin目录执行,path环境变量使javac指令在任意目录下都可以运行

4.三者的关系:

2. 环境变量

1.在系统环境中新建JAVA_HOME,把JDK的安装路径复制进去
2. 在path最上方添加%JAVA_HOME%\bin    ————%%作用相当于引用



3.常用的DOS命令


4.Java的特性


5.Java的加载与执行原理详解


6.“HelloWorld”的执行过程以及原理

7.Javac和java命令的使用



二、关键字

1. 内容:

被java语言赋予特定含义的单词

2. 特点:

 全部小写

3. 注意事项

1.goto和const作为保留字存在
2.类似Notepad++这样的高级记事本会对关键字有特殊颜色标记

三、标识符

1.内容:

标识符就是给包、变量、常量、类名、方法、接口命名

2.组成规则:

1.英文字母大小写
2.数字
3.$和_

3.注意事项

1.不能以数字开头
2.不能是java中的关键字
3.区分大小写

4.常见的命名规则

1.包  全部小写
1.单级包:小写举例:back
2.多级包:小写,并用.隔开举例:cn.itcast``
2.类和接口1.一个单词:首字母大写举例:Student2.多个单词举例:StudentName3.方法名或变量名1.一个单词:首字母小写举例:name2.多个单词:从第二个单词开始,每个单词首字母大写举例:studentAge4.常量1.全部大写2.一个单词:大写举例PI3.多个单词:大写,并用_隔开举例:STUDENT_MAX_AGE

四、注释

1.内容

就是对程序进行解释说明的文字

2.分类

 1.单行注释://2.多行注释:/**/3.文档注释:/**   */

3.把HelloWord案例写了一个带注释的版本

后面我们要写一个程序的过程需求:分析:实现:代码体现:

4.注释的作用

1.解释说明程序,提高了代码的阅读性
2.可以帮助我们调试程序

五、常量

1.内容

在程序执行的过程中,其值不发生改变的量

2.分类

1.字面值常量
2.自定义常量

3.字面值常量

1.字符串常量
2.整数常量
3.小数常量
4.字符常量
5.布尔常量
6.空常量:null

4.在java中针对整数常量提供了四种表现形式

1.二进制:由0,1组成。以0b开头
2.八进制:由0,1,.....7组成。以0开头
3.十进制:由0,...9组成。整数默认是十进制
4.十六进制:由0,..9,a,b,c,d,e,f(大小均可)组成。以0x开头

六、进制转换

1. 十进制和其他进制的转换

2. 二进制到其他进制的转换:8421法

七、变量

1.内容

在程序的执行过程中,其值在某个范围内可以发送改变的量

2.变量的格式

 1.数据类型 变量名 = 初始化值;2. 数据类型 变量名;变量名 = 初始化值;

3.注意事项

变量实例化之后才有默认值,比如:new Student().age      默认值为0
没有实例化就没有值,需要赋值才行
比如:int a=10;

八、数据类型

1.内容

java是一种强类型语言,针对每种数据都提供了对应的数据类型

2.分类


  1. 基本数据类型

    1. 整数 ——占用字节
      byte————–1
      short ————2
      int —————4
      long ———— 8
    2. 浮点数
      float —— ——4
      double—— —8
    3. 字符
      char ————2
    4. 布尔
      boolean ———1

3.注意事项

1.整数默认是int类型,浮点数默认是double
2.定义long类型时要加L
3.定义float类型时要加F
4.byte,short在定义的时候,他们接收的其实是一个int类型的值,这个是自己做了一个数据检测的,如果不在他们的范围内,就报错

九、数据类型转换

总规则


整数没有超范围可以直接赋值给char,int,short,而不用强制转换



1. boolean类型不参与转换

2. 默认转换

1. 从大到小
2. byte,short,char--int--long--float--double
3. byte,short,char之间不相互转换,直接转成int类型参与运算
4. long:4字节float:8字节为什么long 要转换成float呢?1. 因为他们的底层存储结构不同2. float表示的数据范围比long的范围要大long:2^63-1float:3.4*10^38>2*2^114



3.强制转换

1.从大到下
2.可能会有精度损失,一般不建议这样使用
3.格式    1. 目标数据类型 变量名 =  (目标数据类型)(被转换的数据);
4.思考题和面试题1. 下面两种方式有区别吗?float  f1 = 12.345F;float  f1 = (float)12.345; ——可能会有精度缺失,浮点默认为double2. 面试题一、

 答:    byte b1=3.b2=4,b;b=b1+b2;  //报错,b1+b2先类型提升到int,所以值是int,精度会缺失b=3+4    //真确,先算计算结果得7,然后看结果是否在byte的范围内,如果在就不报错


——二、

//有问题,因为byte是1字节范围是-128~127,130不在这个范围//正确做法byte b = (byte)130;//计算机中的数据运算都是用补码进行的,首先要先算出130的二进制//整数是4字节,所以130原码是00000000 00000000 00000000 10000010//正数的原,反,补都一样,然后做截取操作,截成byte--10000010//这个结果是补码,需要转化成原码----1 1111110 = -126

——三、 byte值问题

    byte  b1 = 127;byte  b2 = (byte)128;  //-128byte  b3 = (byte)129;  //-127byte  b4 = (byte)130;  //-126byte的范围:-128~127128:10000000-128:10000000(这里的1即是符号位,也是数值位)5.ASCII码  —— 字符和整数计算时,字符转为ASCII码数字'0'——48'a'——97'A'——65字符串和其他数据做+,结果是字符串类型。这里的+不是加法运算,而是字符串连接符
System.out.println("hello"+'a'+1) //helloa1
System.out.println('a'+1+"hello") //98hello

十、运算符

1.算术运算符

1. +,-,*,/,%,++,--
2. +的用法1.加法2. 正号3. 字符串连接符
3./和%的区别1.数据做除法操作的时候,/取商,%取余2. /取商时候,如果一个数有小数,那么结果就是小数
4.++和--的用法1. 单独使用1.放在操作数据的前面和后面效果一样:a++或者++a效果一样2. 参与操作使用1. 放在操作数的前面:先自增或自减,在参与操作int  b=++a;2. 放在操作数后面:先参与操作,再自增或者自减int b =a++;3.例题:
 int x=4;int y=(x++)+(++x)+(x*10);//4+6+60//x=5,6

2.赋值运算符

 1.=,+=,-=,*=,/=,%=等2.扩展的赋值运算符的特点1.隐含了自动强制转换2.面试题:

第一个有问题,因为s+1的值是int类型,而是short会出现精度丢失
第二个没问题,因为扩展的赋值运算符其实隐含了一个强制类型的转换s+=1;不是等于s=s+1;而是等于s=(s的数据类型)(s+1)

+= 有追加的意思,在原先的基础上追加

3.比较运算符

1. ==,!=,>,<,<=,>=
2. 逻辑运算符用于连接boolean类型的式子
3. 结论           1. &:有false则false,两边都为true,结果才为true2. |:有true则true3. .^( 异或):相同则flase,不同则true情侣关系4.!:非true则flase,非flase则true5.&&:结果和 & 一样,只不过有短路效果。左边是flase,右边不执行。(提高了运行效率)6.||:结果和 | 一样,只不过有短路效果。左边是true,右边不执行。(提高了运行效率)


4.位运算符


计算机底层都是位运算,要做位运算,首先要把数据转换为二进制
2.

  1. 3&4

  2. ^的特殊用法:一个数据针对另一个数据位异或两次,该数不变
    1. 面试题:
    一、请自己实现两个整数变量的交换


    二、

    一般思想是 2*8,但是这不是最有效率的,乘法或者除法在底层都是转成位移答案:2 << 3一、<< 把左边的数据乘以2的移动次幂(在右边补0)3 << 2     // 3 * 2 ^ 2 = 3 * 4 = 12二、>> 把左边的数据除以2的移动次幂    (如果是负数则在左边补1)
    

24 >> 2 // 24 / 2 ^ 2 = 24 / 4 = 6

三、24>>>2 (无论正负都在左边补0)

5.逻辑运算符和位运算符很像,当两边是boolean值是表示逻辑运算符(x<3 & x<5),当两边是数字则表示的是位运算符(3 & 4)

5.三元运算符

1. 格式:比较表达式?表达式1:表达式2
2. 案例:1. 获取两个数据中的最大值2. 获取三个数据中的最大值int   max = (a>=b)?a:b;int    Max = (max>=c)?max:c;System.out.println(Max);3. 例子,判断是否是闰年System.out.println((x% 4 == 0 && x % 100 != 0) || (x% 400 == 0)? "输入的是闰年!" : "输入的不是闰年!");

十一、Scanner的使用

1. 导包(import java.uyil.Scanner;)
2. Scanner sc = new Scanner(System.in);
3. int x = sc.nextInt();

1.介绍


2.基本方法格式


3.两个常用小方法

4.next()和nextLing()区别:

next()方法读取到空白符就结束l;

nextLine()读取到回车结束也就是“\r”;

所以没还顺序前测试的时候next()再检测的空格的时候就结束输出了。

十二、流程控制语句

1. 顺序结构
2. 选择结构:按照不同的选择,执行不同的代码
3. 循环结构:做一些重复的代码

十三、if语句

1.

2.if(比较表达式);一般来说,有左大括号,就没有分号,有分号就没有左大括号
3.在做一个程序的基本测试时,一定要考虑(正确数据、错误数据、边界数据)

2. 三元运算符和if语句的关系

1. 所有三元运算符能实现的,if语句都能实现
2. 如果if语句语句体部分是输出语句system.out.print则三元不能实现,三元运算符是一个运算符,必须要有一个结果返回,不能是一个输出

十四、switch语句

1. 格式:

    switch(表达式){case 值1:语句体1;break;case 值2:语句体2;break;default:语句体n;break;;}

2.格式解释说明

      1.表达式:可以是byte,short,int,charJdK5以后可以是枚举Jdk7以后可以是字符串case:后面的值就是要和表达式进行比较的值break:表示程序到这里中断,跳出switch语句default:如果所有的情况都不匹配,就执行这里,相当于if语句的else2. 面试题switch语句的表达式可以是byte吗?可以是long吗?可以是String吗?可以,jkd7以后可以用

3.注意事项

     1.case后面只能是常量,数字,字符,字符串都行2.default可以省略吗?可以,但不建议,它的作用是对不正确的情况给出提示,特殊情况:case就能把值固定A,B,C,D3.break可以省略吗?可以省略,但是结果不是我们要的,会出现一个现象:case穿透,有时候我们会用到case穿透4.default不一定要在最后,可以在任意位置5.switch语句的结束条件1.遇到break就结束2.执行到末尾就结束


4. if语句和switch语句各自的场景

         1. if1.针对boolean类型的判断2.针对一个范围的判断3.针对一个范围的判断2.switch1.针对几个常量的判断

十五、循环语句

1.有三种:for,while,do…whil

2.for循环语句


初始化语句只执行一次

for循环的变形


for嵌套的理解

诀窍,一次只看一个for,不要好几个for一起看,当看一个for的时候,就把其他的for循环当做不存在

for循环中int i的问题


1.例题


2.水仙花是指一个三位数,其个位十位百位上的立方和等于他本身

for(int x=1;x<=4;x++){for(int y=1;y<=5;y++){System.out.print("*"); //print,不换行,横着输出}System.out.println();  //输出空语句来实现换行

for(int x=1;x<=4;x++){for(int y=1;y<=x;y++){System.out.print("*"); //几行输出几列}System.out.println();  //输出空语句来实现换行}

for(int x = 1;x<=9;x++){        //行只是控制多少行,没有输出            for(int y=1;y<=x;y++){System.out.print(y+"*"+x+"="+(y*x)+"\t");//列控制输出什么内容}System.out.println()
}

6.给数组排序

 int[] a={4,6,8,9,2};for(int y=0;y<a.length;y++){for(int x=y+1;x<a.length;x++){if(a[x]<a[y]){    //把a[0]和所有的数比一遍,把最小的给a[0]int temp=a[y];  //a[1]同理a[y]=a[x];a[x]=temp;}}}for(int x:a){System.out.print(x);}

4.while循环语句


2.
while和for的区别

1、例题

5.do…while循环

1.

6.三种循环的区别

for和while是判断以后在++,而do..while是++以后再判断

7.死循环

十六、控制跳转语句

1.break

1、跳出外层循环

2.continue:继续

1.用在循环语句中,离开此应用场景无意义
2.作用:跳出单层循环的一次,可以继续下一次
3.continue也可以像break一样,指定哪个循环

3.return语句

1.用于结束离它最近的一个方法,一旦遇到return,程序就不会继续往后执行

十七、方法

1.内容

 1、方法就是完成特定功能的代码块1.注意:在很多语言中有函数的定义,而在java中,函数被称为方法

2.方法的调用

3.方法的注意事项



前提是在同一个域中,也就是同一个{}中


栈内存结构的介绍



4.方法重载


补充:参数顺序不同

注意:传参的时候,要按方法中参数的顺序来赋值,形参中起决定作用的是数据类型,和后面的变量名一点关系没有

为什么和返回值类型无关呢?,因为我们调用方法的时候可以选择不接收返回值,只是执行方法比如 sum(),接收返回值就是 int a =sum(),如果两个方法返回值不一样,其他都一样,但是我调用的时候都不接收返回值,那么根本就无法区分这两个方法,所以重载和返回值无关

1.例子

public static int sum(int a,int b){return a+b;
}public static int sum(int a,int b,int c){return a+b+c;
}public static int sum(int a,float b){return a+b;
}public static int sum(float b,int a){return a+b;
}

递归介绍


十八、数组

1.内容

2.java的内存分配

3. 数组内存图

4.数组的常见操作

1.遍历


方式三

2.最值

3.逆序:值倒过来

4.基本查找:通过值找对应的元素位

5.数组操作的两个问题

6.二维数组

1.
2.

3. 二维数组的遍历

4.杨辉三角



5.Java中值传递问题


6.输入一组数字,并转换为数组存储


十九、面向对象

1.介绍



2.类的定义和使用


new 是一个运算符,专门负责对象的创建!



成员变量类型的默认初始化值如下:


3.Java程序开发、设计的和特征

4.类和对象的关系



二十、成员变量和局部变量的区别




空指针异常



1.变量什么时候定义为成员变量



二十一、匿名对象


二十二、封装


二十三、private关键字



二十四、this关键字




1.this什么时候不能省略


为了见名知意

2.this()的用法!!


二十五、构造方法







2.

3.创建对象就是调用构造方法,要是不想让他创建对象,就把方法里的构造方法私有

二十六、标准代码



二十七、创建对象Student s =new Student()做了哪些事情

二十八、static关键字(静态)

1.特点



2.注意事项


3.静态变量和成员变量的区别


4.什么时候使用静态变量





5.main方法的格式讲解



6.空引用访问静态不会出现空指针


二十九、如何制作帮助文档




三十、通过JDK提供的API学习了Math类

  1. API(Application Programming Interface)
    应用程序编程接口(帮助文档)
  2. Math类


    Math.random()范围:[0.0,1.0)

三十一、代码块

1、局部代码块

2、构造代码块


3、静态代码块



4、例子

三十二、继承

父类私有是被继承的。但是子类无法访问父类的私有属性或方法,子类继承是继承父类的所有东西除了构造函数。
继承是为了更好的提高代码的重用性,封装则保护了代码的不可见部分,私有继承了但是无法在子类中直接访问 ,可以通过间接的方法,比如调用父类中继承的get()就能访问到父类被私有的实例变量



什么时候可以使用继承?

1、如何解决父类没有无参构造


1.方法一

2.方法二

2、面试题

1.

2.

3.方法重写

4、方法重写和方法重载的区别

5、super关键字


1.super()的用法

2.super内存图

3.super什么时候不能省


6、this关键字和super关键字区别

[外链图片转存失败,源站可能有防盗在这里插入!链机制,建描述]议将图片上https://传(imblog.gnim-.cn/20200527VCKm175647542.png?1)(https://img-blogcsdnimg.cn/20200527175647542.png?)]

7.this和super不能用在main()下

This和super都不能在main()方法中使用。因为main()方法是静态的,this是本类对象的引用,静态先于对象,所以是不能使用的。this通常指当前对象,super则指父类的。

7.超类Object

所有类默认继承Object类

三十三、final关键字



final修饰局部变量:

final修饰实例变量:


1.面试题


三十四、多态

1.多态的前提


2.多态的分类

3.多态中的成员访问特点




4.多态的优弊



2.

向下转型的风险

instanceof运算符判断引用指向的对象的类型

静态方法不存在方法覆盖

私有方法不能被覆盖

方法覆盖时的返回值类型

1.基本数据类型
返回值是基本数据类型,子类重写时的返回值类型必须和父类一致

2.引用类型
子类重写的返回值类型得是父类的子类

5.多态内存图


三十五、抽象

1.概述和特点



抽象类中可以有一般方法

2.成员特点


3.例子

1.
2.

4.抽象类的小问题

三十六、接口

1.接口的概述


2.接口的特点

3.接口成员特点



4.类、接口互相的关系


5.抽象类和接口的区别


三十七、形式参数和返回值问题

1.形式参数


2.返回值类型



3.链式编程

三十八、包

1. 介绍


2.带包的编译和运行

3.导包

三十九、权限修饰符

1.使用范围


这四种权限修饰符在任意时刻只能出现一个

2.分类介绍


四十、内部类

1.概述和访问特点


2.成员内部类


2.

内部类是private修饰:

外部类不能被静态修饰
内部类是static修饰:

1.面试题


3.局部内部类


4.匿名内部类


1.匿名内部类在开发中的使用

匿名对象用完就会回收,而堆里面的对象要等垃圾处理器有空了才会回收,匿名对象大大提高了效率

2.面试题


四十一、eclipsed的概述和使用

1.视窗

2.基础设置

3.快捷键

4.标准代码的快捷键


@Override:这个注解的意思是我这个方法是重写

5.帮助文档和jar



Jar和帮助文档需要配套使用

6.如何删除和导出项目

7.几个常见的小问题

8.Debug调试


四十二、API的概述

四十三、Object类

1.概述

2.toString()





1.直接输出类名的结果是?

Student s =new Student()
System.out.println(s);//返回地址值
打印出来 什么 那要看你s的toString()
方法是怎么实现的,如果没有toString()方法,那s会默认继承Object的toString()方法,而Object的toString()方法的实现就是返回对象的地址值

String a =new String();
System.out.println(a);
//返回空
因为String类同样也继承了Object,但是String类重写了Object的toString()方法,重写的目的就是返回字符串值本身,而非地址值。

3.equals()



4.要了解的方法

1.hashCode()

2.getClass()


3.finalize()和clone()



四十四、String类

1.概述

2.构造方法


3.字符串的特点

4.面试题



2.

5.字符串的四大功能

1.String类的判断功能


1.遍历字符串




2.String类的获取功能



3.String类转换功能



1.练习题


4.String类替换功能、去除空格功能、按字典顺序比较功能


![在这里插入图片描述](https://img-blog.csdnimg.cn/20200602151037868.png?

1.练习题


这种方法浪费了大量的字符串空间,后面的StringBuffer方法能改进

5、统计大串中出现小串的次数



四十五、StringBuffer

1.介绍和好处


2.与String的区别

StringBuffer就相当于水杯

String与StringBuffer的区别

简单地说,就是一个变量和常量的关系。StringBuffer对象的内容可以修改;而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象。

3.构造方法

4.StringBuffer的添加功能


5.StringBuffer的删除功能


6.StringBufferd的替换功能


7.StringBuffer的反转功能


8.StringBuffer的截取功能


9.StringBuffer和String的相互转换

为了让String使用StringBuffer中的反转功能

1.字符串拼接


2.字符串的反转

3.判断一个字符串是否对称


10面试题

1.String、StringBuffer和StringBuilder的区别

2.StringBuffer和数组的区别

3.形式参数问题


四十六、数组高级以及Arrays

1.排序

1.冒泡排序



arr.length-1是为了防止下标越界

arr.length-1—x是为了减少比较次数

之后进行遍历即可

2.选择排序


2.查找

1.二分查找

前提是数组是有序的,数组无序用基本查找法



2.基本查找

3.Array工具类


4.Integer类


Integer是引用类型

Integer 类在对象中包装了一个基本类型
int 的值。Integer 类型的对象包含一个 int 类型的字段。

此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。

1

1.String和int的相互转换

1.int———String

2.String——int

2.进制转换


注意Integer.parseInt(“123”,2),会报错,因为2进制只有0和1,其他进制也要按规则来

3.JDK5的新特征


4.面试题

四十七、Character类

1.介绍

Character 类在对象中包装一个基本类型 char 的值。Character 类型的对象包含类型为 char 的单个字段。

此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然。

2.构造方法

3.方法

四十八、正则表达式

1.含义

就是符合一定规则字符串

2.规则


3.校验QQ号码


常规做法
进阶做法

4.判断功能

1.校验手机号码


2.校验邮箱


5.分割功能

1.网站年龄搜索范围


2.小练习

3.分割字符串

6.替换功能


7.获取功能


1.获取字符串中三个字符组成单词


四十九、Math类

1.介绍

用于数字运算的类

2.方法


3.面试题:可以实现获取任意范围内的随机数


五十、Random类:产生随机数

1.方法


五十一、System类:包含一些有用的类字段和方法

1.垃圾回收器


2.终止当前正在运行的虚拟机

public static void exit(int status);

3.返回以毫秒为单位的当前时间

public static long currentTimeMillis()

但是这样单个输出没有意义,我们用于统计程序执行的时间

4.从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束

public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length) {}

参数:
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。

从arr的1号元素开始,复制两个元素到从arr2的2号元素开始,就是把8,9替换成了22,33

五十二、BigInteger类:用于超过Int范围的数据进行计算

1.构造方法


2.方法


五十三、BigDecimal类:用于浮点数据的计算

1.介绍


2.方法


五十四、Date类和DateFormat类

1.Date类

1.构造方法

Date(long date):分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。

2.方法


2.DateFormat类

1.介绍

DateFormat针对日期进行格式化和针对字符串进行解析的类,但是是抽象类,所以使用其子类SimpleDateFormat

2.String和Date相互转换

1.图解

2.转换


3.算一算你来到这个世界多少天了


五十五、Calendar类:日历类

1.介绍

日历类,封装了所有的日历字段值,通过统一方法根据传入不同的日历字段可以获取值

2.得到日历


3.方法



4.获取任意一年的二月有多少天


五十六、对象数组

1.介绍

数组既可以存储基本数据类型,也可以存储引用类型。它存储引用类型的时候数组就叫做对象数组

2.用数组存储5个学生对象



五十七、集合

1.集合的由来,和数组的区别

2.集合的继承体系结构


3.Collection单列集合

1.概述


2.功能

1.基本功能

2.高级功能

3.把集合转成数组,能实现集合的遍历



1.练习,五个学生对象

4、Iterator iterator():迭代器,集合的专用遍历方式,通用的迭代器




最终代码

1.迭代器的问题探讨


2.迭代器的原理

4.List接口

1.介绍

List是Collection的子接口

List集合特点:有序的(存储和取出一致),可重复的

2.特有功能




List的列表迭代器是继承了Iterator迭代器,他有更多的功能

没有输出,因为必须先正向遍历才能逆向遍历

3.List特有的遍历方法

4.并发修改异常


1.解决方案

方法一:迭代器迭代元素,迭代器修改元素
而Iterator迭代器没有添加功能,所以我们使用其子类接口ListIterator

方式二:集合遍历元素,集合修改元素

5.常见数据结构

栈和队列

数组和链表

6.List的子类特点


使用任何子类对象存储,遍历

7.子类Vector的特有功能



但是都被现在的功能替代了,只做了解就行

8.子类LinkedList的特有功能


9.Link集合练习

1.ArrayList去除集合中字符串的重复值

方法一、


方法二、

2.去除集合中对象的重复值


在Student类中要重写equals方法

3.用LinkedList摸你栈数据结构的集合,并测试

自己定义集合类

实现类

5.Set接口

1.HashSet子类



1.字符串遍历

2.自定义对象存储


没有保证元素的唯一性

代码改进,来保持唯一

要保证唯一性,只需要自动导入对象类中的hashCode()和equals()方法即可

3.LinkdeHashSet,HashSet的子类

特点:保证元素唯一,但是输出有序

2.TreeSet子类


图解

1.无参构造,自然排序

TreeSet的无参构造,是自然排序,需要在自定义对象类中重写compareTo()

2.带参构造,比较器排序

TreeSet的带参构造,是比较器排序,直接用匿名内部类

3.Set集合练习题

一、产生10个1-20之间的随机数要求不重复


二、键盘录入学生信息按照总分排序后输出

5.Collection集合总结

1.如何选择


2.常用的方法

7.针对Collection集合我们到底用谁?

8.在集合中常见的数据结构

9.Map双列集合

1.概述


2.功能



3.Map集合遍历

方法一、根据键找值(推荐)

方法二、根据键值对对象找键和值

遍历图解

10.HashMap子类

哈希表的作用是用来保证键的唯一性
键值是String,String
唯一的,无序的

键值是Integer,String

键值是Integer,String

键值是String,Student

键值是Student,string


为了保证唯一性,需要在student类中自动导入hashCode()和equals()

2.LinkedHashMap,HashMap的子类

11.TreeMap子类

唯一,实现排序

键值是String,String

键值是Student,String

需要重写Comparator

12.Map集合练习题

1.统计字符串中每个字符出现的次数


2.HashMap集合的嵌套

先遍历大集合,再在里面遍历小集合,一层一层来,嵌套别的集合也是一样,比如ArrayList…


3.HashMap和Hashtable的区别

3.List,Set,Map等接口是否都继承Map接口?

13.Map集合总结

1.如何选择


2.常用的的方法

14.Collections集合工具类



1.ArrayList存储自定义对象排序

ArrayList可以实现HashSet的唯一和TreeSet的排序

15.斗地主洗牌和发牌排序版



16.登录注册案例集合版


两个小问题:
A:多个对象共享一个成员变量,用静态
B:循环里如果有switch,并且在switch里面有break,那么结束的不是循环,而是switch语句




五十八、JDK5新特性

自动拆装箱,泛型增强for,静态导入,可变参数,枚举

1.泛型

一般在集合中使用

1.概述

泛型是一种把明确类型工作推迟到创建对象或者调用方法的时候才去明确特殊的类型

arrat.add(“hello“);
arrat.add(10); 一开始没有报错,但是程序运行时报错了
所以我们需要确定集合的类型,这就用到了泛型

2.ArrayList存储字符串或对象的泛型版


3.泛型由来



4.泛型应用

1.泛型类泛型方法


2.泛型接口



3.泛型高级(通配符)

1.泛型通配符<?>

2.? extends E


3.? super E

2.增强for


增强for其实就是用来代替迭代器的

1.ArrayList存储字符串或对象并遍历,增强for版


3.静态导入

4.可变参数



例子:Arrays工具类的asList()


不能添加和删除,只能修改,因为数组的长度是固定的

5.练习题

1.集合嵌套


2.获取10个1-20之间的随机数,要求不能重复


3.键盘录入多个数据,要求输出数据中的最大值


6.枚举


枚举类

测试类

2.注意事项


在switch中使用

五十九、IO流

1.异常


异常处理

1.try…catch…finally







2.throws

Throws后面可以跟多个异常名用”,”隔开

3.面试题

1.throws和throw的区别


2.final,finally和finalize的区别

3.如果Catch里面有return语句,请问finally里面的代码还会执行吗,如果会,是在return前还是后


4.编译时异常和运行时异常的区别

5.异常中要了解的几个方法


4.我们到底该如何处理异常

5.自定义异常




6.异常注意事项


7.try-with-resources

JDK7新特性

try括号中的流会自动关闭

2.FIle类

1.构造方法


2.创建功能

如果你创建文件或文件夹没写盘符,那么默认创建在当前项目路径下

3.删除功能


4.重命名功能


5.判断功能


6.获取功能

1.基本获取功能


2.高级获取功能

ListFiles()功能创建的File数组,之后直接调用File的方法

7.判断e盘下是否有后缀为.jpg的文件,如果有,就输出名称

endWith(): 测试此字符串是否以指定的后缀结束

方法一、先全部获取加入File数组,遍历时再选择输出

用的listFiles()方法

方法二、先选择满足的要求加入数组,后遍历输出(过滤器功能)

用的list()方法


8.批量修改文件名称


3.递归

1.递归的思想概述

2.用递归求5!


3.兔子问题(斐波那契数列)


递归算法

数组算法

变量算法

4.递归输出指定目录下所有java文件的绝对路径


5.递归删除带内容的目录


4.IO流概述和分类


分类


1.字节输出流FileOutputStream

1.构造方法


2.往文件中写数据



write()方法

3.如何实现数据的换行和追加写入


4.try…catch的异常处理方法

2.字节输入流FileInputStream

1.读出文件中内容


一次读取一个字节
读取中文相当于是两个字节的拼接
读取的结果是Acall码,之后强转为char类型还原
无法读取中文。因为中文是两个字节拼接,而它一次只能读取一个字节


一次读取一个字节数组
每次可以读取多个数据,提高了效率
能读取中文,因为一次能读取多个字节


2.读取数据两种方式图解

3.复制文本文件(先读后写)


一次一字节的方法

一次一数组的方法

4.计算机是如何识别什么时候该把两个字节转换为一个中文呢?


5.字节缓冲区流


字节缓冲输出流

字节缓冲输入流

6.基本字节流和高效字节流的速度比较

7.字符输出流OutputStreamWriter

1.字符流(转换流)的由来


编码表

2.编码解码问题

编码和解码用的编码表要一致

3.写数据

字符流
每个都当一个字符
括号里面是字节流


4.OutputStreamWriter的方法


8.字符输入流InputStreamReader

1.读数据


2.InputStreamReader的方法


9.复制文本文件


10.字符流的便携类(以后字符流都用他)

是字符流类的子类

1.复制文本文件


11.字符缓冲流

1.复制文本文件


2.字符缓冲流特殊方法

readLine()读不到换行符,换行要自己写

1.复制文本文件


12.IO流小结图解

13.把集合中的字符串数据存储到文本文件


14.从文本中读取数据到集合中


15.随机获取文本文件中的的姓名


16.复制单机文件夹,文件夹里的东西也要复制过去


17.复制指定目录下的指定文件,并修改后缀名


18.复制多级文件夹


数据源:要复制的数据的位置

目的地:复制到哪里


19.用Reader模拟BufferedReader的readLine()功能


为什么用字符缓冲区


测试类

20.LineNumberReader(获取行号)

BufferedReader的子类


1.自定义类模拟LineNimberReader的获取行号功能

21.Close()和flush()的区别


flush()在一次写入数据很大的情况下才用

22.登录注册案例IO版

和集合版的只是改了UserDemoImpl中的方法



23.数据操作流(操作基本数据类型的流)

之前学的都是对字符串的读写
而这个可以对基本数据类型进行读写

24.内存操作流(处理临时存储信息)

不走文件,和集合的存储类似

这里只写字节数组,其他的字符数组和字符串同理


25.打印流

只有写功能

底层也是一个高效流


PrintWriter字符打印流

PrintWriter自动刷新

1.复制文本文件


26.标准输入输出流

输出语句的本质就是IO流


1.键盘录入数据的三种方法


第三种:通过字符缓冲流包装标准输入流实现,是第二种没出来之前使用的输入方法

2.用字符缓冲流包装标准输出流

27.随机访问流(它一个就能做写入和读取)


对文件写入数据

对文件读取数据

28.合并流

1.合并流读取两个文件的内容复制到一个文件中


2.合并流读取多个文件的内容复制到一个文件中


29.序列化流(对象和文本的操作)


自定义对象类

序列化流

反序列化流

1.修改自定义对象类后,会导致不匹配,的解决办法

2.transient关键字

30.Properties集合(可以和IO流结合的集合)


1.Properties特殊功能


2.和IO流结合方法


Load()方法 文件数据—>集合

Store()方法 集合数据—>文本文件
文件中的数据必须是键值对


3.判断文件中是否有指定的键,如果有就修改值


4.让猜数字小游戏只能玩5次

把次数存入文件中,就能判断

31.NIO(新IO)



六十、多线程

1.进程和多进程的意义

2.线程和多线程的意义

比如迅雷,迅雷本身启动是个进程,但是里面能同时进行多个下载,就是多线程

并行:是逻辑上同时发生,指在某一个时间段内同时运行多个程序
并发:是物理上同时发生,指在某一个时间点同时运行多个程序

3.Java程序的运行原理

4.实现多线程的程序(Thread类)

1.多线程实现方式一



2.多线程实现方式二



3.多线程两种方式图解

4.获取和设置线程对象名称




5.线程调度及获取和设置线程优先级



5.线程控制

1.线程休眠


2.线程加入

tj1执行完了,下面的才能执行

3.线程礼让


4.线程守护

刘备是主线程,当刘备执行完毕后,关羽和张飞都不会再执行了

5.线程中断

Stop()后面的代码不会再执行

Interrupt()会走catch中的代码,和后面的代码



6.线程的生命周期

7.继承Thread类的方式卖电影票



8.实现Runnable接口来做卖票(推荐使用)


9.加入Sleep()方法后产生的问题

加入sleep()方法后,导致t1,t2,t3会同时进入程序

1.重复值问题

2.负数问题

10.线程安全问题产生的原因

11.同步代码块解决线程安全问题


1.同步代码块解决线程安全问题的解释

12.同步的特点

13.同步代码块的锁及同步方法应用和锁的问题

1.同步方法

14.线程安全类

15.JDK5之后的Lock锁


16.死锁问题和同步的弊端


17.生产者消费者问题



1.为什么这些方法不定义在Thread类中?==

这些方法调用,必须通过锁对象调用,而我们使用的锁对象是任意锁对象,所以这些方法必须定义在object类中

2.等待唤醒机制,一人一次


锁对象

生产者
消费者
测试类

18.线程的状态转换图

19.生产者消费者最终代码


在Student中做同步

生产者

消费者

测试类

19.线程组

线程组能对一组线程进行操作

20.线程池



1.多线程的实现方式3(了解)

但是这种方法只能依赖于线程池

2.线程求和


21.匿名内部类实现多线程


1.走哪一个程序 hello还是world

答:走world

22.定时器


1.在指定的时间删除我们指定的文件

六十一、设计模式

1.简单工厂模式


通过工厂来造猫狗对象

测试类

2.工厂方法模式


工厂接口

猫类工厂(创造对象)

测试类

3.单例模式


1.单例设计模式之饿汉式(类一加载就创建对象)


2.单例设计模式之懒汉式(用的时候才创建对象)

3.单例模式的思想什么?代码体现

4.Runtime类——单例模式的类

能打开系统软件

4.模板设计模式


这是个计算执行时间的模板类

这里写需要测时间的程序

5.装饰设计模式



定义手机规则接口

定义具体手机

定义装饰功能抽象类

具体的听彩铃功能
具体的听音乐功能

测试类

六十二、GUI(图形用户界面)

1.概述


2.Awt和swing包的概述

3.HelloWorld窗体

方法改进

4.事件监听机制

1.窗体关闭案例

但是有很多功能我们不要

2.适配器设计模式

接口方法类

适配器类,空实现接口


子类去重写空实现,要用那个功能就重写哪个

3.用适配器改进窗体关闭

5.窗体布局

6.窗体添加流式布局并添加按钮和按钮事件

7.把文本框的值通过按钮转移到文本域中


8.通过鼠标移动到按钮上更改背景色


9.控制在文本框里面只能输入数字字符


10.菜单组件

1.一级菜单


2.多级菜单



六十三、网络编程

1.网络编程概述


2.Scoket编程

2.InetAddress类获取IP地址的


3.UDP发送和接收数据

1.UDP协议发送数据 DatagramSocket类


2.UDP协议接收数据 DatagramSocket类


3.图解

4.键盘录入发送数据

发送端

接收端(一直接收)

5.多线程实现聊天室

执行类

发送端
接收端

4.TCP发送和接收数据

1.TCP发送数据客户端 Socket类

往通道内写数据

2.接收数据服务端 ServerSocket类

从通道内读数据

3.图解

4.服务器给客户端一个反馈

客户端

服务器

5.客户端键盘录入数据

客户端

服务器

6.客户端键盘录入写入文本文件中

把从通到中读出来的数据写入文本文件

客户端
服务器

7.客户端读取文本文件到服务器

客户端

服务器

8.客户端发送文本文件到服务器的文本文件中(上传文件)

客户端
服务器

9.TCP上传文件并给出反馈


客户端添加

服务器添加

10.TCP上传图片并给反馈

客户端

服务器

11.多线程改进多个客户端上传文件

客户端

多线程服务器

执行类

六十四、反射

1.类加载及加载器


2.反射

1.概述

通过字节码文件对象去使用,成员变量,构造方法,成员方法

2.获取字节码文件的三种方法



3.反射的使用

1.通过反射获取无参构造并使用

2.通过反射获取带参构造方法并使用

3.通过反射获取私有构造方法并使用

4.通过反射获取成员变量并使用


5.通过反射获取无参无返回值成员方法并使用

6.通过反射获取带参带返回值成员方法并使用

4.通过反射运行配置文件

反射前的做法,需要创建对象并调用方法,每有一个对象都得单独创建

每次改需求都得改变代码,太麻烦

反射后的做法,把对象和方法写在配置文件中,用反射来创建对象和方法,改需求的时候只需要改配置文件中的东西就行

配置文件

5.往ArrayList集合中添加 add(“hello”)

越过泛型检查

通过反射写一个通用的设置某个对象的某个属实为指定的值

工具类

测试类,能给私有的对象赋值

6.动态代理

给基本实现添加权限校验
通过动态代理就不用在每一个实现上添加权限校验代码,大大减少了代码修改

完成的目标:

具体的代码编写

用户接口:

接口的基本实现

返回代理对象

测试类

JavaSE知识点(1)相关推荐

  1. javaSE知识点汇总

    javaSE知识点汇总 Java基础知识精华部分   写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实 ...

  2. javase知识点大全总结

    JAVASE知识点总结 Java基础语法 1.标识符 1.在java语言中,对各种变量,方法和类等要素命名时所使用的字符序列就是标识符. 这些标识符有jdk定义好的,也有我们自己开发时候需要定义的. ...

  3. 爆肝!!!!JavaSE知识点1.3w字总结

    爆肝!!!!JavaSE知识点1.3w字总结 Java基础语法知识 关键名词 jdk jdk(java development kit),即Java开发工具集. SUN公司为JDK工具包提供了一整套文 ...

  4. JAVASE知识点整理(超万字)

    本文章只写每个知识点的例句,想了解具体的,请到JavaSE目录查看 javaSE阶段各知识点 javaSE阶段各知识点 一.环境配置 1 JDK环境变量path配置作用: 2 JDK,JRE,JVM的 ...

  5. JavaSE知识点总结

    Java基础知识点汇总 一.Java基础 一. 基本知识 1. JDK和JRE的区别 答:JDK是java语言开发工具包,包含JRE和开发工具(javac.exe等):JRE是java语言的运行环境, ...

  6. JavaSE知识点个人总结(不断更新)

    Java中equal方法和==的用法和区别 http://www.cnblogs.com/bluestorm/archive/2012/03/02/2377615.html http://www.cn ...

  7. 打怪升级之小白的大数据之旅(三十一)<JavaSE总结>

    打怪升级之小白的大数据之旅(三十) JavaSE总结 引言 Java这只小怪物我们已经练级差不多了,明天我们将进入新的旅程了,所以,我要对前面的整个JavaSE知识点进行总结,就像积攒够了经验升级一样 ...

  8. 那年学过的Java笔记一SE基础

    JavaSE知识点梳理 [外链图片转存失败(img-EbT2nyO4-1564412078255)(https://i.imgur.com/eZoqsaL.jpg)] JavaSE基础 [外链图片转存 ...

  9. 自学Java没学历可以找到工作吗?

    除非技术真的diao 炸 天,否则大概率是找不到的 低学历能自学编程的人大有人在,你在搜索引擎上一查,低学历自学编程改变自身命运的不胜枚举. 但无一不例外的,每个求学者的叙述都透漏着心酸.艰难困苦,披 ...

最新文章

  1. java基础--网络编程
  2. matlab批量生成灰度图像_科学网—matlab彩色图像的批处理转换为灰度、二值和主成分图图像 - 金秀良的博文...
  3. TOMCAT启动到一半停止如何解决
  4. [牛客] Tree-换根dp(预防加法取模导致等0)
  5. (网页)中的简单的遮罩层
  6. 作业自动提示功能设计思路
  7. 邢台农业计算机学校,邢台农业学校
  8. UnityShader11:纹理属性
  9. java 开发环境 列表_Java 开发环境配置
  10. NLP算法岗面经 | 微软/腾讯/字节跳动/快手
  11. 用户启动计算机并登录win7,win7电脑设置开机登录界面的方法?
  12. 锐捷 重启计算机,关于锐捷客户端重安装后要求反覆重启的解决办法
  13. js 正则表达式大全 数字、字符等
  14. 常用正则表达式大全(Xss防范、sql注入、手机邮箱验证等等,持续补充~)
  15. 惠普电脑u盘重装系统步骤_惠普电脑优盘装系统步骤
  16. 苹果手机描述文件服务器地址是什么,iPhone|iOS设备描述文件扫盲是什么?有什么用?...
  17. the little schemer 笔记(10.1)
  18. hyperlink的学习
  19. 让Linux内核不再卡死在DHCP请求上
  20. 为什么我感觉永远满足不了公司的要求?

热门文章

  1. LCD显示屏的优势与缺点浅析
  2. 2017下半年掘金日报优质文章合集:Android篇,靠着这份190页的面试资料
  3. [php] 获取请求 IP 地址,及所处 IP 所在服务商代码
  4. Taurus_Linux
  5. SPFA 跑得快,跑得快。最小花费问题
  6. 抖音直播卖茶效果如何;揭秘抖音养生茶暴利项目。丨国仁网络资讯
  7. Pandas处理日期数据的常见操作集锦
  8. python 判断excel单元格为空_用python检测空白Excel单元格
  9. 华硕主板+ubuntu18.04+3090驱动安装踩坑记录
  10. 《Editing Text in the wild》学习笔记