JAVA基础
-
- 第4/5/6章 面向对象
-
- Day 8 (P198-P218)
-
- 1、形参与实参
- 2、值传递机制
- 3、属性(成员变量)vs 局部变量
- Day 9 (P219-P241)
-
- 1、封装与隐藏
- 2、权限修饰符
- 3、构造器
- 4、UML类图
- 5、this关键字
- 6、package关键字的使用
- 7、MVC设计模式
- 8、import关键字
- Day 10 (P242-P264)
-
- 1、项目2
- 2、继承性
- Day 11 (P265-P284)
-
- 1、方法重写(overwrite)
- 2、super关键字
- 3、多态性
- Day 12 (P285-P311)
-
- 1、向下转型
- 2、instanceof关键字
- 3、Object类
- 4、==
- 5、equals()
- 6、toString()
- 7、单元测试
- 8、包装类的使用
- Day 13 (P312-P338)
-
- 1、static关键字
- 2、内存结构图
- 3、单例设计模式
- 4、理解main方法
- 5、代码块
- 6、final关键字
- Day 14(P339-P366)
-
- 1、abstract
-
- abstract介绍
- 抽象的应用
- 抽象类的匿名子类对象
- 2、接口
-
- 接口介绍
- 接口应用
- 接口笔试题
- java8中接口新特性
- 抽象类和接口的异同
- 3、内部类
- 4、关键字总结
- 第7章 异常处理
-
- Day 15(P367-P385)
-
- 1、异常概述与异常体系结构
- 2、常见异常
- 3、try-catch-finally
-
- 异常的处理:抓抛模型
- try-catch-finally
- 4、throws
-
- 方法重写的规则
- 开发中异常处理的选择
- 5、手动抛出异常:throw
- 6、用户自定义异常类
- 第8章 多线程
-
- Day 15 (P406-P427)
-
- 1、程序、进程、线程
- 2、线程的创建和使用
-
- 方式一:继承于Thread类
- 方式二:实现Runnable接口
- 两种方式的对比
- Day 16(P428-P447)
-
- 3、线程的生命周期
- 4、线程的同步
-
- 方式一:同步代码块
- 方式二:同步方法
- 同步方法总结
- 线程安全的单例模式:懒汉式
- 死锁
- Lock(锁)
- 5、线程的通信
-
- 经典例题:生产者/消费者问题
- 6、JDK5.0新增线程创建方式
-
- 实现Callable接口
- 使用线程池
- 7、总结
- 第9章 JAVA常用类
-
- 1、字符串相关的类尚硅谷-》java基础
-
- String类及常用方法
- StringBuffer/StringBuilder
- 2、JDK8之前的日期时间API
-
- System静态方法
- Date类
- Calendar类
- SimpleDateFormat类
- 3、JDK8中新日期时间API
-
- LocalDate/LocalTime/LocalDateTime
- Instant
- DateTimeFormatter
- 其他类
- 4、JAVA比较器
-
- Comparable接口
- Comparator接口
- 5、System类
- 6、Math类
- 7、BigInteger与BigDecimal
- 第10章 枚举类&注解
-
- 枚举类
- 1、如何自定义枚举类
- 2、如何使用关键字enum定义枚举类
- 3、Enum类的主要方法
- 4、实现接口的枚举类
- 注解
- 第11章 JAVA集合
-
- 1、JAVA集合框架概述
- 2、Collection接口方法
- 3、Iterator迭代器接口
- 4、Collection子接口一:List
-
- ArrayList源码分析
- LinkedList源码分析
- 5、Collection子接口二:Set
-
- HashSet
- LinkedHashSet
- TreeSet
- set习题
- 6、Map接口
-
- Map实现类结构
- Map结构
- HashMap JDK7
-
- 底层实现
- 源码分析
- HashMap JDK8
-
- 底层实现
- 源码分析
- LinkedHashMap
- Map中定义的方法
- TreeMap
- Properties
- 7、Collections工具类
- 第12章 泛型
-
- 1、为什么要有泛型
- 2、在集合中使用泛型
- 3、自定义泛型结构
- 4、泛型在继承上的体现
- 5、通配符的使用
- 第13章IO流
-
- 1、File类的使用
- 2、IO流原理及流的分类
- 3、节点流(或文件流)
-
- 读入
- 写出
- 4、缓冲流
- 5、转换流
- 6、标准输入、输出流
- 7、打印流
- 8、数据流
- 9、对象流
-
- 序列化和反序列化
- Serializable接口
- 10、随机存取文件流
- 11、NIO.2中Path、Paths、Files类的使用
- 第14章 网络编程
-
-
- 1、网络通信要素概述
- 2、通信要素1:IP和端口号
- 3、通信要素2:网络协议
- 4、TCP网络编程
- 5、UDP网络编程
- 6、URL编程
-
- 第15章 JAVA反射机制
-
- 1、Java反射机制概述
- 2、理解Class类并获取Class实例
- 3、类的加载与ClassLoader的理解
- 4、创建运行时类的对象
- 5、获取运行时类的完整结构
- 6、调用运行时类的指定结构
- 7、反射的应用:动态代理
- 第16章JAVA8 的其他新特性
-
- 之前提到的JAVA8新特性:
-
- java8中接口新特性
- JDK8中新日期时间API
- JDK8中注解的新特性
- HashMap JDK8
- 其他新特性
-
- 1、Lambda表达式
- 2、函数式(Functional)接口
- 3、方法引用与构造器引用
- 4、强大的Stream API
- 5、Optional类
- 第17章 JAVA9 & JAVA10 & JAVA11新特性
第1章 JAVA语言概述
第2章 基本语法
第3章 数组
第4/5/6章 面向对象
- 类和类的成员:属性、方法、构造器、代码块和内部类
- 封装、继承和多态
- 关键字及其使用
Day 8 (P198-P218)
1、形参与实参
形参:方法定义时,声明的小括号内的参数
实参:方法调用时,实际传递给形参的数据
2、值传递机制
方法的形参传递机制:值传递
如果参数是基本数据类型,此时实参赋给形参的是实参真实存储的数据值
如果参数是引用数据类型,此时实参赋给形参的是实参存储数据的地址值
3、属性(成员变量)vs 局部变量
相同点:
1、定义变量的格式:数据类型 变量名=变量值
2、先声明后使用
3、变量都有其作用域
不同点:
1、在类中声明的位置不同,属性直接定义在类的{}内,局部变量声明在方法内,方法形参,代码块内,构造器 形参、构造器内部的变量
2、权限修饰符:
属性:可以在声明属性时,指明其权限,使用权限修饰符
常用的权限修饰符:private、public、缺省、protected
局部变量:不可以使用权限修饰符
3、默认初始化值
属性:类的属性,根据其类型都有默认初始化值
整型(byte、short、int、long):0
浮点型(float、double):0.0
字符型(char):0(或’’)
布尔型(boolean):false
引用数据类型(字符串、类、数组、接口):null
局部变量:没有默认初始化,在调用局部变量之前一定要显式化赋值
特别的,形参在调用时赋值即可
4、在内存中加载的位置
属性:加载到堆空间中
局部变量:加载到栈空间
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r1RExbh9-76)(C:Users86187DesktopMK笔记JAVA基础变量.png)]
Day 9 (P219-P241)
1、封装与隐藏
高内聚:类的内部数据操作细节自己完成,不允许外部干涉
低耦合:仅对外暴露少量的方法用于使用
2、权限修饰符
1、四种权限(从小到大):private,缺省(default),protected,public
修饰符
类内部
同一个包
不同包的子类
同一个工程
private
Yes
缺省
Yes
Yes
protected
Yes
Yes
Yes
public
Yes
Yes
Yes
Yes
2、4种权限可以用来修饰类及内部类的内部结构:属性、方法、构造器、内部类
修饰类只能用缺省、public
总结封装性:JAVA提供了4种权限修饰符来修饰类及类的内部结构,体现类及类的内部结构在被调用时的可见性的大小
3、构造器
1、构造器的作用:创建对象、初始化对象的属性
如果没有显式的定义类的构造器,则系统默认提供一个空参的构造器
一个类中定义的多个构造器彼此构成重载
2、属性赋值的选后顺序:①默认初始化 ②显式初始化 ③构造器中赋值 ④通过对象.方法或对象.属性赋值
3、只要造对象,就一定会使用构造器,这句话任何时候都是对的
4、UML类图
5、this关键字
1、方法的形参和类的属性同名时,必须显式使用this.变量的方式,表明此变量是属性,而非形参
2、this可以调用属性、方法和构造器
3、可以显式使用"this(形参列表)"方式,调用本类中指定的其他构造器
"this(形参列表)"必须声明在当前构造器的首行
构造器中不能使用 "this(形参列表)"的方式调用自己
构造器内部最多只能声明一个"this(形参列表)"调用其他构造器
6、package关键字的使用
1、使用package声明类或者接口所属的包,声明在源文件的首行
2、每“.”一次,就代表一层文件目录
3、同一个包下,不能命名同名的接口和类,不同包下可以声明同名的接口和类
7、MVC设计模式
将程序分成三个层次:视图模型层(view)、控制器层(controller)与数据模型层(model)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bcVUFlqt-81)(C:Users86187AppDataRoamingTypora ypora-user-imagesimage-.png)]
8、import关键字
1、在源文件中使用import导入指定包下的类和接口
2、如果使用的类或者接口时java.lang包下定义的,则可以省略import结构
如果使用的类或者接口是本包下定义的,则可以省略import结构
3、如果在源文件中使用了不同包下的同名类,则必须至少有一个类需要以全类名的方式显示
4、使用“xxx.*”的方式可以调用包中的所有结构,但如果是子包,仍需要显式调用(我的理解就是没有子包,都是并列的包)
5、import static:导入类或接口中的静态结构(意思就是导入属性或者方法),单import是导入类或接口
Day 10 (P242-P264)
1、项目2
1、动态数组,大小随时改变的写法
2、删除数组中的元素,后面的元素要覆盖前面的,不能直接指空
2、继承性
1、继承性的优点:
①减少代码冗余,提高代码复用性
②便于功能的扩展
2、继承的格式:classA extends classB{}
A:子类、派生类、subclass
B:父类、基类、超类、superclass
体现:一旦子类继承父类之后,子类就获取了父类中声明的属性和方法。
特别的,父类中声明为private的属性或者方法,仍然认为获取了父类中私有的结构,只是因为封装性的影响, 子类不能直接调用。子类继承父类之后,可以声明自己持有的属性或方法实现功能的扩展。
3、JAVA中关于继承的规定
①支持单继承和多层继承,不允许多重继承
一个子类只能有一个父类,一个父类可以派生多个子类
②直接父类和间接父类
③所有类都直接或间接继承于Object类
Day 11 (P265-P284)
1、方法重写(overwrite)
1、重写:子类继承父类以后,可以对父类中同名参数的方法进行覆盖操作
2、重写之后,当创建子类对象以后,通过子类对象调用子父类中的同名同参数的方法时,实际执行的是子类重写父类的方法
3、重写的规定:
方法的声明:权限修饰符 返回值类型 方法名(形参列表)throws 异常的类型{ 方法体 }
子类中叫重写的方法,父类中叫被重写的方法
①子类重写的方法的方法名和形参列表与父类被重写的方法名和形参列表相同
②子类重写的方法的权限修饰符不小于父类被重写方法的权限修饰符
特殊情况:子类不能重写父类中声明为private权限的方法
③返回值类型:
父类被重写的方法的返回值是void:子类重写的方法只能是void
父类被重写的方法的返回值是引用类型:子类重写的方法只能和父类相同或者为其子类
父类被重写的方法的返回值是基本类型:子类重写的方法只能是相同的基本类型
④子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型
⑤必须是非static
2、super关键字
1、super可以用来调用属性、方法和构造器。
2、当子类和父类中定义了同名的属性时,要想在子类中调用父类中声明的属性则必须显式使用super.属性。
当子类重写了父类中的方法之后,要在子类中调用父类中被重写的方法则必须显式使用super.属性。
3、super调用构造器
可以在子类中使用 super(形参列表)的方式调用父类中声明的指定的构造器,必须声明在首行
在类的构造器中 this( 形参列表 )和super(形参列表)只能二选一,在构造器没有显式声明时,默认调用父类中的空参构造器
3、多态性
1、父类的引用指向子类的对象——对象的多态性
2、多态的使用:虚拟方法的调用
有了对象的多态性之后,在编译期只能调用父类中声明的方法,编译期实际执行的是子类重写父类的方法
编译看左边,运行看右边
3、多态性使用前提:①有类的继承关系 ②要有方法的重写
4、对象的多态性只适用于方法不适用于属性(还是父类的属性)
5、多态性是一个运行时行为,要到运行的时候才知道具体是哪一个,而重载是编译时行为,编译的时候就知道具体是哪一个
Day 12 (P285-P311)
1、向下转型
1、有了对象的多态性之后,内存中实际上是加载了子类特有的属性和方法的,但是由于变量声明为父类类型,导致编译时只能使用父类中声明的属性和方法。使用强制类型转换符之后就可以使用子类的属性和方法,即向下转型。
2、自动类型提升和强制类型转化(有可能会转不成功
3、P289:向下转型的几个问题
(那几个练习还蛮重要的感觉)
2、instanceof关键字
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/394.html