Java SE

基本数据类型

整形:

浮点类型:

字符类型:

自动类型转换

强转丢失精度

运算符:

算术运算符:

逻辑运算符:

进制:

二、八、十六转十进制:

十进制转二、八、十六:

二、八、十六互转

二进制转换成八进制

规则:从低位开始,将二进制数每三位一组,转成对应的八进制数即可。 案例:请将 ob11010101 转成八进制
ob11(3)010(2)101(5) => 0325

二进制转换成十六进制

规则:从低位开始,将二进制数每四位一组,转成对应的十六进制数即可。 案例:请将 ob11010101 转成十六进制
ob1101(D)0101(5) = 0xD5
课堂练习:请将

0b11100101 转成 八进制 0b1110010110 转成 十六进制

八进制转换成二进制

规则:将八进制数每 1 位,转成对应的一个 3 位的二进制数即可。 案例:请将 0237 转成二进制
02(010)3(011)7(111) = 0b10011111

十六进制转换成二进制

规则:将十六进制数每 1 位,转成对应的 4 位的一个二进制数即可。 案例:请将 0x23B 转成二进制
0x2(0010)3(0011)B(1011) = 0b001000111011

二进制位运算:

面向对象:

  1. 类是抽象的,概念的,代表一类事物;

  2. 对象是具体的,代表一个具体事物;

  3. 类是对象的模版,对象是类的实体

简单类new对象过程:

方法区加载类信息,只加载一次 --> 在堆空间中开辟对象空间,属性先赋默认值,在构造器初始化值 --> 最后将该对象的地址传给堆中的变量引用

方法调用机制原理:

调用方法开辟新栈,先进后出,后进先出。

传参机制

Java中只有值传递,理解:对于基本数据类型,是将该值进行拷贝,然后传给目标方法,方法在栈中本身是一块独立空间,拷贝的值也不会影响原始参数;对于引用类型来说,理解为变量存放的是对象的地址,若要传递该值,其实也是将该变量进行拷贝再传递给目标方法,但拷贝的是一个对象的地址,在其他方法中操作该对象会影响到原对象;

递归:

作用域:

构造器:

访问修饰符:

访问级别

修饰符

同类

同包

子类

不同包

公开

public

✔️

✔️

✔️

✔️

受保护

protected

✔️

✔️

✔️

默认

/

✔️

✔️

私有

private

✔️

三大特征:

封装:将抽象的数据和对数据的操作封装在一起,对外不显示细节,被保护在内部,程序的其他部分只有通过被授权的操作,才能对数据进行操作。

继承:

  1. 子类继承了所有的属性和方法,非私有的属性和方法可以在子类直接访问, 但是私有属性和方法不能在子类直接访 问,要通过父类提供公共的方法去访问

  2. 子类必须调用父类的构造器, 完成父类的初始化

  3. 当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无

    参构造器,则必须在子类的构造器中用 super 去指定使用父类的哪个构造器完成对父类的初始化工作,否则,编译不会通过

  4. 如果希望指定去调用父类的某个构造器,则显式的调用一下 : super(参数列表)

  5. super 在使用时,必须放在构造器第一行(super 只能在构造器中使用)

  6. super() 和 this() 都只能放在构造器第一行,因此这两个方法不能共存在一个构造器

  7. java 所有类都是 Object 类的子类, Object 是所有类的基类.

  8. 父类构造器的调用不限于直接父类!将一直往上追溯直到 Object 类(顶级父类)

  9. 子类最多只能继承一个父类(指直接继承),即 java 中是单继承机制。

  10. 不能滥用继承,子类和父类之间必须满足 is-a 的逻辑关系多态:

先再方法区中加载父类的类信息,再加载子类类信息

加载父类对象属性:先赋默认值在构造器初始值

加载子类对象属性:先赋默认值在构造器初始值

super和this的比较:

区别点

this

super

访问属性

访问本类中的属性,如果本类没有此属性则从父类中继续查找

从父类考试查找属性

调用方法

访问本类中的方法,如果本类没有此方法则从父类继续查找

从父类开始查找方法

调用构造器

调用本类构造器,必须放在构造器的首行

调用父类构造器,必须放在子类构造器的首行

特殊

表示当前对象

子类中访问父类对象

重载和重写:

名称

发生范围

方法名

形参列表

返回类型

修饰符

重载

本类

必须一样

类型,个数,顺序至少一个不同

无要求

无要求

重写

父子类

必须一样

相同

子类重写的方法返回类型和父类型一致,或者是其子类

子类方法不能缩小父类的访问范围

多态:简单理解为不同的表现状态,例如重载、重写,一种表示可以实现多形式,多态是建立在封装和集成基础之上的。

  • 多态的前提:两个类存在继承关系

  • 多态的向上转型

  • 多态的向下转型:

动态绑定机制

Object类理解:

equals方法

==理解:比较的是变量中存放的值,基本类型存放值,引用存放地址,所以↓

Object的equals方法只判断是否为同一个对象地址,一般需要重写:

hashCode方法:

返回该对象的哈希码值,为了提高哈希表的性能;由Object类定义的hashCode方法确实会针对不同的对象返回不同的整数,一般是通过将该对象的内部地址转换成一个整数来实现的

toString方法:

Object类中的输出为全类型@哈希值的十六进制,输出一个对象时会自动调用该方法,一般重写。

finalize方法:

  • 当对象没有被引用,要被回收时,系统自动调用该对象的finalize方法,子类可以重写该方法

  • 垃圾回收机制的调用,是有系统来决定的,也可以System.gc()主动触发,但不一定成功

未完待续...