JavaSE知识点(1)

文章目录

    • 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.三者的关系
JavaSE知识点(1)_第1张图片
JavaSE知识点(1)_第2张图片

2. 环境变量

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

JavaSE知识点(1)_第3张图片
JavaSE知识点(1)_第4张图片
JavaSE知识点(1)_第5张图片

3.常用的DOS命令

JavaSE知识点(1)_第6张图片
JavaSE知识点(1)_第7张图片

4.Java的特性

JavaSE知识点(1)_第8张图片
JavaSE知识点(1)_第9张图片

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

JavaSE知识点(1)_第10张图片
JavaSE知识点(1)_第11张图片

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

JavaSE知识点(1)_第12张图片

7.Javac和java命令的使用

JavaSE知识点(1)_第13张图片
JavaSE知识点(1)_第14张图片
JavaSE知识点(1)_第15张图片

二、关键字

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.一个单词:首字母大写
		举例:Student
	2.多个单词
		举例:StudentName
	3.方法名或变量名
	1.一个单词:首字母小写
		举例:name
	2.多个单词:从第二个单词开始,每个单词首字母大写
		举例:studentAge
	4.常量
		1.全部大写
		2.一个单词:大写
			举例PI
		3.多个单词:大写,并用_隔开
			举例: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. 十进制和其他进制的转换

JavaSE知识点(1)_第16张图片JavaSE知识点(1)_第17张图片

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

JavaSE知识点(1)_第18张图片JavaSE知识点(1)_第19张图片

七、变量

1.内容

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

2.变量的格式

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

3.注意事项

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

JavaSE知识点(1)_第20张图片

八、数据类型

1.内容

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

2.分类

JavaSE知识点(1)_第21张图片
JavaSE知识点(1)_第22张图片

  1. 基本数据类型
    1. 整数 ——占用字节
      byte————–1
      short ————2
      int —————4
      long ———— 8
    2. 浮点数
      float —— ——4
      double—— —8
    3. 字符
      char ————2
    4. 布尔
      boolean ———1
      JavaSE知识点(1)_第23张图片

3.注意事项

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

JavaSE知识点(1)_第24张图片

九、数据类型转换

总规则

JavaSE知识点(1)_第25张图片

JavaSE知识点(1)_第26张图片
JavaSE知识点(1)_第27张图片

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

JavaSE知识点(1)_第28张图片
JavaSE知识点(1)_第29张图片
JavaSE知识点(1)_第30张图片

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-1
                           	 float:3.4*10^38>2*2^114

JavaSE知识点(1)_第31张图片
JavaSE知识点(1)_第32张图片

在这里插入图片描述
JavaSE知识点(1)_第33张图片

3.强制转换

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

JavaSE知识点(1)_第34张图片

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

JavaSE知识点(1)_第35张图片
——二、在这里插入图片描述

//有问题,因为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;  //-128
	byte  b3 = (byte)129;  //-127
	byte  b4 = (byte)130;  //-126
	
   byte的范围:-128~127
	128: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

十、运算符

JavaSE知识点(1)_第36张图片

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
	 

JavaSE知识点(1)_第37张图片

JavaSE知识点(1)_第38张图片

2.赋值运算符

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

JavaSE知识点(1)_第39张图片

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

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

3.比较运算符

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

JavaSE知识点(1)_第40张图片
JavaSE知识点(1)_第41张图片

4.位运算符

JavaSE知识点(1)_第42张图片
计算机底层都是位运算,要做位运算,首先要把数据转换为二进制
2.JavaSE知识点(1)_第43张图片

  1. 3&4JavaSE知识点(1)_第44张图片
    JavaSE知识点(1)_第45张图片

  2. ^的特殊用法:一个数据针对另一个数据位异或两次,该数不变
    1. 面试题:
    一、请自己实现两个整数变量的交换
    JavaSE知识点(1)_第46张图片
    JavaSE知识点(1)_第47张图片
    二、
    在这里插入图片描述

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

24 >> 2 // 24 / 2 ^ 2 = 24 / 4 = 6
JavaSE知识点(1)_第48张图片

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

JavaSE知识点(1)_第49张图片

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)? "输入的是闰年!" : "输入的不是闰年!");

JavaSE知识点(1)_第50张图片

十一、Scanner的使用

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

1.介绍

JavaSE知识点(1)_第51张图片
JavaSE知识点(1)_第52张图片

2.基本方法格式

在这里插入图片描述
JavaSE知识点(1)_第53张图片

3.两个常用小方法

JavaSE知识点(1)_第54张图片

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

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

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

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

十二、流程控制语句

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

十三、if语句

1.JavaSE知识点(1)_第55张图片

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,char
 	  		 JdK5以后可以是枚举
             Jdk7以后可以是字符串
             case:后面的值就是要和表达式进行比较的值
             break:表示程序到这里中断,跳出switch语句
             default:如果所有的情况都不匹配,就执行这里,相当于if语句的else
	2. 面试题
       switch语句的表达式可以是byte吗?可以是long吗?可以是String吗?
       可以,jkd7以后可以用 

3.注意事项

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

JavaSE知识点(1)_第56张图片
JavaSE知识点(1)_第57张图片

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

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

十五、循环语句

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

2.for循环语句

JavaSE知识点(1)_第58张图片
在这里插入图片描述

初始化语句只执行一次
JavaSE知识点(1)_第59张图片

JavaSE知识点(1)_第60张图片

for循环的变形

JavaSE知识点(1)_第61张图片
JavaSE知识点(1)_第62张图片

for嵌套的理解

诀窍,一次只看一个for,不要好几个for一起看,当看一个for的时候,就把其他的for循环当做不存在
JavaSE知识点(1)_第63张图片

for循环中int i的问题

JavaSE知识点(1)_第64张图片
JavaSE知识点(1)_第65张图片

1.例题

JavaSE知识点(1)_第66张图片
2.水仙花是指一个三位数,其个位十位百位上的立方和等于他本身

JavaSE知识点(1)_第67张图片

JavaSE知识点(1)_第68张图片

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

JavaSE知识点(1)_第69张图片

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

JavaSE知识点(1)_第70张图片

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循环语句

JavaSE知识点(1)_第71张图片
2.JavaSE知识点(1)_第72张图片
while和for的区别
JavaSE知识点(1)_第73张图片

1、例题

JavaSE知识点(1)_第74张图片

5.do…while循环

1.JavaSE知识点(1)_第75张图片

6.三种循环的区别

JavaSE知识点(1)_第76张图片

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

7.死循环

JavaSE知识点(1)_第77张图片

十六、控制跳转语句

1.break

JavaSE知识点(1)_第78张图片

1、跳出外层循环

JavaSE知识点(1)_第79张图片

2.continue:继续

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

3.return语句

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

十七、方法

1.内容

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

2.方法的调用

JavaSE知识点(1)_第80张图片

3.方法的注意事项

JavaSE知识点(1)_第81张图片
JavaSE知识点(1)_第82张图片
前提是在同一个域中,也就是同一个{}中
JavaSE知识点(1)_第83张图片
在这里插入图片描述
栈内存结构的介绍
JavaSE知识点(1)_第84张图片

JavaSE知识点(1)_第85张图片

JavaSE知识点(1)_第86张图片
JavaSE知识点(1)_第87张图片

在这里插入图片描述
JavaSE知识点(1)_第88张图片

4.方法重载

JavaSE知识点(1)_第89张图片
补充:参数顺序不同

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

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

1.例子
JavaSE知识点(1)_第90张图片

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;
}

JavaSE知识点(1)_第91张图片

递归介绍

JavaSE知识点(1)_第92张图片

JavaSE知识点(1)_第93张图片
JavaSE知识点(1)_第94张图片

十八、数组

1.内容

JavaSE知识点(1)_第95张图片

