1.

前置知识:

8bit(位)=1Byte(字节)

1024Byte(字节)=1KB

1024KB=1MB

1024MB=1GB

1024GB=1TB

java使用0代表正数,1代表负数

2.

类型

byte

short

int

long

字节数

1

2

4

8

位数

8

16

32

64

范围

-2^7 至 2^7-1

-2^15 至 2^15-1

-2^31 至 2^31-1

-2^63 至 2^63-1

bit又叫位,那int可以存32位,那为什么表示的范围是-2^31-2^31-1呢,因为还有一位用来存正负号。又因为使用0代表正数,1代表负数,所以

负数比正数多一位,比如

byte是1字节,8位,所以是

1111 1111 ~ 0111 1111 1111 1111代表-2^7 而因为0代表正数,所以只能到2^7-1

其他同理

3.

java运算符小坑

int a = 10;

int b = 20;

System.out.println("Hello"+a+b);

System.out.println(a+b+"Hello");

两种结果不一样

第一是Hello1020

第二是30Hello

4.

Java内存存储

栈:局部变量

堆:new出来的变量

方法区:存储对象

本地方法区:和系统相关

寄存器:cpu

5.

java的静态方法与静态变量

静态变量与静态方法是优于对象加载,被static修饰的话,被所有对象共享

可以使用类名调用

随着类加载而加载

静态方法:
可以调用静态的成员变量

可以调用静态的成员方法

不可以调用非静态成员变量

优点:

对对象的共享数据提供单独的空间存储,节省空间

没有必要每个对象都存一份

可以直接被类名调用,不用创建类

缺点:

局限性,只能在静态方法访问

6.

继承与抽象

继承:

只能单一继承,不能多继承

可以多层继承

继承中成员变量的特点:

子类只能获取父类非私有成员变量

子父类成员变量不一样的直接获取父类的成员变量

子父类是一样的话就近原则,谁近用谁

super可以直接获取父类的成员变量和成员方法

继承中构造方法的执行顺序:

在有子父类继承关系的类中,创建子类的对象,调用子类的构造方法

如果子类构造方法的第一行代码没有调用父类的构造方法,则会默认调用父类的无参构造

肯定会先执行父类的构造,因为要给父类的成员变量进行初始化,以防后面要用到

7.

class文件由类加载器加载之后,在JVM中形成一个描述class结构的元信息对象

通过这个信息对象可以获知class的结构信息,如构造方法,属性,方法

虚拟机把描述类的数据从class文件中加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的JAVA类型,这就是虚拟机的类加载机制

类加载器就是寻找类的字节码文件,并构造出类在JVM内部表示的对象组件。在java中,类加载器把一个类加载到JVM中,要经过以下步骤:

1.加载:查找和导入Class文件

2.链接:把类的二进制数据合并到JRE中:

  校验:检查载入class文件数据的准确性

  准备:给类的静态变量分配空间内存

  解析:给符号引用转成直接引用

3.初始化:对类的静态变量,静态代码块执行初始化操作