零基础视频,面向对象开始跳着进度条看,有什么感兴趣的搜索+敲代码实现即可
学习原因:未来掌握Java反序列化
1 | 课程目录:每天及其内容 |
Java配置
JVM+核心类库=JRE运行环境+JAVA(JAVAC)=JDK(java开发工具包)
代码文件 .java
编译:javac;运行:java
project moudle package class
包名 com.domain.project
src main
AI插件
字体外观设置等
双击out下反编译
方法重载 同名
表达式自动转换
scanner获取输入要new对象
一个包下的Java文件,class能直接写
构造器
Java面向对象
this
实体类
实例变量每个对象持有一份,静态变量一个,会出现覆盖
如果方法不需要直接访问对象的数据,可以使用静态方法【工具类的构造器可以私有】
确实,懂了之后感觉还是很有美感的
引用类型,装电影对象
看了这一集,才明白为什么之前大一作业java学生管理系统,被说没有用到面向对象了
不过参数的名字具体怎么命名和赋值不太了解
继承 缺省:当前类,同包其他类
override注解:方法重写
tostring
this调用本类中其他构造器,和super有哪些注意的
多态下类型转换
final:变量有且只能赋值一次
final地址指向的内容可以改变
常量会被“宏替换”,变成字面量
单例类:确保某个类只能创建一个对象
在获取对象时,已经创建好
1 | public class A{ |
延迟加载对象:getInstance时判断是否为null,然后new
枚举类enum:
第一行:每个常量记住了枚举类的对象
Xjad
javap反编译命令
抽象类
abstract:修饰类或方法,不能有方法体;抽象类能抽象方法,不能创建对象
抽象类就是为了被继承;继承后必须重写所有的抽象方法
模版方法
接口
一个类可以实现多个接口
修饰符 class 实现类类名 implements 接口1,接口2
lombok Lombok @Data 注解:快速生成类常用方法 - 犬小哈教程
加了@Data注解的类,编译后会自动给我们加上下列方法:
- 所有属性的get和set方法
jdk8后三种方式:默认方法、私有方法、静态方法
确实,这里听着像是打补丁,以后需要再说
智能家居系统看老师敲的很顺
代码块
静态代码块:static{} 类加载时自动执行,只执行一次,初始化赋值
实例代码块:单独{} new对象时执行
内部类
类定义在另一个类的内部
外部类对象.内部类对象 对象名=new 外部类名称().new 内部类名称
学习的目的是为了以后能看懂别人的代码
匿名内部类
特殊的局部内部类;不需要为类声明名字,默认有隐藏的名字
new 类或接口(){ }
本质是子类,立即创建出子类对象
函数式编程
Lambda只能简化函数式接口的匿名内部类
听到Lambda,可能不专心,看不懂操作了
逐渐简化,但是对于0基础,可读性变差
方法引用
类名::静态方法
只是调用一个静态方法,->箭头前后参数形式一致,可使用
equal 相等比较,直接双等号比较地址
new string 构造器
很多讲的是代码规范的问题,但是学习能帮助我未来阅读源码
高级
异常
运行时和编译
自定义异常
泛型
定义类、接口、方法时,同时声明了一个活多个类型变量,如
作用:提供在编译阶段约束能操作的数据类型,并自行检查
高级技术
Junit单元测试
main测试,无法调用其他方法,需要一个个测试,无法输出测试报告
断言测试:断言结果是否与预期结果一致
反射
认识获取类
大层框架的底层原理
反射:加载类,并允许以编程的方式解剖类的各种成分,成员变量、方法、构造器
获取对象:
Class c1=类名.class
调用Class提供方法:public static Class forName(String package)
Object提供的方法:public Class getClass; Class c3=对象.getClass()
获取类的成分并操作
获取全部、某个构造器(是否是只能拿到public的);全部返回数组;适合做Java的框架
看到invoke才意识到和PHP的反序列化的POP链中很相似
你不要觉得这些api很无聊,写一遍加深印象,以后看到源码才能不发怵
作用:得到一个类的全部成分然后操作;破坏封装性;绕过泛型的约束
感觉java的反射确实算是反序列化的基础
最后举了例子,Java看多了,感觉也挺优雅的