问题1:对象与对象引用的区别是什么?请举例说明
对象是操作的实体,类似于电视机,而对象引用是对对象的引用,可以获得并使用对象的属性和方法,类似于遥控器。
例如
FighterPlane fp=new FighterPlane();
fp是对象引用,new FighterPlane()是对象。
问题2:对象作为参数传递的特点是什么?请举例说明
对象作为参数传递时,传递的是参数的引用的拷贝
例如
class IntClass{
int value;
}
public class RunIntClass{
public static void modifyValue(IntClass s,int val){
s.value=val;
}
public static void main(String[] args){
IntClass a=new IntClass();
modifyValue(a,8);//将对象引用a拷贝一份赋值给s,s也指向对象IntClass
System.out.println(a.value);//输出为8
}
}
问题3:对象初始化顺序是怎样的?
Java对象初始化的执行顺序为:静态语句块->静态变量初始化->实例语句块/成员变量初始化->构造方法,实例语句块与成员变量初始化的相对执行顺序取决于定义的先后顺序
执行顺序简记为:static静态代码块和静态成员->普通成员->构造函数执行
问题4:类的static字段与非static字段的区别是什么?什么场景应该使用static修饰符?
static字段修饰的成员不属于任何一个类的具体对象,而是属于这个类的静态数据成员,被保存在类的内存区的公共存储单元,而不是某个对象的内存区,非static字段修饰的成员是属于某个对象的,被保存在某个对象的内存区。
当某一方法或属性属于所有对象共有而不是属于某一个对象时可以用static修饰符。
问题5:Java中final修饰符都有什么作用?
1.修饰变量,变量被赋初值后无法改变
2.修饰方法,不能被子类覆写,但是可以重载
3.修饰类,类不能被继承
问题6:Java中float[10] arr;语句正确么?为什么?
不正确。这时的arr是没有指向数组对象的数组对象引用,所以不能有数组大小的定义,应该写成float[] arr;
问题7:Java数组元素类型为基本类型和引用类型时,有什么不同?请举例说明
数组元素类型为基本类型时,数组中装入的是基本数据类型;为引用类型时,数组中装入的是对象的引用。
//1.基本类型
int[] arr=new int[10];
//2.引用类型
String[] arr=new String[10];//未对数组中每个元素赋值时,初始值默认为null
arr[0]=new String("ab");