2.java的内存分配

JavaSE知识点(1)_第96张图片

3. 数组内存图

JavaSE知识点(1)_第97张图片

4.数组的常见操作

1.遍历

JavaSE知识点(1)_第98张图片
方式三
JavaSE知识点(1)_第99张图片

2.最值

JavaSE知识点(1)_第100张图片

3.逆序:值倒过来

JavaSE知识点(1)_第101张图片

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

JavaSE知识点(1)_第102张图片

5.数组操作的两个问题

JavaSE知识点(1)_第103张图片

6.二维数组

1.JavaSE知识点(1)_第104张图片
2.JavaSE知识点(1)_第105张图片

3. 二维数组的遍历

JavaSE知识点(1)_第106张图片

4.杨辉三角

JavaSE知识点(1)_第107张图片
JavaSE知识点(1)_第108张图片
JavaSE知识点(1)_第109张图片

5.Java中值传递问题

JavaSE知识点(1)_第110张图片
JavaSE知识点(1)_第111张图片

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

JavaSE知识点(1)_第112张图片
在这里插入图片描述

十九、面向对象

1.介绍

JavaSE知识点(1)_第113张图片
JavaSE知识点(1)_第114张图片
JavaSE知识点(1)_第115张图片

2.类的定义和使用

JavaSE知识点(1)_第116张图片
new 是一个运算符,专门负责对象的创建!

JavaSE知识点(1)_第117张图片
JavaSE知识点(1)_第118张图片
成员变量类型的默认初始化值如下:
JavaSE知识点(1)_第119张图片
JavaSE知识点(1)_第120张图片

JavaSE知识点(1)_第121张图片
JavaSE知识点(1)_第122张图片

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

JavaSE知识点(1)_第123张图片

4.类和对象的关系

JavaSE知识点(1)_第124张图片
JavaSE知识点(1)_第125张图片
JavaSE知识点(1)_第126张图片

JavaSE知识点(1)_第127张图片

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

JavaSE知识点(1)_第128张图片
JavaSE知识点(1)_第129张图片
JavaSE知识点(1)_第130张图片
JavaSE知识点(1)_第131张图片

空指针异常

JavaSE知识点(1)_第132张图片
JavaSE知识点(1)_第133张图片

JavaSE知识点(1)_第134张图片
JavaSE知识点(1)_第135张图片

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

在这里插入图片描述
JavaSE知识点(1)_第136张图片
JavaSE知识点(1)_第137张图片

二十一、匿名对象

JavaSE知识点(1)_第138张图片
JavaSE知识点(1)_第139张图片

二十二、封装

JavaSE知识点(1)_第140张图片
JavaSE知识点(1)_第141张图片

二十三、private关键字

JavaSE知识点(1)_第142张图片
JavaSE知识点(1)_第143张图片
JavaSE知识点(1)_第144张图片

二十四、this关键字

JavaSE知识点(1)_第145张图片
JavaSE知识点(1)_第146张图片
JavaSE知识点(1)_第147张图片

JavaSE知识点(1)_第148张图片
JavaSE知识点(1)_第149张图片

JavaSE知识点(1)_第150张图片

1.this什么时候不能省略

在这里插入图片描述
为了见名知意
JavaSE知识点(1)_第151张图片
在这里插入图片描述

2.this()的用法!!

JavaSE知识点(1)_第152张图片
JavaSE知识点(1)_第153张图片

二十五、构造方法

JavaSE知识点(1)_第154张图片
JavaSE知识点(1)_第155张图片
JavaSE知识点(1)_第156张图片
JavaSE知识点(1)_第157张图片
在这里插入图片描述
JavaSE知识点(1)_第158张图片

在这里插入图片描述
2.JavaSE知识点(1)_第159张图片
JavaSE知识点(1)_第160张图片
3.创建对象就是调用构造方法,要是不想让他创建对象,就把方法里的构造方法私有
JavaSE知识点(1)_第161张图片

二十六、标准代码

JavaSE知识点(1)_第162张图片
JavaSE知识点(1)_第163张图片
JavaSE知识点(1)_第164张图片

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

JavaSE知识点(1)_第165张图片

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

1.特点

JavaSE知识点(1)_第166张图片
JavaSE知识点(1)_第167张图片
JavaSE知识点(1)_第168张图片

2.注意事项

JavaSE知识点(1)_第169张图片
JavaSE知识点(1)_第170张图片

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

JavaSE知识点(1)_第171张图片
JavaSE知识点(1)_第172张图片

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

JavaSE知识点(1)_第173张图片
JavaSE知识点(1)_第174张图片
JavaSE知识点(1)_第175张图片
JavaSE知识点(1)_第176张图片
JavaSE知识点(1)_第177张图片

5.main方法的格式讲解

JavaSE知识点(1)_第178张图片
JavaSE知识点(1)_第179张图片
JavaSE知识点(1)_第180张图片

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

JavaSE知识点(1)_第181张图片
JavaSE知识点(1)_第182张图片

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

JavaSE知识点(1)_第183张图片
JavaSE知识点(1)_第184张图片
JavaSE知识点(1)_第185张图片
JavaSE知识点(1)_第186张图片

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

  1. API(Application Programming Interface)
    应用程序编程接口(帮助文档)
  2. Math类
    JavaSE知识点(1)_第187张图片
    JavaSE知识点(1)_第188张图片
    Math.random()范围:[0.0,1.0)

三十一、代码块

JavaSE知识点(1)_第189张图片

1、局部代码块

JavaSE知识点(1)_第190张图片

2、构造代码块

JavaSE知识点(1)_第191张图片
在这里插入图片描述

3、静态代码块

JavaSE知识点(1)_第192张图片
JavaSE知识点(1)_第193张图片

JavaSE知识点(1)_第194张图片
JavaSE知识点(1)_第195张图片

4、例子

JavaSE知识点(1)_第196张图片

三十二、继承

JavaSE知识点(1)_第197张图片

父类私有是被继承的。但是子类无法访问父类的私有属性或方法,子类继承是继承父类的所有东西除了构造函数。
继承是为了更好的提高代码的重用性,封装则保护了代码的不可见部分,私有继承了但是无法在子类中直接访问 ,可以通过间接的方法,比如调用父类中继承的get()就能访问到父类被私有的实例变量
JavaSE知识点(1)_第198张图片
JavaSE知识点(1)_第199张图片
JavaSE知识点(1)_第200张图片
在这里插入图片描述
JavaSE知识点(1)_第201张图片

什么时候可以使用继承?

JavaSE知识点(1)_第202张图片

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

JavaSE知识点(1)_第203张图片
1.方法一
JavaSE知识点(1)_第204张图片
2.方法二
JavaSE知识点(1)_第205张图片

2、面试题

1.JavaSE知识点(1)_第206张图片
JavaSE知识点(1)_第207张图片
2.JavaSE知识点(1)_第208张图片
JavaSE知识点(1)_第209张图片

3.方法重写

JavaSE知识点(1)_第210张图片

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

JavaSE知识点(1)_第211张图片

5、super关键字

JavaSE知识点(1)_第212张图片
JavaSE知识点(1)_第213张图片

JavaSE知识点(1)_第214张图片

1.super()的用法

JavaSE知识点(1)_第215张图片

2.super内存图

JavaSE知识点(1)_第216张图片

JavaSE知识点(1)_第217张图片

3.super什么时候不能省

JavaSE知识点(1)_第218张图片

在这里插入图片描述
JavaSE知识点(1)_第219张图片

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

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

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

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

7.超类Object

所有类默认继承Object类
JavaSE知识点(1)_第222张图片

三十三、final关键字

