1.对象与对象引用的区别是什么?请举例说明
用具体代码解释
public class student{
private int id;
private char name[10];
public student();
}
这是一个具体的类,我们使用它创建一个对象
student s=new student;//这里产生了一个具体的类
然后我们表现对象引用
student ss=s;//这里的ss是之前产生的类的引用
这里的ss即为对象引用
2.对象作为参数传递的特点是什么?请举例说明
对象作为参数传递的时候,传递的是对象的地址。作为对象的引用传递可以改变。
class student{
private int id=0;
}
public class {
public static void assignment(student s,int i){
s.id=i;
}
public static void main(String args[]){
student S=new student();
assignment(S,1);
System.out.println(S.id);//此处s中的id已经被改变
}
}
最终的输出结果为1
3.对象初始化顺序是怎样的?请举例说明
(1) 加载student类:
初始化student类的static属性,赋默认值;
执行student类的static初始化块;
(2) 创建student类对象:
初始化student类的非static属性,赋默认值;
执行student类的instance初始化块;
执行student类的构造方法;
public class student{
private int id;
static
{
System.out.println("static");
}
Child(){
System.out.println("student");
}
输出:
static
student
4.类的 static 字段与非 static 字段的区别是什么?什么场景应该使用 static 修饰符?请举例说明
static修饰的变量不属于具体的对象,它的存储空间对类的所有对象都共享。
public class student{
private int id;
static int class = 1;
}
此处的班级信息则是所有学生对象共享的数据
5.Java中 final 修饰符都有什么作用?请举例说明
final修饰符修饰类中的属性时,该属性成为常量,不可以被修改
final修饰类中的方法时,如果该类被继承,子类中不可以使用新的方法覆盖原方法
public class student{
private final int id = 1;
public void change(int x){
this.id = x;
}
}
这段代码类中的方法change改变id的数据会报错
6.Java中 float [10] arr ;语句正确么?为什么?
不正确,这样定义会使系统无法分配空间给arr
定义数组可用以下方式
float[ ] arr;
arr = new float[10];
或者采用
float[ ] arr = new float[10];
7.Java数组元素类型为基本类型和引用类型时,有什么不同?请举例说明
基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上;
引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。
基本数据类型的元素是基本类型
int[ ] a = new int[10];
引用类型的元素都是对象
student[ ] s = new student[10];