1.java内存
- 寄存器内存:是一块较小的内存空间;线程私有;
- 本地方法区:也叫Native Method,是java调用非java代码的接口,例如去调用底层c语言的库;
- 栈:每个线程包含一个栈区,例如main最先执行最后结束那样,先进后出原则,存储局部变量;
- 方法区:线程共享,用于存储已经被虚拟机加载的类信息,常量,静态常量等,
- 堆:heap,一个JVM只有一个;堆内存大小:是可以调节的;被所有线程共享的一块内存区域,在虚拟机启动时创建,唯一目的就是存放对象实例, java堆是垃圾收集器管理的主要区域,因此很多时候也被称为GC堆。
2.对象和过程的区别
- 对象是属性和方法的封装;将功能封装到对象里,强调的是具备某功能的对象。面向对象思想的基础是将相关的数据和方法放在一起,组合成一种新的复合数据类型
- 过程就是函数;就是写方法;**强调的是功能行为,一种过程,**先干啥,再干啥
3.创建对象的过程
- 1.将对象加载进方法区;
- 2.在栈中开辟main方法的存储空间;分配一个变量;
- 3.在堆中开辟一个实例对象;
- 4.属性分配空间,初始化,构造初始化等,
4.静态代码块、构造代码块、构造函数、普通代码块执行顺序
构造代码块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。
首先静态代码块–>main方法–>构造代码块–>无参构造–>普通代码块
5.javac.exe和java.exe区别:
- javac.exe是编译程序,将源代码编译生成二进制文件.class文件。
- java.exe是执行程序,将.class文件执行,得到结果。
6.&和&&,|和||区别
- &无论左边结果是什么,右边都参与运算。&&,只要一边不通过,整体就不通过
- |两边都运算。||,假如左边为true,则右边就不参与运算了。
7.数组表现形式
- 元素类型[] 变量名 = new 元素类型[元素的个数];
- 元素类型[] 变量名 = {元素1,元素2…};
- 元素类型[] 变量名 = new 元素类型[]{元素1,元素2…};
8.父类子类顺序
父类静态代码块–>子类静态代码块–>父类构造代码块–>父类构造函数–>子类构造代码块–>子类构造函数
9.顶级父类Object
- Object类是所有类的直接或间接父类
- boolean equals(Object obj):比较两个对象是否相等,其实内部比较的是两个对象的地址
- toString():将对象变为字符串
- getClass():获取任意对象运行时的所属字节码文件对象。
- hashCode():返回该对象的哈希码值,支持此方法是为了提高哈希表的性能。