JavaSE知识点(1)_第223张图片
JavaSE知识点(1)_第224张图片
final修饰局部变量:
JavaSE知识点(1)_第225张图片
final修饰实例变量:
JavaSE知识点(1)_第226张图片
JavaSE知识点(1)_第227张图片
JavaSE知识点(1)_第228张图片

1.面试题
在这里插入图片描述
JavaSE知识点(1)_第229张图片
JavaSE知识点(1)_第230张图片

三十四、多态

1.多态的前提

JavaSE知识点(1)_第231张图片
JavaSE知识点(1)_第232张图片

2.多态的分类

JavaSE知识点(1)_第233张图片

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

JavaSE知识点(1)_第234张图片
JavaSE知识点(1)_第235张图片

JavaSE知识点(1)_第236张图片
JavaSE知识点(1)_第237张图片
在这里插入图片描述

4.多态的优弊

JavaSE知识点(1)_第238张图片
JavaSE知识点(1)_第239张图片
2.
JavaSE知识点(1)_第240张图片
JavaSE知识点(1)_第241张图片

向下转型的风险

JavaSE知识点(1)_第242张图片

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

JavaSE知识点(1)_第243张图片

静态方法不存在方法覆盖

JavaSE知识点(1)_第244张图片

私有方法不能被覆盖

JavaSE知识点(1)_第245张图片

方法覆盖时的返回值类型

1.基本数据类型
返回值是基本数据类型,子类重写时的返回值类型必须和父类一致
JavaSE知识点(1)_第246张图片

2.引用类型
子类重写的返回值类型得是父类的子类
JavaSE知识点(1)_第247张图片

5.多态内存图

在这里插入图片描述
JavaSE知识点(1)_第248张图片

三十五、抽象

1.概述和特点

JavaSE知识点(1)_第249张图片
JavaSE知识点(1)_第250张图片
抽象类中可以有一般方法
JavaSE知识点(1)_第251张图片
JavaSE知识点(1)_第252张图片

JavaSE知识点(1)_第253张图片

JavaSE知识点(1)_第254张图片

2.成员特点

在这里插入图片描述
在这里插入图片描述

3.例子

1.在这里插入图片描述
2.
JavaSE知识点(1)_第255张图片

4.抽象类的小问题

JavaSE知识点(1)_第256张图片

三十六、接口

1.接口的概述

在这里插入图片描述
JavaSE知识点(1)_第257张图片

2.接口的特点

JavaSE知识点(1)_第258张图片

3.接口成员特点

JavaSE知识点(1)_第259张图片
JavaSE知识点(1)_第260张图片
JavaSE知识点(1)_第261张图片

4.类、接口互相的关系

JavaSE知识点(1)_第262张图片
JavaSE知识点(1)_第263张图片

5.抽象类和接口的区别

JavaSE知识点(1)_第264张图片
JavaSE知识点(1)_第265张图片

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

1.形式参数

JavaSE知识点(1)_第266张图片
JavaSE知识点(1)_第267张图片

2.返回值类型

JavaSE知识点(1)_第268张图片
JavaSE知识点(1)_第269张图片
JavaSE知识点(1)_第270张图片

3.链式编程

JavaSE知识点(1)_第271张图片

三十八、包

1. 介绍

JavaSE知识点(1)_第272张图片
JavaSE知识点(1)_第273张图片

2.带包的编译和运行

JavaSE知识点(1)_第274张图片

3.导包

JavaSE知识点(1)_第275张图片

三十九、权限修饰符

1.使用范围

JavaSE知识点(1)_第276张图片
这四种权限修饰符在任意时刻只能出现一个

2.分类介绍

JavaSE知识点(1)_第277张图片
JavaSE知识点(1)_第278张图片

四十、内部类

1.概述和访问特点

JavaSE知识点(1)_第279张图片
JavaSE知识点(1)_第280张图片

2.成员内部类

JavaSE知识点(1)_第281张图片
2.JavaSE知识点(1)_第282张图片
在这里插入图片描述
内部类是private修饰:
JavaSE知识点(1)_第283张图片
外部类不能被静态修饰
内部类是static修饰:
JavaSE知识点(1)_第284张图片

1.面试题

JavaSE知识点(1)_第285张图片
JavaSE知识点(1)_第286张图片

3.局部内部类

JavaSE知识点(1)_第287张图片
JavaSE知识点(1)_第288张图片

4.匿名内部类

JavaSE知识点(1)_第289张图片
JavaSE知识点(1)_第290张图片

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

匿名对象用完就会回收,而堆里面的对象要等垃圾处理器有空了才会回收,匿名对象大大提高了效率
在这里插入图片描述
JavaSE知识点(1)_第291张图片

2.面试题

JavaSE知识点(1)_第292张图片
JavaSE知识点(1)_第293张图片

四十一、eclipsed的概述和使用

1.视窗

JavaSE知识点(1)_第294张图片

2.基础设置

JavaSE知识点(1)_第295张图片

3.快捷键

JavaSE知识点(1)_第296张图片

4.标准代码的快捷键

JavaSE知识点(1)_第297张图片
@Override:这个注解的意思是我这个方法是重写

5.帮助文档和jar

JavaSE知识点(1)_第298张图片
JavaSE知识点(1)_第299张图片
Jar和帮助文档需要配套使用

6.如何删除和导出项目

JavaSE知识点(1)_第300张图片

7.几个常见的小问题

JavaSE知识点(1)_第301张图片

8.Debug调试

JavaSE知识点(1)_第302张图片
在这里插入图片描述

四十二、API的概述

在这里插入图片描述

四十三、Object类

1.概述

在这里插入图片描述

2.toString()

在这里插入图片描述
JavaSE知识点(1)_第303张图片
在这里插入图片描述
JavaSE知识点(1)_第304张图片
在这里插入图片描述

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()

JavaSE知识点(1)_第305张图片
在这里插入图片描述
JavaSE知识点(1)_第306张图片

4.要了解的方法

在这里插入图片描述

1.hashCode()

JavaSE知识点(1)_第307张图片

2.getClass()


JavaSE知识点(1)_第308张图片

3.finalize()和clone()


JavaSE知识点(1)_第309张图片
JavaSE知识点(1)_第310张图片

四十四、String类

1.概述

在这里插入图片描述

2.构造方法

在这里插入图片描述
JavaSE知识点(1)_第311张图片

3.字符串的特点

JavaSE知识点(1)_第312张图片

4.面试题

JavaSE知识点(1)_第313张图片
JavaSE知识点(1)_第314张图片
2.
JavaSE知识点(1)_第315张图片

5.字符串的四大功能

1.String类的判断功能

JavaSE知识点(1)_第316张图片
JavaSE知识点(1)_第317张图片

JavaSE知识点(1)_第318张图片

1.遍历字符串

JavaSE知识点(1)_第319张图片
JavaSE知识点(1)_第320张图片
在这里插入图片描述
JavaSE知识点(1)_第321张图片

2.String类的获取功能

JavaSE知识点(1)_第322张图片
JavaSE知识点(1)_第323张图片
JavaSE知识点(1)_第324张图片

3.String类转换功能

JavaSE知识点(1)_第325张图片
JavaSE知识点(1)_第326张图片
JavaSE知识点(1)_第327张图片

1.练习题

JavaSE知识点(1)_第328张图片
JavaSE知识点(1)_第329张图片

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

JavaSE知识点(1)_第330张图片
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200602151037868.png?

1.练习题

JavaSE知识点(1)_第331张图片
JavaSE知识点(1)_第332张图片这种方法浪费了大量的字符串空间,后面的StringBuffer方法能改进

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

JavaSE知识点(1)_第333张图片
JavaSE知识点(1)_第334张图片
JavaSE知识点(1)_第335张图片

四十五、StringBuffer

1.介绍和好处

在这里插入图片描述
JavaSE知识点(1)_第336张图片

2.与String的区别

