您的位置:首页 > 其它

final static区别示例

2016-03-29 15:10 288 查看
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;

       }

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  final 静态Static