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.初始化:对类的静态变量,静态代码块执行初始化操作