StringBuffer就相当于水杯

String与StringBuffer的区别

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

3.构造方法

JavaSE知识点(1)_第337张图片

JavaSE知识点(1)_第338张图片

4.StringBuffer的添加功能

在这里插入图片描述
JavaSE知识点(1)_第339张图片

5.StringBuffer的删除功能

在这里插入图片描述
JavaSE知识点(1)_第340张图片

6.StringBufferd的替换功能

在这里插入图片描述
JavaSE知识点(1)_第341张图片

7.StringBuffer的反转功能

在这里插入图片描述
JavaSE知识点(1)_第342张图片

8.StringBuffer的截取功能

在这里插入图片描述
JavaSE知识点(1)_第343张图片

9.StringBuffer和String的相互转换

为了让String使用StringBuffer中的反转功能
JavaSE知识点(1)_第344张图片
JavaSE知识点(1)_第345张图片

1.字符串拼接

JavaSE知识点(1)_第346张图片
JavaSE知识点(1)_第347张图片

2.字符串的反转

JavaSE知识点(1)_第348张图片

JavaSE知识点(1)_第349张图片

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

JavaSE知识点(1)_第350张图片
JavaSE知识点(1)_第351张图片

10面试题

1.String、StringBuffer和StringBuilder的区别

在这里插入图片描述

2.StringBuffer和数组的区别

在这里插入图片描述

3.形式参数问题

JavaSE知识点(1)_第352张图片
JavaSE知识点(1)_第353张图片

四十六、数组高级以及Arrays

1.排序

1.冒泡排序

在这里插入图片描述
JavaSE知识点(1)_第354张图片
arr.length-1是为了防止下标越界

arr.length-1—x是为了减少比较次数
JavaSE知识点(1)_第355张图片
之后进行遍历即可

2.选择排序

在这里插入图片描述
JavaSE知识点(1)_第356张图片JavaSE知识点(1)_第357张图片

2.查找

1.二分查找

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

JavaSE知识点(1)_第358张图片
JavaSE知识点(1)_第359张图片
JavaSE知识点(1)_第360张图片

2.基本查找

JavaSE知识点(1)_第361张图片

3.Array工具类

在这里插入图片描述
JavaSE知识点(1)_第362张图片

4.Integer类

JavaSE知识点(1)_第363张图片
Integer是引用类型

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

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

1
JavaSE知识点(1)_第364张图片
JavaSE知识点(1)_第365张图片

1.String和int的相互转换

1.int———String
JavaSE知识点(1)_第366张图片

2.String——int
JavaSE知识点(1)_第367张图片

2.进制转换

JavaSE知识点(1)_第368张图片
JavaSE知识点(1)_第369张图片

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

3.JDK5的新特征

JavaSE知识点(1)_第370张图片
JavaSE知识点(1)_第371张图片

4.面试题

在这里插入图片描述JavaSE知识点(1)_第372张图片

四十七、Character类

1.介绍

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

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

2.构造方法

在这里插入图片描述

3.方法

在这里插入图片描述JavaSE知识点(1)_第373张图片

四十八、正则表达式

1.含义

就是符合一定规则字符串

2.规则

JavaSE知识点(1)_第374张图片
JavaSE知识点(1)_第375张图片

3.校验QQ号码

JavaSE知识点(1)_第376张图片
常规做法
JavaSE知识点(1)_第377张图片进阶做法JavaSE知识点(1)_第378张图片

4.判断功能

1.校验手机号码

JavaSE知识点(1)_第379张图片
JavaSE知识点(1)_第380张图片

2.校验邮箱

JavaSE知识点(1)_第381张图片
JavaSE知识点(1)_第382张图片

5.分割功能

1.网站年龄搜索范围

JavaSE知识点(1)_第383张图片
JavaSE知识点(1)_第384张图片

2.小练习

JavaSE知识点(1)_第385张图片

3.分割字符串

JavaSE知识点(1)_第386张图片

在这里插入图片描述

6.替换功能

在这里插入图片描述
JavaSE知识点(1)_第387张图片

7.获取功能

JavaSE知识点(1)_第388张图片
JavaSE知识点(1)_第389张图片

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

在这里插入图片描述
JavaSE知识点(1)_第390张图片JavaSE知识点(1)_第391张图片

四十九、Math类

1.介绍

用于数字运算的类

2.方法

JavaSE知识点(1)_第392张图片
JavaSE知识点(1)_第393张图片

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

JavaSE知识点(1)_第394张图片
JavaSE知识点(1)_第395张图片

五十、Random类:产生随机数

1.方法

JavaSE知识点(1)_第396张图片
JavaSE知识点(1)_第397张图片

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

1.垃圾回收器

在这里插入图片描述在这里插入图片描述
JavaSE知识点(1)_第398张图片

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

public static void exit(int status);
JavaSE知识点(1)_第399张图片

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

public static long currentTimeMillis()

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

JavaSE知识点(1)_第400张图片

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

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

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

JavaSE知识点(1)_第401张图片

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

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

1.构造方法

JavaSE知识点(1)_第402张图片
JavaSE知识点(1)_第403张图片

2.方法

在这里插入图片描述
JavaSE知识点(1)_第404张图片

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

1.介绍

在这里插入图片描述
JavaSE知识点(1)_第405张图片

2.方法

JavaSE知识点(1)_第406张图片
JavaSE知识点(1)_第407张图片

五十四、Date类和DateFormat类

1.Date类

1.构造方法

JavaSE知识点(1)_第408张图片

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

2.方法

JavaSE知识点(1)_第410张图片
JavaSE知识点(1)_第411张图片

2.DateFormat类

1.介绍

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

2.String和Date相互转换

1.图解

JavaSE知识点(1)_第412张图片

2.转换

JavaSE知识点(1)_第413张图片
JavaSE知识点(1)_第414张图片

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

JavaSE知识点(1)_第415张图片
JavaSE知识点(1)_第416张图片

五十五、Calendar类:日历类

1.介绍

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

2.得到日历

在这里插入图片描述
JavaSE知识点(1)_第417张图片

3.方法

在这里插入图片描述
JavaSE知识点(1)_第418张图片
JavaSE知识点(1)_第419张图片

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

JavaSE知识点(1)_第420张图片
JavaSE知识点(1)_第421张图片

五十六、对象数组

1.介绍

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

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

JavaSE知识点(1)_第422张图片
JavaSE知识点(1)_第423张图片
JavaSE知识点(1)_第424张图片

五十七、集合

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

JavaSE知识点(1)_第425张图片

2.集合的继承体系结构

在这里插入图片描述
JavaSE知识点(1)_第426张图片

3.Collection单列集合

1.概述

JavaSE知识点(1)_第427张图片
在这里插入图片描述

2.功能

JavaSE知识点(1)_第428张图片

1.基本功能

JavaSE知识点(1)_第429张图片

2.高级功能

JavaSE知识点(1)_第430张图片

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

在这里插入图片描述
JavaSE知识点(1)_第431张图片
1.练习,五个学生对象
JavaSE知识点(1)_第432张图片
JavaSE知识点(1)_第433张图片

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

在这里插入图片描述
JavaSE知识点(1)_第434张图片
JavaSE知识点(1)_第435张图片
最终代码
JavaSE知识点(1)_第436张图片

1.迭代器的问题探讨

在这里插入图片描述
JavaSE知识点(1)_第437张图片

2.迭代器的原理

JavaSE知识点(1)_第438张图片

4.List接口

1.介绍

List是Collection的子接口
JavaSE知识点(1)_第439张图片

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

JavaSE知识点(1)_第440张图片

2.特有功能

JavaSE知识点(1)_第441张图片
JavaSE知识点(1)_第442张图片
JavaSE知识点(1)_第443张图片
List的列表迭代器是继承了Iterator迭代器,他有更多的功能
JavaSE知识点(1)_第444张图片

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

