1.1 changeStr与changeArr的功能各是什么?
changeStr将x赋值为xyz,但在返回main后,x还是abc;changeArr将每个元素都增加一个他们的下标。
1.2main方法的x有没有被改变?为什么?
没有改变,changeStr复制的是x的引用,函数无返回值,x不改变。
1.3main方法的args数组的内容有没有被改变?为什么?
有改变,因为在函数内部直接将字符串赋给String。
1.4args数组中的值是从哪里来的?要怎么才能给他赋值。
值可从在命令行下运行时,在类名后面输入,给他赋值,但在eclipse上无输入直接运行会是一个空数组
2.1输出结果是什么?为什么?
[2, 1, 0]
[2, 1, 0]
首先arr是一个由三个int型元素组成的数组,如果没有赋值,系统将统一赋初值0,再加上程序的赋值,结果就算是[2, 1, 0],又arrX=arr,两个数组指向同一块区域
-
java
-
String[] strArr = {"aa","bb","cc"};
-
strArr[1] = "xx";
-
System.out.println(Arrays.toString(strArr));
2.2字符串是不可变类,为什么可以对strArr[1]赋值"xx"。
字符串是不可变类没错,意思是在字符串常量池里不会改变,而可以将String引用指向其他字符串
3.使用int[5][] 定义一个二维数组,其第二维到底有多长?尝试补全代码,然后使用foreach获其他循环方法遍历这个二维数组?
第二维在没有赋值或定义时是null
假设赋值后可这样遍历
-
int[][] a=new int[5][];
-
for(int[] x:a)
-
{
-
for(int y:x)
-
{
-
System.out.println(y);
-
}
-
}
4. 类与对象的区别是什么? Math类有对象吗?String类有什么属性是private的,有什么方法是public的,为什么这样设计(尝试举两例说明)?
对象是实例化的类,Math没有对象,它的构造方法“私有”了,因为它内部都是“静态方法”
String有如下public属性
-
private final byte[] value;
-
private final byte coder;
-
private int hash;
-
private boolean hashIsZero;
-
。。。
public方法
-
public String()
-
public String(String original)
-
public String(char value[])
为了封装和避免一些固定的值改变(安全)
5.将类的属性设置为public可以方便其他类访问,但为什么Java中普遍使用setter/getter模式对对象的属性进行访问呢?这与封装性又有什么关系?
个人看法
1.对于一些只读变量,不设置getter;
2.在setter,可生成合理赋值
3.节省内存,只在一个类里有
封装性的话,就是避免随意的访问,和报错的时候可以快速的找到吧
6.对象的属性可在什么时候进行初始化?都有哪些进行初始化的办法?
1.定义时、使用时、得到其值时
2.set,初始化块,构造