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;
}
}
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;
}
}
相关文章推荐
- AnyDVD & AnyDVD HD v6.1.3.3 Final 多国语言版 下载
- 暴风影音II V2.4 Final 【万能播放器】下载
- FTP服务器端软件Serv-U FTP Server 6.4.0.5&0.4 Final 汉化版 下载
- Android源码中final关键字的用法及final,finally,finalize的区别
- PHP面向对象的进阶学习(抽像类、接口、final、类常量)
- php面向对象全攻略 (十) final static const关键字的使用
- jdk中String类设计成final的原由
- java面向对象基础_final详细介绍
- 详解C++成员函数的override和final说明符的用法
- php类中的$this,static,final,const,self这几个关键字使用方法
- java 中的static关键字和final关键字的不同之处
- java final 和instanceof 关键字的区别
- 深入解析Java编程中final关键字的使用
- JAVA中的final关键字用法实例详解
- Java修饰符 abstract,static,final 的区别详解
- Java中final变量使用总结
- java关键字final使用方法详解
- 详解Java中final的用法
- Java中的final关键字详细介绍
- java中final与finally的使用介绍