3.List特有的遍历方法

JavaSE知识点(1)_第445张图片

4.并发修改异常

JavaSE知识点(1)_第446张图片
JavaSE知识点(1)_第447张图片

1.解决方案

方法一:迭代器迭代元素,迭代器修改元素
而Iterator迭代器没有添加功能,所以我们使用其子类接口ListIterator
JavaSE知识点(1)_第448张图片

方式二:集合遍历元素,集合修改元素
JavaSE知识点(1)_第449张图片

5.常见数据结构

栈和队列
JavaSE知识点(1)_第450张图片
数组和链表
JavaSE知识点(1)_第451张图片

6.List的子类特点

JavaSE知识点(1)_第452张图片
使用任何子类对象存储,遍历
JavaSE知识点(1)_第453张图片
JavaSE知识点(1)_第454张图片

7.子类Vector的特有功能

JavaSE知识点(1)_第455张图片
JavaSE知识点(1)_第456张图片
但是都被现在的功能替代了,只做了解就行

8.子类LinkedList的特有功能

JavaSE知识点(1)_第457张图片
JavaSE知识点(1)_第458张图片

9.Link集合练习

JavaSE知识点(1)_第459张图片

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

方法一、
在这里插入图片描述
JavaSE知识点(1)_第460张图片
方法二、
在这里插入图片描述
JavaSE知识点(1)_第461张图片

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

JavaSE知识点(1)_第462张图片
在Student类中要重写equals方法JavaSE知识点(1)_第463张图片

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

自己定义集合类
JavaSE知识点(1)_第464张图片
实现类
JavaSE知识点(1)_第465张图片

5.Set接口

1.HashSet子类

JavaSE知识点(1)_第466张图片
JavaSE知识点(1)_第467张图片
JavaSE知识点(1)_第468张图片

1.字符串遍历

JavaSE知识点(1)_第469张图片

2.自定义对象存储

JavaSE知识点(1)_第470张图片
没有保证元素的唯一性
JavaSE知识点(1)_第471张图片

代码改进,来保持唯一
JavaSE知识点(1)_第472张图片

要保证唯一性,只需要自动导入对象类中的hashCode()和equals()方法即可
JavaSE知识点(1)_第473张图片

3.LinkdeHashSet,HashSet的子类

特点:保证元素唯一,但是输出有序
JavaSE知识点(1)_第474张图片
JavaSE知识点(1)_第475张图片

2.TreeSet子类

JavaSE知识点(1)_第476张图片
在这里插入图片描述图解

JavaSE知识点(1)_第477张图片

1.无参构造,自然排序

TreeSet的无参构造,是自然排序,需要在自定义对象类中重写compareTo()
JavaSE知识点(1)_第478张图片
JavaSE知识点(1)_第479张图片

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

TreeSet的带参构造,是比较器排序,直接用匿名内部类
JavaSE知识点(1)_第480张图片

3.Set集合练习题

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

JavaSE知识点(1)_第481张图片
二、键盘录入学生信息按照总分排序后输出

JavaSE知识点(1)_第482张图片

5.Collection集合总结

1.如何选择

JavaSE知识点(1)_第483张图片
JavaSE知识点(1)_第484张图片

2.常用的方法

JavaSE知识点(1)_第485张图片

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

JavaSE知识点(1)_第486张图片

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

在这里插入图片描述

9.Map双列集合

1.概述

在这里插入图片描述
JavaSE知识点(1)_第487张图片

2.功能

JavaSE知识点(1)_第488张图片
JavaSE知识点(1)_第489张图片
JavaSE知识点(1)_第490张图片

3.Map集合遍历

方法一、根据键找值(推荐)
JavaSE知识点(1)_第491张图片
方法二、根据键值对对象找键和值
JavaSE知识点(1)_第492张图片
遍历图解

JavaSE知识点(1)_第493张图片

10.HashMap子类

哈希表的作用是用来保证键的唯一性
键值是String,String
唯一的,无序的
JavaSE知识点(1)_第494张图片
键值是Integer,String
JavaSE知识点(1)_第495张图片
键值是Integer,String
JavaSE知识点(1)_第496张图片
键值是String,Student
JavaSE知识点(1)_第497张图片
键值是Student,string

JavaSE知识点(1)_第498张图片
为了保证唯一性,需要在student类中自动导入hashCode()和equals()

2.LinkedHashMap,HashMap的子类

在这里插入图片描述

11.TreeMap子类

唯一,实现排序

键值是String,String
JavaSE知识点(1)_第499张图片
JavaSE知识点(1)_第500张图片

键值是Student,String

需要重写Comparator
JavaSE知识点(1)_第501张图片

12.Map集合练习题

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

JavaSE知识点(1)_第502张图片
JavaSE知识点(1)_第503张图片

2.HashMap集合的嵌套

先遍历大集合,再在里面遍历小集合,一层一层来,嵌套别的集合也是一样,比如ArrayList…
JavaSE知识点(1)_第504张图片

JavaSE知识点(1)_第505张图片
JavaSE知识点(1)_第506张图片

3.HashMap和Hashtable的区别

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

JavaSE知识点(1)_第507张图片

13.Map集合总结

1.如何选择

JavaSE知识点(1)_第508张图片
JavaSE知识点(1)_第509张图片

2.常用的的方法

JavaSE知识点(1)_第510张图片

14.Collections集合工具类

JavaSE知识点(1)_第511张图片
JavaSE知识点(1)_第512张图片
JavaSE知识点(1)_第513张图片

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

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

JavaSE知识点(1)_第514张图片

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

JavaSE知识点(1)_第515张图片
JavaSE知识点(1)_第516张图片
JavaSE知识点(1)_第517张图片

16.登录注册案例集合版

JavaSE知识点(1)_第518张图片
JavaSE知识点(1)_第519张图片

两个小问题:
A:多个对象共享一个成员变量,用静态
B:循环里如果有switch,并且在switch里面有break,那么结束的不是循环,而是switch语句
JavaSE知识点(1)_第520张图片
JavaSE知识点(1)_第521张图片
JavaSE知识点(1)_第522张图片
JavaSE知识点(1)_第523张图片
JavaSE知识点(1)_第524张图片

五十八、JDK5新特性

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

1.泛型

一般在集合中使用

1.概述

泛型是一种把明确类型工作推迟到创建对象或者调用方法的时候才去明确特殊的类型
JavaSE知识点(1)_第525张图片
JavaSE知识点(1)_第526张图片

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

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

JavaSE知识点(1)_第527张图片
JavaSE知识点(1)_第528张图片

3.泛型由来

JavaSE知识点(1)_第529张图片
在这里插入图片描述
JavaSE知识点(1)_第530张图片

4.泛型应用

1.泛型类泛型方法

JavaSE知识点(1)_第531张图片
JavaSE知识点(1)_第532张图片

2.泛型接口

JavaSE知识点(1)_第533张图片
JavaSE知识点(1)_第534张图片
JavaSE知识点(1)_第535张图片

3.泛型高级(通配符)

JavaSE知识点(1)_第536张图片

1.泛型通配符
JavaSE知识点(1)_第537张图片

2.? extends E

JavaSE知识点(1)_第538张图片
3.? super E
JavaSE知识点(1)_第539张图片

2.增强for

JavaSE知识点(1)_第540张图片
JavaSE知识点(1)_第541张图片

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

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

JavaSE知识点(1)_第542张图片
JavaSE知识点(1)_第543张图片

3.静态导入

JavaSE知识点(1)_第544张图片

4.可变参数

JavaSE知识点(1)_第545张图片
JavaSE知识点(1)_第546张图片
例子:Arrays工具类的asList()

