对于如上代码:
1.1 changeStr与changeArr的功能各是什么?
答:changeStr将字符串x修改为xyz;changeArr将字符串中的strs[i]修改为strs[i]i。
1.2 main方法的x有没有被改变?为什么?
答:没有。因为 String x 是对 main 中 x 的拷贝,不是 main 中的 x ,因而没有改变 main 方法中的 x。
1.3 main方法的args数组的内容有没有被改变?为什么?
答:没有。因为 args数组 没有进行初始化。
1.4 args数组中的值是从哪里来的?要怎么才能给他赋值。
答:可以通过输入,或者直接在代码上赋值。
2. 数组相关问题
2.1 输出结果是什么?为什么?
答:[2,1,0]
[2,1,0]
由于 int[] arrX=arr可知,arrX数组与arr数组一致,因而它们的输出相同。且由于使用数组的动态初始化会默认给数组赋值,所以会出现arr[3]=0。
2.2 字符串是不可变类,为什么可以对strArr[1]赋值"xx"。
答:因为引用可以改变。
3. 使用int[5][] 定义一个二维数组,其第二维到底有多长?尝试补全代码,然后使用foreach获其他循环方法遍历这个二维数组?
答:第二维长度可以自定义
4. 类与对象的区别是什么? Math类有对象吗?String类有什么属性是private的,有什么方法是public的,为什么这样设计(尝试举两例说明)?
答:1、对象是对客观事物的抽象,对象是类的实例;类是对对象的抽象,类是一种抽象的数据类型,类是对象的模板。
2、Math类没有对象。
3、final byte coder等为private,equals为public
5. 将类的属性设置为public可以方便其他类访问,但为什么Java中普遍使用setter/getter模式对对象的属性进行访问呢?这与封装性又有什么关系?
答:为了防止其他使用者在非我们允许时访问数据,保证了对象数据的安全性。
6. 对象的属性可在什么时候进行初始化?都有哪些进行初始化的办法?
答:在准备使用之前初始化;声明该属性的时候初始化、构造方法中初始化、初始化块