Java面向对象程序设计 第四章总结

    科技2022-07-17  99


    问题目录

    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); //输出8 s = get(); //默认初始化 调用有参的构造方法 System.out.println(s.value); //输出6 } }

    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.课后作业

    Processed: 0.010, SQL: 8