JavaSE知识点(1)_第547张图片
在这里插入图片描述

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

5.练习题

1.集合嵌套

JavaSE知识点(1)_第548张图片
JavaSE知识点(1)_第549张图片

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

JavaSE知识点(1)_第550张图片
JavaSE知识点(1)_第551张图片

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

JavaSE知识点(1)_第552张图片
JavaSE知识点(1)_第553张图片

6.枚举

JavaSE知识点(1)_第554张图片
枚举类
JavaSE知识点(1)_第555张图片
测试类
JavaSE知识点(1)_第556张图片

2.注意事项

JavaSE知识点(1)_第557张图片
在switch中使用
JavaSE知识点(1)_第558张图片

五十九、IO流

1.异常

JavaSE知识点(1)_第559张图片
在这里插入图片描述异常处理
JavaSE知识点(1)_第560张图片

1.try…catch…finally

JavaSE知识点(1)_第561张图片
JavaSE知识点(1)_第562张图片
在这里插入图片描述
JavaSE知识点(1)_第563张图片
JavaSE知识点(1)_第564张图片
JavaSE知识点(1)_第565张图片
JavaSE知识点(1)_第566张图片

2.throws

Throws后面可以跟多个异常名用”,”隔开
JavaSE知识点(1)_第567张图片
JavaSE知识点(1)_第568张图片

3.面试题

1.throws和throw的区别

JavaSE知识点(1)_第569张图片
JavaSE知识点(1)_第570张图片

2.final,finally和finalize的区别

JavaSE知识点(1)_第571张图片

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

在这里插入图片描述
JavaSE知识点(1)_第572张图片

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

JavaSE知识点(1)_第573张图片

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

JavaSE知识点(1)_第574张图片
JavaSE知识点(1)_第575张图片

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

JavaSE知识点(1)_第576张图片

5.自定义异常

在这里插入图片描述
JavaSE知识点(1)_第577张图片
JavaSE知识点(1)_第578张图片
JavaSE知识点(1)_第579张图片

6.异常注意事项

在这里插入图片描述
JavaSE知识点(1)_第580张图片

7.try-with-resources

JDK7新特性
在这里插入图片描述

try括号中的流会自动关闭

JavaSE知识点(1)_第581张图片

2.FIle类

1.构造方法

JavaSE知识点(1)_第582张图片
JavaSE知识点(1)_第583张图片

2.创建功能

如果你创建文件或文件夹没写盘符,那么默认创建在当前项目路径下
在这里插入图片描述
JavaSE知识点(1)_第584张图片

3.删除功能

JavaSE知识点(1)_第585张图片
JavaSE知识点(1)_第586张图片

4.重命名功能

JavaSE知识点(1)_第587张图片
JavaSE知识点(1)_第588张图片

5.判断功能

JavaSE知识点(1)_第589张图片
JavaSE知识点(1)_第590张图片

6.获取功能

1.基本获取功能

JavaSE知识点(1)_第591张图片
JavaSE知识点(1)_第592张图片

2.高级获取功能

在这里插入图片描述

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

JavaSE知识点(1)_第593张图片

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

endWith(): 测试此字符串是否以指定的后缀结束
JavaSE知识点(1)_第594张图片

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

用的listFiles()方法
JavaSE知识点(1)_第595张图片

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

用的list()方法

JavaSE知识点(1)_第596张图片
JavaSE知识点(1)_第597张图片

8.批量修改文件名称

JavaSE知识点(1)_第598张图片
JavaSE知识点(1)_第599张图片

3.递归

1.递归的思想概述

JavaSE知识点(1)_第600张图片

2.用递归求5!

JavaSE知识点(1)_第601张图片
JavaSE知识点(1)_第602张图片

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

JavaSE知识点(1)_第603张图片
递归算法
JavaSE知识点(1)_第604张图片
数组算法
JavaSE知识点(1)_第605张图片
变量算法
JavaSE知识点(1)_第606张图片
JavaSE知识点(1)_第607张图片

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

在这里插入图片描述
JavaSE知识点(1)_第608张图片

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

JavaSE知识点(1)_第609张图片
JavaSE知识点(1)_第610张图片

4.IO流概述和分类

JavaSE知识点(1)_第611张图片
分类
JavaSE知识点(1)_第612张图片
JavaSE知识点(1)_第613张图片
JavaSE知识点(1)_第614张图片

1.字节输出流FileOutputStream

1.构造方法

在这里插入图片描述
JavaSE知识点(1)_第615张图片

2.往文件中写数据

在这里插入图片描述
JavaSE知识点(1)_第616张图片
write()方法
在这里插入图片描述
JavaSE知识点(1)_第617张图片

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

JavaSE知识点(1)_第618张图片
JavaSE知识点(1)_第619张图片

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

JavaSE知识点(1)_第620张图片

2.字节输入流FileInputStream

1.读出文件中内容

JavaSE知识点(1)_第621张图片
一次读取一个字节
读取中文相当于是两个字节的拼接
读取的结果是Acall码,之后强转为char类型还原
无法读取中文。因为中文是两个字节拼接,而它一次只能读取一个字节

JavaSE知识点(1)_第622张图片
一次读取一个字节数组
每次可以读取多个数据,提高了效率
能读取中文,因为一次能读取多个字节

在这里插入图片描述
JavaSE知识点(1)_第623张图片

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

JavaSE知识点(1)_第624张图片

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

JavaSE知识点(1)_第625张图片
一次一字节的方法
JavaSE知识点(1)_第626张图片
一次一数组的方法
JavaSE知识点(1)_第627张图片

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

JavaSE知识点(1)_第628张图片
JavaSE知识点(1)_第629张图片

5.字节缓冲区流

JavaSE知识点(1)_第630张图片
字节缓冲输出流
JavaSE知识点(1)_第631张图片
字节缓冲输入流
JavaSE知识点(1)_第632张图片

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

JavaSE知识点(1)_第633张图片

7.字符输出流OutputStreamWriter

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

JavaSE知识点(1)_第634张图片
编码表
JavaSE知识点(1)_第635张图片
JavaSE知识点(1)_第636张图片

2.编码解码问题

编码和解码用的编码表要一致
JavaSE知识点(1)_第637张图片
JavaSE知识点(1)_第638张图片

3.写数据

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

在这里插入图片描述
JavaSE知识点(1)_第639张图片

4.OutputStreamWriter的方法

JavaSE知识点(1)_第640张图片
JavaSE知识点(1)_第641张图片

8.字符输入流InputStreamReader

1.读数据

在这里插入图片描述
JavaSE知识点(1)_第642张图片

2.InputStreamReader的方法

在这里插入图片描述
JavaSE知识点(1)_第643张图片

9.复制文本文件

JavaSE知识点(1)_第644张图片
JavaSE知识点(1)_第645张图片

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

是字符流类的子类
JavaSE知识点(1)_第646张图片

1.复制文本文件

在这里插入图片描述
JavaSE知识点(1)_第647张图片

11.字符缓冲流

在这里插入图片描述

1.复制文本文件

在这里插入图片描述
JavaSE知识点(1)_第648张图片

2.字符缓冲流特殊方法

JavaSE知识点(1)_第649张图片

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

JavaSE知识点(1)_第650张图片

1.复制文本文件

在这里插入图片描述
JavaSE知识点(1)_第651张图片

12.IO流小结图解

JavaSE知识点(1)_第652张图片

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

JavaSE知识点(1)_第653张图片
JavaSE知识点(1)_第654张图片

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

JavaSE知识点(1)_第655张图片
JavaSE知识点(1)_第656张图片

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

JavaSE知识点(1)_第657张图片
JavaSE知识点(1)_第658张图片

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

JavaSE知识点(1)_第659张图片
JavaSE知识点(1)_第660张图片

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

