Advertisement

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.三者的关系:
在这里插入图片描述
在这里插入图片描述

2. 环境变量

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

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

3.常用的DOS命令

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

4.Java的特性

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

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

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

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

在这里插入图片描述

7.Javac和java命令的使用

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

二、关键字

1. 内容:

复制代码
    被java语言赋予特定含义的单词

2. 特点:

复制代码
     全部小写

3. 注意事项

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

三、标识符

1.内容:

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

2.组成规则:

复制代码
英文字母大小写
    2.数字
    3.$和_

3.注意事项

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

4.常见的命名规则

复制代码
包  全部小写
    1.单级包:小写
    				举例:back 
    2.多级包:小写,并用.隔开
    				举例:cn.itcast``
    2.类和接口
    	1.一个单词:首字母大写
    		举例:Student
    	2.多个单词
    		举例:StudentName
    	3.方法名或变量名
    	1.一个单词:首字母小写
    		举例:name
    	2.多个单词:从第二个单词开始,每个单词首字母大写
    		举例:studentAge
    	4.常量
全部大写
一个单词:大写
    			举例PI
多个单词:大写,并用_隔开
    			举例:STUDENT_MAX_AGE

四、注释

1.内容

复制代码
    就是对程序进行解释说明的文字

2.分类

复制代码
单行注释://
     2.多行注释:/**/
     3.文档注释:/**   */

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

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

4.注释的作用

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

五、常量

1.内容

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

2.分类

复制代码
字面值常量
    2.自定义常量

3.字面值常量

复制代码
字符串常量
    2.整数常量
    3.小数常量
    4.字符常量
    5.布尔常量
    6.空常量:null

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

复制代码
二进制:由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.变量的格式

复制代码
数据类型 变量名 = 初始化值;
     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.注意事项

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

九、数据类型转换

总规则

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

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

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

1. boolean类型不参与转换

2. 默认转换

复制代码
 从大到小
    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

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

3.强制转换

复制代码
从大到下
    2.可能会有精度损失,一般不建议这样使用
    3.格式	
 目标数据类型 变量名 =  (目标数据类型)(被转换的数据);
    4.思考题和面试题
      1. 下面两种方式有区别吗?
          float  f1 = 12.345F;
          float  f1 = (float)12.345; ——可能会有精度缺失,浮点默认为double
       2. 面试题
          一、
在这里插入图片描述
复制代码
     答:    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;  //-128
    	byte  b3 = (byte)129;  //-127
    	byte  b4 = (byte)130;  //-126
    	
       byte的范围:-128~127
    	128:10000000
    	-128:10000000(这里的1即是符号位,也是数值位)
    
ASCII码  —— 字符和整数计算时,字符转为ASCII码数字
       '0'——48
        'a'——97
        'A'——65
        字符串和其他数据做+,结果是字符串类型。这里的+不是加法运算,而是字符串连接符
复制代码
    System.out.println("hello"+'a'+1) //helloa1
    System.out.println('a'+1+"hello") //98hello

十、运算符

在这里插入图片描述

1.算术运算符

复制代码
 +,-,*,/,%,++,--
    2. +的用法
    	1.加法
    	2. 正号
    	3. 字符串连接符
    3./和%的区别
    	1.数据做除法操作的时候,/取商,%取余
    	2. /取商时候,如果一个数有小数,那么结果就是小数
    4.++和--的用法
 单独使用
    			1.放在操作数据的前面和后面效果一样:a++或者++a效果一样
 参与操作使用
    			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.赋值运算符

复制代码
=,+=,-=,*=,/=,%=等
    	2.扩展的赋值运算符的特点
隐含了自动强制转换
面试题:
在这里插入图片描述
复制代码
    第一个有问题,因为s+1的值是int类型,而是short会出现精度丢失
    第二个没问题,因为扩展的赋值运算符其实隐含了一个强制类型的转换
         s+=1;
         不是等于s=s+1;而是等于s=(s的数据类型)(s+1)

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

3.比较运算符

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

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

4.位运算符

在这里插入图片描述
计算机底层都是位运算,要做位运算,首先要把数据转换为二进制
2.在这里插入图片描述

3&4在这里插入图片描述
在这里插入图片描述

^的特殊用法:一个数据针对另一个数据位异或两次,该数不变
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:表达式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的使用

复制代码
 导包(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()再检测的空格的时候就结束输出了。

十二、流程控制语句

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

十三、if语句

1.在这里插入图片描述

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

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

复制代码
 所有三元运算符能实现的,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.执行到末尾就结束

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

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

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

十五、循环语句

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:继续

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

3.return语句

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

十七、方法

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)()]
在这里插入图片描述
在这里插入图片描述

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类替换功能、去除空格功能、按字典顺序比较功能

在这里插入图片描述
![在这里插入图片描述](

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.动态代理

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

完成的目标:
在这里插入图片描述

具体的代码编写

用户接口:
在这里插入图片描述
接口的基本实现
在这里插入图片描述
返回代理对象
在这里插入图片描述
测试类
在这里插入图片描述
在这里插入图片描述

全部评论 (0)

还没有任何评论哟~