问题目录
1. 对象与对象引用的区别是什么?请举例说明2. 对象作为参数传递的特点是什么?请举例说明3. 对象初始化顺序是怎么样的?请举例说明4. 类的static字段与非static字段的区别是什么?什么情况应该使用static修饰符?请举例说明5. Java中final修饰符都有什么作用?请举例说明6. Java中float[10] arr;语句正确吗?为什么?7. Java数组元素类型为基本数据类型和引用数据类型时,有什么不同?请举例说明8.课后作业
1. 对象与对象引用的区别是什么?请举例说明
对象是类的实例化,对象的内存分配在堆上,有自己的域变量。对象引用是一个声名,其内存分配在栈上,没有初始化的对象引用没有自己的域变量,初始化后可通过对象引用操作对象。
new Plane()
Plane p
;
p
= new Plane();
2. 对象作为参数传递的特点是什么?请举例说明
对象作为参数时发生的是引用传递,即传递的是对象的地址
class MyInt{
int val
;
}
public class Run{
public static void modify(MyInt i
, int val
){
i
.val
= val
;
}
public static void main(String
[] args
){
MyInt m
= new MyInt();
modify(m
,8);
System
.out
.println(m
.val
);
}
}
最后输出结果为8,而不是0,这是由于对象作为参数引用传递后,在modify方法中改变了域变量val的值。
3. 对象初始化顺序是怎么样的?请举例说明
对数据成员进行默认初始化执行数据成员的初始化语句调用构造方法指定变量初值
public class MyInt{
val
= 8;
public MyInt(){}
public MyInt(int v
){
val
= v
;
}
}
public class Run{
public static MyInt
get(){
MyInt a
= new MyInt(6);
return a
;
}
public static void main(String
[] args
){
MyInt s
= new MyInt();
System
.out
.println(s
.value
);
s
= get();
System
.out
.println(s
.value
);
}
}
4. 类的static字段与非static字段的区别是什么?什么情况应该使用static修饰符?请举例说明
类static修饰字段是属于整个类的,存储在类的公共存储单元类的非static字段是属于对象的,存储在堆栈上属于全体对象的共有属性,可使用static字段修饰类字段 static 方法只能访问static属性,而非staitc方法可以访问static属性
class Student{
static int count
= 0;
String name
= "XXX";
public Student(){
count
++;
}
public Student(String name
){
this.name
= name
;
count
++;
}
public static int getCount(){
System
.out
.println("We have "+count
+" students.");
return count
;
}
}
5. Java中final修饰符都有什么作用?请举例说明
final 修饰变量时,代表该变量是常量,其值在初始化后不可改变;final 修饰方法时,代表该方法是最终方法,不能在后续继承中覆盖或重载;final 修饰类时,代表该类是最终类,不能再被继承。
6. Java中float[10] arr;语句正确吗?为什么?
不正确 Java中 标识符float[]告诉编译器arr是一个float数组的声名,一旦加上数组大小编译器就无法识别出内容。应该使用: float[] arr = new float[10]; 或者 float[] arr; arr = new float[10];
7. Java数组元素类型为基本数据类型和引用数据类型时,有什么不同?请举例说明
数组元素为基本数据类型,其默认值为0或0.0,初始化赋值直接覆盖即可数组元素为引用数据类型,默认值为null,并且需要逐个初始化,与对象绑定
class MyInt(){
int val
;
MyInt(int v
) { val
= v
; }
}
public class Run{
public static void main(String
[] args
){
int[] a
= new int[5];
for(int i
=0;i
<a
.length();i
++)
System
.out
.print(a
[i
]+" ")
System
.out
.println();
for(int i
=0;i
<a
.length();i
++)
a
[i
] = i
+3;
for(int i
=0;i
<a
.length();i
++)
System
.out
.print(a
[i
]+" ")
System
.out
.println();
MyInt
[] b
= new MyInt[5];
for(int i
=0;i
<b
.length();i
++)
System
.out
.print(b
[i
]+" ")
System
.out
.println();
for(int i
=0;i
<b
.length();i
++)
b
[i
] = new MyInt(i
+ 5);
for(int i
=0;i
<b
.length();i
++)
System
.out
.print(b
[i
].val
+" ")
System
.out
.println();
}
}
8.课后作业