JavaSE知识点(1)_第661张图片
JavaSE知识点(1)_第662张图片

18.复制多级文件夹

JavaSE知识点(1)_第663张图片
数据源:要复制的数据的位置

目的地:复制到哪里

JavaSE知识点(1)_第664张图片
JavaSE知识点(1)_第665张图片

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

在这里插入图片描述
JavaSE知识点(1)_第666张图片

为什么用字符缓冲区

JavaSE知识点(1)_第667张图片
测试类
JavaSE知识点(1)_第668张图片

20.LineNumberReader(获取行号)

BufferedReader的子类

在这里插入图片描述
JavaSE知识点(1)_第669张图片

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

JavaSE知识点(1)_第670张图片

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

在这里插入图片描述
flush()在一次写入数据很大的情况下才用

22.登录注册案例IO版

和集合版的只是改了UserDemoImpl中的方法
JavaSE知识点(1)_第671张图片
JavaSE知识点(1)_第672张图片
JavaSE知识点(1)_第673张图片
在这里插入图片描述

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

之前学的都是对字符串的读写
而这个可以对基本数据类型进行读写
JavaSE知识点(1)_第674张图片
JavaSE知识点(1)_第675张图片

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

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

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

JavaSE知识点(1)_第676张图片
JavaSE知识点(1)_第677张图片

25.打印流

只有写功能

底层也是一个高效流

JavaSE知识点(1)_第678张图片
PrintWriter字符打印流
JavaSE知识点(1)_第679张图片
PrintWriter自动刷新
JavaSE知识点(1)_第680张图片
JavaSE知识点(1)_第681张图片

1.复制文本文件

在这里插入图片描述
JavaSE知识点(1)_第682张图片

26.标准输入输出流

输出语句的本质就是IO流

JavaSE知识点(1)_第683张图片
JavaSE知识点(1)_第684张图片

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

JavaSE知识点(1)_第685张图片
第三种:通过字符缓冲流包装标准输入流实现,是第二种没出来之前使用的输入方法
JavaSE知识点(1)_第686张图片
JavaSE知识点(1)_第687张图片

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

JavaSE知识点(1)_第688张图片

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

JavaSE知识点(1)_第689张图片
对文件写入数据
JavaSE知识点(1)_第690张图片
对文件读取数据
JavaSE知识点(1)_第691张图片

28.合并流

JavaSE知识点(1)_第692张图片

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

JavaSE知识点(1)_第693张图片
JavaSE知识点(1)_第694张图片

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

JavaSE知识点(1)_第695张图片
JavaSE知识点(1)_第696张图片

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

在这里插入图片描述
自定义对象类
JavaSE知识点(1)_第697张图片
序列化流
JavaSE知识点(1)_第698张图片
反序列化流
JavaSE知识点(1)_第699张图片

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

JavaSE知识点(1)_第700张图片

2.transient关键字

在这里插入图片描述

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

在这里插入图片描述
JavaSE知识点(1)_第701张图片

1.Properties特殊功能

在这里插入图片描述
JavaSE知识点(1)_第702张图片

2.和IO流结合方法

JavaSE知识点(1)_第703张图片
Load()方法 文件数据—>集合
JavaSE知识点(1)_第704张图片
JavaSE知识点(1)_第705张图片

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

JavaSE知识点(1)_第706张图片
JavaSE知识点(1)_第707张图片

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

JavaSE知识点(1)_第708张图片
JavaSE知识点(1)_第709张图片

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

把次数存入文件中,就能判断
JavaSE知识点(1)_第710张图片
JavaSE知识点(1)_第711张图片

31.NIO(新IO)

JavaSE知识点(1)_第712张图片
JavaSE知识点(1)_第713张图片
JavaSE知识点(1)_第714张图片

六十、多线程

JavaSE知识点(1)_第715张图片

1.进程和多进程的意义

JavaSE知识点(1)_第716张图片

2.线程和多线程的意义

比如迅雷,迅雷本身启动是个进程,但是里面能同时进行多个下载,就是多线程
JavaSE知识点(1)_第717张图片
并行:是逻辑上同时发生,指在某一个时间段内同时运行多个程序
并发:是物理上同时发生,指在某一个时间点同时运行多个程序

3.Java程序的运行原理

JavaSE知识点(1)_第718张图片

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

JavaSE知识点(1)_第719张图片

1.多线程实现方式一

JavaSE知识点(1)_第720张图片
JavaSE知识点(1)_第721张图片
JavaSE知识点(1)_第722张图片

2.多线程实现方式二

JavaSE知识点(1)_第723张图片
JavaSE知识点(1)_第724张图片
JavaSE知识点(1)_第725张图片

3.多线程两种方式图解

JavaSE知识点(1)_第726张图片

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

JavaSE知识点(1)_第727张图片
JavaSE知识点(1)_第728张图片
JavaSE知识点(1)_第729张图片
JavaSE知识点(1)_第730张图片

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

JavaSE知识点(1)_第731张图片
JavaSE知识点(1)_第732张图片
JavaSE知识点(1)_第733张图片

5.线程控制

JavaSE知识点(1)_第734张图片

1.线程休眠

在这里插入图片描述
JavaSE知识点(1)_第735张图片

2.线程加入

tj1执行完了,下面的才能执行
在这里插入图片描述
JavaSE知识点(1)_第736张图片

3.线程礼让

在这里插入图片描述
JavaSE知识点(1)_第737张图片

4.线程守护

刘备是主线程,当刘备执行完毕后,关羽和张飞都不会再执行了
在这里插入图片描述
JavaSE知识点(1)_第738张图片

5.线程中断

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

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

在这里插入图片描述
JavaSE知识点(1)_第739张图片
JavaSE知识点(1)_第740张图片

6.线程的生命周期

JavaSE知识点(1)_第741张图片

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

在这里插入图片描述
JavaSE知识点(1)_第742张图片
JavaSE知识点(1)_第743张图片

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

JavaSE知识点(1)_第744张图片
JavaSE知识点(1)_第745张图片

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

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

JavaSE知识点(1)_第746张图片

1.重复值问题

JavaSE知识点(1)_第747张图片

2.负数问题

JavaSE知识点(1)_第748张图片

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

JavaSE知识点(1)_第749张图片

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

JavaSE知识点(1)_第750张图片
JavaSE知识点(1)_第751张图片

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

JavaSE知识点(1)_第752张图片

12.同步的特点

JavaSE知识点(1)_第753张图片

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

JavaSE知识点(1)_第754张图片

1.同步方法

JavaSE知识点(1)_第755张图片

14.线程安全类

JavaSE知识点(1)_第756张图片

15.JDK5之后的Lock锁

JavaSE知识点(1)_第757张图片
JavaSE知识点(1)_第758张图片

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

JavaSE知识点(1)_第759张图片
JavaSE知识点(1)_第760张图片

17.生产者消费者问题

JavaSE知识点(1)_第761张图片
JavaSE知识点(1)_第762张图片
JavaSE知识点(1)_第763张图片

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

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

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

JavaSE知识点(1)_第764张图片
锁对象
JavaSE知识点(1)_第765张图片
生产者JavaSE知识点(1)_第766张图片
消费者JavaSE知识点(1)_第767张图片
测试类JavaSE知识点(1)_第768张图片

18.线程的状态转换图

JavaSE知识点(1)_第769张图片

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

JavaSE知识点(1)_第770张图片
在Student中做同步
在这里插入图片描述
生产者
JavaSE知识点(1)_第771张图片
消费者
JavaSE知识点(1)_第772张图片
测试类
JavaSE知识点(1)_第773张图片

19.线程组

线程组能对一组线程进行操作
在这里插入图片描述
JavaSE知识点(1)_第774张图片

20.线程池

