public class finalStaticDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
String a = "hello2";
String aa="hellohello";
final String b = "hello";
String d = "hello";
String f="hello";
String g=f+2;
String c = b + 2;
String cc=b+d;
String e = d + 2;
int i=10;
System.out.println((a == c));//如果是final String+i的时候,先在常量池里面找到某个值,找到就不再新建。
System.out.println((cc == aa));//如果final String+引用变量,的时候就会新建一个对象。而不去String的常量池去找这个对象。
System.out.println((a == e));//
System.out.println((e == g));//String+i的时候会新new一个String。
MyClass myClass1 = new MyClass();
MyClass myClass2 = new MyClass();
System.out.println(myClass1.i);
System.out.println(myClass1.j); //静态变量的j的值也可以修改,但是两次执行都相同。
System.out.println(myClass2.i); //final i的值一直在变,变量i不变,i的值一直在变。
System.out.println(MyClass.j);
myClass1.changeValue(i);//Java对于基本变量采用值传递,不会影响,外部的I。 所以外部I传递给方法的时候,
//只是把I的值copy过去了。 在对象方法执行完毕后,局部变量I也清除了。外部的I仍然是原值。
System.out.println(i);
}
}
class MyClass {
public final double i = Math.random();
public static double j = Math.random();
void changeValue(int i){
++i;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String a = "hello2";
String aa="hellohello";
final String b = "hello";
String d = "hello";
String f="hello";
String g=f+2;
String c = b + 2;
String cc=b+d;
String e = d + 2;
int i=10;
System.out.println((a == c));//如果是final String+i的时候,先在常量池里面找到某个值,找到就不再新建。
System.out.println((cc == aa));//如果final String+引用变量,的时候就会新建一个对象。而不去String的常量池去找这个对象。
System.out.println((a == e));//
System.out.println((e == g));//String+i的时候会新new一个String。
MyClass myClass1 = new MyClass();
MyClass myClass2 = new MyClass();
System.out.println(myClass1.i);
System.out.println(myClass1.j); //静态变量的j的值也可以修改,但是两次执行都相同。
System.out.println(myClass2.i); //final i的值一直在变,变量i不变,i的值一直在变。
System.out.println(MyClass.j);
myClass1.changeValue(i);//Java对于基本变量采用值传递,不会影响,外部的I。 所以外部I传递给方法的时候,
//只是把I的值copy过去了。 在对象方法执行完毕后,局部变量I也清除了。外部的I仍然是原值。
System.out.println(i);
}
}
class MyClass {
public final double i = Math.random();
public static double j = Math.random();
void changeValue(int i){
++i;
}
}