1.对象与对象引用的区别是什么? 请举例说明
1.创建对象:
new FighterPlane();//对象分配在堆heap上
2.声明一个对象引用:
FighterPlane fp;//fp作为局部变量分配在栈上,fp也称为引用变量
3.初始化对象引用:
fp=new FighterPlane();//fp指向实际对象
"="的意思是将对象的地址赋给引用fp。也就是说,fp里保存的,实际上是一个对象地址,通过fp即可操纵该对象。
2.对象作为参数传递的特点是什么?请举例说明
对象是引用传递,当对象作为参数传递时,传递的是对象的地址。
class IntClass {
int value;
}
public class RunIntClass {
public static IntClass getInstance() {
//在方法中产生对象
IntClass s = new IntClass ();
s.value=8;
return s; //返回对象引用
}
public static void main(String [] args) {
IntClass a = getInstance();
System.out.println(a.value);
}
}
3.对象初始化顺序是怎样的?请举例说明
创建对象时的初始化顺序:
- 系统会对数据成员进行默认初始化
- 执行数据成员定义处的初始化语句
- 调用构造方法为数据成员指定初值
class IntClass{
int value;//自动初始化 默认值为0
//int value=5; 在定义时指定初值
}
public IntClass(){}
public IntClass(){
value=val;
}
public class IntClassConstructor{
public static IntClass getinstance(){
IntClass s=new IntClass(8);
return s;
}
public static void main(String args[]){
IntClass a=new IntClass();
System.out.println(a.value);
a=getinstance();
System.out.println(a.value);
}
}
4.类的static字段与非static字段的区别是什么?什么场景应该使用static修饰符?请举例说明
static修饰数据成员:
用static修饰符修饰的数据成员是不属于任何一个类的具体对象,而是属于类的静态数据成员。
它被保存在类的内存区的公共存储单元中,而不是保存在某个对象的内存区中。因此,一个类的任何对象访问它时,存取到的都是相同的数值。
class IntClass{
static int num=1;//静态数据成员初始化
//int value;//自动初始化,默认值为0
int value=5;//定义时指定初值
public IntClass(){}
//定义构造方法将属性value初始化
public IntClass(int val){
value = val;
}
}
public class IntClassConstructor{
public static IntClass getInstance(){
//调用构造方法
IntClass s=new IntClass(8);
return s;
}
public static void main(String args[]){
System.out.println(IntClass.countNum());
IntClass a=new IntClass();
System.out.println(a.value);
IntClass.num++;//静态数据成员自增
a=getInstance();
a.num++;//静态数据成员自增
System.out.println(a.num);
}
}
//5 3
5.Java中final修饰符都有什么作用?请举例说明
1.final修饰属性,则属性为常量;
2.final修饰方法,则该方法在子类当中不能被覆盖。
3.final修饰一个类,表明这个类不能被继承。
6.Java中float[10] arr; 语句正确么?为什么?
不正确
系统无法识别该语句给arr分配内存空间。
正确的建立容量为10的float数组的方法是:
首先进行数组引用声明float[]arr;
接下来数组引用与新创建的数组对象相关联arr=new float[10];
或者同时进行float[]arr=new float[10];
7.Java数组元素类型为基本数据类型和引用类型时,有什么不同?请举例说明
数组元素为基本数据类型时
初始化语句的作用是给数组分配空间,创建数组对象,并将每个单元初始化为默认值0
int[] arr = new int[10];//产生一个有10个单元,类型为int的数组对象,所有单元初始值为0
数组元素为引用类型时
引用类型数组的数组元素是引用,因此情况变得更加复杂:每个数组元素里存储的还是引用,它指向另一块内存,这块内存里存储了有效数据。
String[] example = new String[10];//创建对象引用数组
for(String x:example){
System.out.println(x);//输出结果为10个null