JavaSE知识点(1)_第775张图片
JavaSE知识点(1)_第776张图片
JavaSE知识点(1)_第777张图片

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

但是这种方法只能依赖于线程池
JavaSE知识点(1)_第778张图片
JavaSE知识点(1)_第779张图片

2.线程求和

JavaSE知识点(1)_第780张图片
JavaSE知识点(1)_第781张图片

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

JavaSE知识点(1)_第782张图片
JavaSE知识点(1)_第783张图片

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

答:走world
JavaSE知识点(1)_第784张图片

22.定时器

在这里插入图片描述
JavaSE知识点(1)_第785张图片

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

JavaSE知识点(1)_第786张图片

六十一、设计模式

JavaSE知识点(1)_第787张图片

1.简单工厂模式

JavaSE知识点(1)_第788张图片
通过工厂来造猫狗对象
JavaSE知识点(1)_第789张图片
测试类
JavaSE知识点(1)_第790张图片

2.工厂方法模式

JavaSE知识点(1)_第791张图片
工厂接口
JavaSE知识点(1)_第792张图片
猫类工厂(创造对象)
在这里插入图片描述
测试类
JavaSE知识点(1)_第793张图片

3.单例模式

JavaSE知识点(1)_第794张图片
JavaSE知识点(1)_第795张图片

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

JavaSE知识点(1)_第796张图片
JavaSE知识点(1)_第797张图片

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

JavaSE知识点(1)_第798张图片

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

JavaSE知识点(1)_第799张图片

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

能打开系统软件
JavaSE知识点(1)_第800张图片

4.模板设计模式

JavaSE知识点(1)_第801张图片
这是个计算执行时间的模板类
JavaSE知识点(1)_第802张图片
这里写需要测时间的程序

JavaSE知识点(1)_第803张图片

5.装饰设计模式

JavaSE知识点(1)_第804张图片
JavaSE知识点(1)_第805张图片
定义手机规则接口
在这里插入图片描述
定义具体手机
JavaSE知识点(1)_第806张图片
定义装饰功能抽象类
JavaSE知识点(1)_第807张图片
具体的听彩铃功能JavaSE知识点(1)_第808张图片
具体的听音乐功能
JavaSE知识点(1)_第809张图片
测试类
JavaSE知识点(1)_第810张图片

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

1.概述

JavaSE知识点(1)_第811张图片
JavaSE知识点(1)_第812张图片

2.Awt和swing包的概述

JavaSE知识点(1)_第813张图片

3.HelloWorld窗体

JavaSE知识点(1)_第814张图片方法改进
JavaSE知识点(1)_第815张图片

4.事件监听机制

JavaSE知识点(1)_第816张图片

1.窗体关闭案例

但是有很多功能我们不要
JavaSE知识点(1)_第817张图片

2.适配器设计模式

在这里插入图片描述接口方法类
JavaSE知识点(1)_第818张图片

适配器类,空实现接口

JavaSE知识点(1)_第819张图片
子类去重写空实现,要用那个功能就重写哪个
JavaSE知识点(1)_第820张图片

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

JavaSE知识点(1)_第821张图片

5.窗体布局

JavaSE知识点(1)_第822张图片

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

JavaSE知识点(1)_第823张图片

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

JavaSE知识点(1)_第824张图片
JavaSE知识点(1)_第825张图片

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

JavaSE知识点(1)_第826张图片
JavaSE知识点(1)_第827张图片

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

JavaSE知识点(1)_第828张图片
JavaSE知识点(1)_第829张图片

10.菜单组件

JavaSE知识点(1)_第830张图片

1.一级菜单

JavaSE知识点(1)_第831张图片
JavaSE知识点(1)_第832张图片

2.多级菜单

JavaSE知识点(1)_第833张图片
JavaSE知识点(1)_第834张图片
JavaSE知识点(1)_第835张图片

六十三、网络编程

1.网络编程概述

JavaSE知识点(1)_第836张图片
在这里插入图片描述

2.Scoket编程

JavaSE知识点(1)_第837张图片

2.InetAddress类获取IP地址的

在这里插入图片描述
JavaSE知识点(1)_第838张图片

3.UDP发送和接收数据

1.UDP协议发送数据 DatagramSocket类

JavaSE知识点(1)_第839张图片
JavaSE知识点(1)_第840张图片

2.UDP协议接收数据 DatagramSocket类

JavaSE知识点(1)_第841张图片
JavaSE知识点(1)_第842张图片

3.图解

JavaSE知识点(1)_第843张图片

4.键盘录入发送数据

发送端
JavaSE知识点(1)_第844张图片
接收端(一直接收)
JavaSE知识点(1)_第845张图片

5.多线程实现聊天室

执行类
JavaSE知识点(1)_第846张图片
发送端JavaSE知识点(1)_第847张图片
接收端
JavaSE知识点(1)_第848张图片
JavaSE知识点(1)_第849张图片

4.TCP发送和接收数据

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

往通道内写数据
JavaSE知识点(1)_第850张图片
JavaSE知识点(1)_第851张图片

2.接收数据服务端 ServerSocket类

从通道内读数据
JavaSE知识点(1)_第852张图片
JavaSE知识点(1)_第853张图片

3.图解

JavaSE知识点(1)_第854张图片

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

客户端
JavaSE知识点(1)_第855张图片
服务器
JavaSE知识点(1)_第856张图片

5.客户端键盘录入数据

客户端
JavaSE知识点(1)_第857张图片
服务器JavaSE知识点(1)_第858张图片

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

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

客户端JavaSE知识点(1)_第859张图片
服务器
JavaSE知识点(1)_第860张图片

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

客户端
JavaSE知识点(1)_第861张图片
服务器
JavaSE知识点(1)_第862张图片

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

客户端JavaSE知识点(1)_第863张图片
服务器
JavaSE知识点(1)_第864张图片

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

JavaSE知识点(1)_第865张图片
客户端添加
JavaSE知识点(1)_第866张图片
服务器添加
JavaSE知识点(1)_第867张图片

10.TCP上传图片并给反馈

客户端
JavaSE知识点(1)_第868张图片
服务器JavaSE知识点(1)_第869张图片

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

客户端
JavaSE知识点(1)_第870张图片
多线程服务器
JavaSE知识点(1)_第871张图片
执行类
JavaSE知识点(1)_第872张图片

六十四、反射

1.类加载及加载器

JavaSE知识点(1)_第873张图片
JavaSE知识点(1)_第874张图片

2.反射

1.概述

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

JavaSE知识点(1)_第875张图片

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

JavaSE知识点(1)_第876张图片
在这里插入图片描述
JavaSE知识点(1)_第877张图片

3.反射的使用

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

JavaSE知识点(1)_第878张图片

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

JavaSE知识点(1)_第879张图片

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

JavaSE知识点(1)_第880张图片

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

JavaSE知识点(1)_第881张图片
JavaSE知识点(1)_第882张图片

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

JavaSE知识点(1)_第883张图片

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

JavaSE知识点(1)_第884张图片

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

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

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

JavaSE知识点(1)_第885张图片

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

配置文件
在这里插入图片描述
JavaSE知识点(1)_第886张图片

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

越过泛型检查
在这里插入图片描述
JavaSE知识点(1)_第887张图片

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

工具类

JavaSE知识点(1)_第888张图片

测试类,能给私有的对象赋值
JavaSE知识点(1)_第889张图片

6.动态代理

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

完成的目标:
JavaSE知识点(1)_第890张图片

具体的代码编写

用户接口:
JavaSE知识点(1)_第891张图片
接口的基本实现
JavaSE知识点(1)_第892张图片
返回代理对象
JavaSE知识点(1)_第893张图片
测试类
JavaSE知识点(1)_第894张图片
JavaSE知识点(1)_第895张图片

你可能感兴趣的:(JavaSe)