java3

1、对象与对象引用的区别是什么? 请举例说明
创建对象: new FighterPlane(); (分配在堆上)
声明一个对象引用: FighterPlane fp ; (分配在栈上)
初始化对象引用: fp = new FighterPlane();
例如:FighterPlane fp = new FighterPlane();
new FighterPlane()创建了一个FighterPlane对象,fp为对FighterPlane对象的引用。

2、对象作为参数传递的特点是什么?请举例说明
基本数据类型作为参数传递是值传递,而对象是引用传递,当对象作为参数传递时,传递的是对象的地址。
例如:
class IntClass {
int value;
}
public class Test {
public static void modifyValue(IntClass s, int val){
val = 10;
s.value = val;
}
public static void main(String[] args) {
IntClass a = new IntClass();
int val = 8;
modifyValue(a,val);
System.out.println(a.value);
System.out.println(val);
}
}
输出结果:10
8

3、对象初始化顺序是怎样的?请举例说明
①系统会对数据成员进行默认初始化
②执行数据成员定义处的初始化语句
③调用构造方法为数据成员指定初值
例如:
class IntClass {
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);
//s.value=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);
}

}
输出结果:0
8

4、类的static字段与非static字段的区别是什么?什么情况应该使用static修饰符?请举例说明
用static修饰符修饰的数据成员是不属于任何一个类的具体对象,而是属于类的静态数据成员。它被保存在类的内存区的公共存储单元中,而不是保存在某个对象的内存区中。因此,一个类的任何对象访问它时,存取到的都是相同的数值。当对象中出现共享数据时使用static修饰符。
例如:
class IntClass {
static int num = 0;
int value = 5;

public IntClass(){}

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){
    IntClass a =new IntClass();
    System.out.println(a.value);
    IntClass.num++;
    a=getInstance();
    a.num++;
    System.out.println(a.num);
    System.out.println(IntClass.num);
}

}
输出结果: 5
2
2

5、Java中final修饰符都有什么作用?请举例说明
①final修饰属性,则属性为常量;
例:final int NUM = 20;
NUM = 30; // 编译错误
②final修饰方法,则该方法在子类当中不能被覆盖(见多态一节),可防止任何继承类修改此方法,保证了程序的安全性和正确性。例:
class Parent {
public final void method1(){}//这个方法不能被子类覆盖
}
class Child extends Parent {
public final void method1(){…}//编译错误
}

③final修饰类,则该类不能被继承
例:class Parent {
}
final class Person extends Parent{
} //可以继承Parent类
class Child extends Person{
} //编译报错,不能继承Person类

Java中float[10] arr; 语句正确么?为什么?
错误。声明时不可在方括号内指定数组大小。

7、Java数组元素类型为基本数据类型和引用类型时,有什么不同?请举例说明
①数组元素为基本数据类型的情形
例如: int[] arr = new int[10]; //此时分配了数组空间,每个单元初始化为默认值0
产生一个有10个单元,类型为int的数组对象,所有单元的初值为0。

②数组元素为引用类型
例如:String[] example = new String[10]; //对象引用数组
产生一个具有10个单元的数组对象,每个单元存放的是1个String对象的引用,所有单元的初值为null,此时并未创建具体的String对象
for(String x: example)
System.out.println(x); 输出结果为10个null
为数组对象引用赋值后,才能使用数组元素,否则抛出
NullPointerException异常
例如: example[0] = new String(“ab”); //创建String对象,赋值给example[0], 此时example的第一个元素指向String对象,从而可以操纵String对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值