1.1 changeStr是修改字符串的内容为"xyz",changeArr是在原来的数组内容的后面加上下标。
1.2 没有,因为x在调用changeStr前就存放在字符串常量池中了,不会被改变。
1.3 有,changeArr方法通过按值传参传过来的引用地址,找到了args数组对象,并进到对象里面修改了对象内容,改变了args数组中每个字符串引用类型元素的引用对象
1.4 输出数组会出现[]是因为Arrays.toString()这个方法会输出数组的内容,例如当数组里有1,2,3时,会以[1,2,3]的形式输出,所以当数组为空的时候就只会输出[]
2.1 [2, 1, 0]
[2, 1, 0]
2.2 String类对象内容不能修改,但并不代表其引用不能改变
3
4 类是图纸,对象是依照图纸造出来的实物。Math类没有对象。
Math是一个工具类,构造器是private私有的,类里面的方法都是静态方法,所以没有对象。
String:
私有属性:
final byte[] value
final byte coder
int hash
boolean hashIsZero
公开方法:
charAt(int index)
equals(Object anObject)
出于性能和安全的考虑,也为了更好地使用。
5 隐藏细节,封装是代码的屏障,避免外部的代码对类的属性进行随机访问
6 创建的时候,使用对应方法的时候
定义初始化、初始化块、构造初始化