第三次JAVA作业

编程题:在集成开发环境下编写、运行例4.16,4.17,并完成打包
陈述题 (记录在博客上)
1.对象与对象引用的区别是什么? 请举例说明
答;对象是对客观事物的抽象。
(1). 创建对象: new FighterPlane(); // 对象分配在堆heap上
(2) 声明一个对象引用:FighterPlane fp; // fp作为局部变量分配在栈stack上
fp也称为引用变量(Reference Variable)
(3)初始化对象引用: fp = new FighterPlane(); // fp指向实际对象
打个比方,对象引用是遥控器,而对象是电视机,用对象引用对对象的相关方法等进行操作。

2.对象作为参数传递的特点是什么?请举例说明
答:基本数据类型作为参数传递是值传递,而对象是引用传递。
public class ValuePass {
private static int a;
public static void main(String [] args) {
modify(a);
System.out.println(a);
}
public static void modify(int a) {
a++;
}
}
本程序的输出为0,因为a++是对形式参数进行自增,而不是类
属性a进行自增。

3.对象初始化顺序是怎样的?请举例说明
答:创建对象时的初始化顺序:
(1)系统会对数据成员进行默认初始化
(2)执行数据成员定义处的初始化语句
(3)调用构造方法为数据成员指定初值
在这里插入图片描述
在这里插入图片描述

4.类的static字段与非static字段的区别是什么?什么场景应该使用static修饰符?请举例说明
答:用static修饰符修饰的数据成员是不属于任何一个类的具体对象,而是属于类的静态数据成员。它被保存在类的内存区的公共存储单元中,而不是保存在某个对象的内存区中。因此,一个类的任何对象访问它时,存取到的都是相同的数值。
你不需要创建一个对象就可以直接使用这个类的static成员时。
比如说有一个类Dog;
属性:clolor,狗狗可以有好多颜色;
munberOfLegs =4 每只狗狗只有4条腿,这个就应该是静态的;
静态的属性不依赖于类的存在而存在,简单说,你可以定义
Dog dog1 = new Dog();
Dog dog2 = new Dog();
Dog dog3 = new Dog();
这里定义了三条狗狗,狗狗的颜色依赖于类本身,即dog1,dog2,dog3;三条狗狗可以有不同的颜色;
而狗狗的腿的数量不依赖于dog1,dog2,dog3;所有的狗狗都是4条腿。
一个类中可以使用不包含在任何方法体中的静态代码块,当
类被装载时,静态代码块被执行,且只被执行一次,静态代
码块经常用来对类中定义的属性进行初始化。
class Test {
static int value ;
static {
value = 3;
System.out.println(“value=”+value);
}
public static void main(String[] args){ }
}
程序输出结果为value=3

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

6.Java中float[10] arr; 语句正确么?为什么?
答:不正确
arr是数组声明,是引用

public class test extends IntClass{
	public static void main(String[] args) {
		//float[10] arr;//Syntax error on token "10", delete this token
		float[] arr=new float[10];
		
	}
}

但是不能写成 float[10] arr; 系统无法识别该语句给arr数组分配内存空间。

7.Java数组元素类型为基本类型和引用类型时,有什么不同?请举例说明。
答:数组元素为基本类型:
例如: int[] arr = new int[10]; //在堆上为数组对象分配10个
整型元素空间,每个元素初始化为默认值0
foreach语法(Java JDK5引入)
常用于数组、容器遍历
for(int i=0;i < arr.length; i++){
int x = arr[i];
System.out.println(x);
}
数组元素为引用类型 :
例如:String[] example = new String[10]; //对象引用数组
产生一个具有10个单元的数组对象,每个单元存放的是1个String对象的引用,所有单元的初值为默认值null,此时并未创建具体的String对象。
程序验证: for(String x: example)
System.out.println(x); // 输出结果为10个null
// 抛出 NullPointerException异常
System.out.println(example[0]. length());
修改: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、付费专栏及课程。

余额充值