编程题
4.16
4.17
陈述题
1.对象与对象引用的区别是什么? 请举例说明
对象:是操作的实体。
对象引用:顾名思义,是引用。比如引用一句话,可以获得它的内容。而对对象的引用,就可以获得它的属性和方法。
举例:
Object object = new Object();
object:是对象引用;
new Object():创建了一个对象
2.对象作为参数传递的特点是什么?请举例说明
对象是引用传递(传的是地址),可以改变实参的值。
class IntClass{
public int value=10;
}
public class test {
public static int a;
public static void modify(IntClass Int) {
Int.value=8;
}
public static void main(String[] args) {
IntClass Int=new IntClass();
System.out.println(Int.value);//10
modify(Int);
System.out.println(Int.value);//8
}
}
3.对象初始化顺序是怎样的?请举例说明
顺序:
1.系统会对数据成员进行默认初始化(0,null)
2.执行数据成员定义处的初始化语句
3.调用构造方法为数据成员指定初值
class IntClass{
//int value;//自动初始化,默认值为0
int value=5;//在定义时指定初值
public IntClass() {}
//调用构造方法初始化
public IntClass(int val) {
System.out.println("构造方法的调用!");
System.out.println(this.value);
this.value=val;
}
}
public class test {
public static void main(String[] args) {
IntClass Int=new IntClass(10);
System.out.println(Int.value);//10
}
}
4.类的static字段与非static字段的区别是什么?什么场景应该使用static修饰符?请举例说明
Static修饰的数据成员:
用static修饰符修饰的数据成员是不属于任何一个类的具体对象,而是属于类的静态数据成员
它被保存在类的内存区的公共存储单元中,而不是保存在某对象的内存区中。因此一个类的任何对象访问它时,存取到的都是相同的数值
访问方式常用类名访问
静态数据成员仅在类加载时进行初始化,并且只进行一次初始化。
static修饰的类方法:
static方法是类方法,但可以被所有对象访问,static方法内部的代码,只能访问类中static属性或方法,不能直接访问类中的非static属性或方法(因为那是对象方法),但非static方法(对象方法)可以访问static数据成员。
main方法是特殊的静态方法,是Application程序入口点,必须写成public static void main(String[] args)的形式
当某一个方法或属性属于所有对象共有或不属于某一个对象时可以使用static修饰符
class IntClass{
public int value;
private static int total;
public static int getTotal() {
//this.value=10;//Cannot make a static reference to the non-static field value
return total;
}
public IntClass(int val) {
this.value=val;
total++;
}
}
public class test {
public static void main(String[] args) {
System.out.println(IntClass.getTotal());//0
IntClass a=new IntClass(5);
System.out.println(IntClass.getTotal());//1
IntClass b=new IntClass(6);
System.out.println(IntClass.getTotal());//2
//只能间接访问total但不能直接访问修改
}
}
5.Java中final修饰符都有什么作用?请举例说明
final修饰类属性则属性为常量,不可修改;final修饰类方法则该方法在子类当中不能被覆盖,可防止任何继承类修改此方法,保证了程序的安全性和正确性;final修饰类,则该类不能被继承。
6.Java中float[10] arr; 语句正确么?为什么?
不对
进行数组声明 float[] arr;
再初始化 arr=new float[10];
或者直接写 float[] arr=new float[10];
但是不能写成 float[10] arr; 系统无法识别该语句给arr数组分配内存空间。
7.Java数组元素类型为基本类型和引用类型时,有什么不同?请举例说明
对于基本类型数组而言,数组元素的值直接存储在对应的数组元素中,因此,初始化数组时,先为该数组分配内存空间,然后直接将数组元素的值存入对应数组元素中。
如:
int[] a1={1,2,3,4,5};
引用类型数组的数组元素是引用,因此情况变得更加复杂:每个数组元素里存储的还是引用,它指向另一块内存,这块内存里存储了有效数据。
如:
MyClass[] mc=new MyClass[10];