可见,String类型是不会被修改的,在编译时,方法栈里有world,如果是输入赋值给String应该会变,char数组传递的是数组的引用,Character传递的是值
传值不会修改原来的,传引用会修改原来的。
七.i++与++i
public static void main(String[] args) throws Exception {
int a=1;
int b=a++; //先执行b=a,再执行a++
System.out.println(b++); //先执行print(b),再执行b++
}
输出:1
八.==与equals的区别
==:
1.在中,如果比较的是int,long,short这种基本数据类型,那么比较的是它们的值
2.若比较的引用数据类型,如类,String,那么比较的是它们的内存地址,除非是同一个new一个出来的对象,此时地址相同,返回ture,否则返回false
如:
String a= new String(“abc”);
String b=a;
sout(a==b); //ture
若:
String c= new String(“c”);
String c1= “c”;
sout(c==c1);//false
equals:
1.所有类都继承自Object,若不重写equals()方法,那么调用Object类中的equals()方法,源代码:
public boolean equals(Object obj) {
return (this == obj);
}
也就是仍然是比较其地址。
2.若重写其方法:
在String中:
源代码:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String) anObject;
int n = value.length;
if (n == anotherString.value.length)