Java 编程练习题 Day2

关于Java中的数组,下面的一些描述,哪些描述是准确的:(    )
A
数组是一个对象,不同类型的数组具有不同的类
B
数组长度是可以动态调整的
C
数组是一个连续的存储结构
D
一个固定长度的数组可类似这样定义: int array[100]
E
两个数组用equals方法比较时,会逐个遍历其中的元素,对每个元素进行比较
F
可以二维数组,且可以有多维数组,都是在Java中合法的

答案:ACF

官方解析:当数组的初始化完成后数组在内存中所占用的空间将会被固定,即使我们清空这个数组中的元素,它所占用的空间依然会被保留。这造成了Java数组长度的不可变,选项B错误

Java语言中,数组是一种引用类型的变量,使用它定义变量时,这个引用变量还没有指向任何有效的内存空间,因此定义数组时不能指定数组的长度。而由于这个引用变量并没有指向任何有效的内存空间,所以没有空间来存储任何元素,只有当对数组初始化后,才可以使用这个数组。D选项正确的定义方式为int[] array =new int[100]。

本题易错点是E选项,数组是一种引用数据类型,继承自Object类的,所以其中也包含了未被重写的equals()方法,所有的引用变量都能调用equals()方法来判断他是否与其他引用变量相等,使用这个方法来判断两个引用对象是否相等的判断标准与使用==运算符没有区别,只有在两个引用变量指向同一个对象才会返回true。如果想达到E选项描述的效果,需要使用Arrays.equals()方法

 ——————————————————————————————————————————

 线程的生命周期的状态相互转换:

 

以下代码执行后输出结果为( )
public class ClassTest{
     String str = new String("hello");
     char[] ch = {'a','b','c'};
     public void fun(String str, char ch[]){
     str="world";
     ch[0]='d';
 }
 public static void main(String[] args) {
     ClassTest test1 = new ClassTest();
     test1.fun(test1.str,test1.ch);
     System.out.print(test1.str + " and ");
     System.out.print(test1.ch);
     }
 }

答案:hello and dbc

我没看懂解析;但是有一种说法是 String 里是定义了final 的char[] 所以不被改变;但是当我将

final char[] ch = {'a','b','c'};

在char之前加上了final修饰。它结果依旧被改变。

当 我把String类型 改成了int类型,他的值还是没变。

另一种说法就是值传递和引用传递

值传递,只是值传递,并不指向同一对象的值修改,于是str 没变;而char数组,是引用传递,于是结果是被修改了的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值