Java基础知识
1、基本数据类型
①:基本数据类型:byte、short、int、long、float、double、char、boolean
②:引用数据类型: 数组、类、接口。
数组的几种表现形式:
1)、元素类型[] 变量名 = new 元素类型[元素的个数];
如:
int[] ns = new int[5];
2)、元素类型[] 变量名 = {元素1,元素2...};
元素类型[] 变量名 = new 元素类型[]{元素1,元素2...};
// 遍历数组
public class Main { public static void main(String[] args) { int[] ns = { 1, 4, 9, 16, 25 }; for (int i=0; i<ns.length; i++) { int n = ns[i]; System.out.println(n); } } }
// 二维数组
public class Main { public static void main(String[] args) { int[][] ns = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } }; System.out.println(ns.length); // 3 } }
2、equals与==的区别
1、 ==是判断两个变量或实例是不是指向同一个内存空间,equals是判断两个变量或实例所指向的内存空间的值是不是相同
2、==是指对内存地址进行比较 , equals()是对字符串的内容进行比较
3、==指引用是否相同, equals()指的是值是否相同

3、创建一个对象都在内存中做了什么事情?
Person p = new Person();
1:先将硬盘上指定位置的Person.class文件加载进内存。
2:执行main方法时,在栈内存中开辟了main方法的空间(压栈—进栈),然后在main方法的栈区分配了一个变量p。
3:在堆内存中开辟一个实体空间,分配了一个内存首地址值。new
4:在该实体空间中进行属性的空间分配,并进行了默认初始化。
5:对空间中的属性进行显示初始化。
6:进行实体的构造代码块初始化。
7:调用该实体对应的构造函数,进行构造函数初始化。()
8:将首地址赋值给p ,p变量就引用了该实体。(指向了该对象)
Java基础知识总结(经典):https://www.cnblogs.com/schiller-hu/p/10662429.html
4、Java异常处理机制
处理方式有两种:1、捕捉;2、抛出。
对于捕捉:java有针对性的语句块进行处理。
try { 需要被检测的代码; } catch(异常类 变量名){ 异常处理代码; } fianlly{ 一定会执行的代码; }
5、Java面向对象编程
面向对象的三大特征:封装、继承、多态。
封装:把同一类事物所具有的共同属性和共同行为功能抽取到Java类中的过程称为封装并将类里面的数据和行为进行保护。常用方法为:设置数据的访问修饰符为private,这样外部的事物就不能随意更改类中的数据。
继承:子类继承父类的所有非private成员。
多态:关于多态需要记住三句话:
(1)父类类型的变量可以指向子类类型的对象。
(2)能够调用什么方法取决于变量的类型。
(3)具体调用什么方法取决于对象的类型。
6、垃圾回收机制?
垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制。
7、内存泄漏?
当一个对象已经不需要再使用本该被回收时,另外一个正在使用的对象持有它的引用从而导致它不能被回收,这导致本该被回收的对象不能被回收而停留在堆内存中,这就产生了内存泄漏。内存泄漏是造成应用程序OOM的主要原因之一。我们知道Android系统为每个应用程序分配的内存是有限的,而当一个应用中产生的内存泄漏比较多时,这就难免会导致应用所需要的内存超过系统分配的内存限额,这就造成了内存溢出从而导致应用Crash。
8、请你说一说class和interface的区别
1、接口类似于类,但接口的成员都没有执行方式,它只是方法、属性、事件和索引的组合而已,并且也只能包含这四种成员;类除了这四种成员之外还可以有别的成员(如字段)。
2、不能实例化一个接口,接口只包括成员的签名;而类可以实例化(abstract类除外)。
3、接口没有构造函数,类有构造函数。
4、接口不能进行运算符的重载,类可以进行运算符重载。
5、接口的成员没有任何修饰符,其成员总是公共的,而类的成员则可以有修饰符(如:虚拟或者静态)。
6、派生于接口的类必须实现接口中所有成员的执行方式,而从类派生则不然。
9、Integer和int的区别:
1、integer是int的包装类,int是Java的一种基本数据结构
2、integer变量必须实例化后才能使用,int变量不需要
3、integer实际是对象的引用,int是直接存储数据值
4、integer的默认值是null,int的默认值是0
10、protected,public,private的区别
作用域 当前类 同一package 子孙类 其它package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
11、Spring IoC和AOP的实现原理解析