1.什么浅复制
浅复制指的是,在数组复制时,对于基本类型的数组,复制的是数组元素的值,对于引用类型数组的赋值,复制的是他们的地址,这个数组复制的部分,他们的元素都指向同一个地址,两者无论哪一个对数组进行操作的,对另一个数组元素都有影响
2. &和&&区别
这两个都为与运算符,与运算只有两边都为真,最后结果才为真
&&:例如A&B,假如A是false,那么无论B是真还是假最后结果都为假
所以&&当第一个(A)为false时,B就不执行了,返回结果false
&:无论A是真还是假,B都要走一边
这就是&和&&的区别
3.==和equals的区别
1.==
A:两边为基本运算符时,比较的为两个的值
B:两边为引用运算符时,比较的为两个的地址
2.equals
equals()是Object类的一个方法,所以每个类都会有equals()方法
不重写时:比较的为两个地址
重写时:大部分比较的是对象的属性,也可以按需重写equals()方法
注意:当重写了equals()方法时,也要对hashcode()方法进行重写
因为equals()和hashcode()都是通过地址比较出来的,如果重写了equals()方法,会导致和hashcode()产生的结果不统一,违反了协议
4.重载和重写的区别
重载:重载是一个类中两个方法方法名相同,但方法传递的参数不同
(A:参数类型不同B:参数个数不同C:参数的类型顺序不同),通过方法传递的参数走不同的方法体,这就是重载
重写:重写一般用在A:继承B:接口
A:当一个类继承一个父类时,子类就拥有了父类非私有的方法和属性,但子类不想走父类方法,在子类中重新写一个和父类方法名,返回参数相同的方法,这就是重写
注意:子类重写时,子类的权限修饰符一定要>=父类的权限修饰符
5.抽象类和接口的区别
- 抽象类是个类接口不是个类
- 抽象可以有构造方法,接口没有构造方法
- 抽象类可以有变量,非抽象方法,抽象方法等等,接口中只能有常量和抽象方法
- 一个类只能继承一个抽象类,一个类可以实现多个接口
- 抽象类和接口不能用final修饰,因为final修饰的类不能继承那就失去了意义
6 .String a="abc"和String a=new String(“abc”);的区别
String a=“abc”:是在栈内存声明一个String类型的a,然后在常量池创建一个字符串"abc",指向a
String a=new String(“abc”):是在栈内存中声明一个a,然后在堆内存中创个一个String类型的"abc",将堆内存中的这个地址指向栈内存中的a