final、static、static final修饰引用类型时的区别
2017-02-19 16:38
423 查看
总结:
final修饰的引用类型:是在堆内存new出来的;(如对象)可以被赋值一次,引用地址不可变,但对象里面的内容(如属性值)可以变。
static修饰的引用类型:是在加载类的时候,load到方法区的;是这个类的实例共有的类方法or属性;引用的地址可以变,里面具体的内容也可以变
static final修饰的引用类型:是在加载类的时候,load到方法区的(同static);可以被赋值一次,引用地址不可变,但对象里面的内容(如属性值)可以变(同final);
参考:
1、http://blog.csdn.net/tengdazhang770960436/article/details/25156743
2、http://blog.csdn.net/u012110719/article/details/46334413
final修饰的引用类型:是在堆内存new出来的;(如对象)可以被赋值一次,引用地址不可变,但对象里面的内容(如属性值)可以变。
static修饰的引用类型:是在加载类的时候,load到方法区的;是这个类的实例共有的类方法or属性;引用的地址可以变,里面具体的内容也可以变
static final修饰的引用类型:是在加载类的时候,load到方法区的(同static);可以被赋值一次,引用地址不可变,但对象里面的内容(如属性值)可以变(同final);
public class test2 { // final修饰基本类型的变量 public static StringBuffer a = new StringBuffer("StringBuffer"); // final修饰引用类型的变量 public static final StringBuffer b = new StringBuffer("StringBuffer"); // public final StringBuffer c = new StringBuffer("StringBuffer"); public static void main(String[] args) { // 编译报错,引用不能变 test2 t = new test2(); a = new StringBuffer("hehe"); // b = new StringBuffer("hehe");//b和c都是final的,无法被重新赋值 // t.c = new StringBuffer("hehe"); // 引用变量所指向的对象中的内容还是可以改变的 a.append("xxx"); System.out.println(a);//得到hehexxx b.append("lalal"); System.out.println(b);//得到StringBufferlalal } public static int method1(final int i) { // i = i + 1;// 编译报错,因为final修饰的是基本类型的变量 return i; } // 有人在定义方法的参数(引用变量)时,可能想采用如下的形式来阻止方法内部修改传进来的参数对象, // 实际上,这是办不到的,在该方法内部仍然可以增加如下代码来修改参数对象 public static void method2(final StringBuffer buffer) { buffer.append("buffer");// 编译通过,因为final修饰的是引用类型的变量 } }
参考:
1、http://blog.csdn.net/tengdazhang770960436/article/details/25156743
2、http://blog.csdn.net/u012110719/article/details/46334413
相关文章推荐
- (重要!!!!!)final、static、static final修饰引用类型时的区别
- this、super、final关键字(以及final修饰基本数据类型和引用类型的区别)
- final修饰基本类型和引用类型变量的区别
- 6.4.3 final修饰基本类型变量和引用类型变量的区别
- final修饰基本类型和引用类型变量的区别
- 66 Java final 修饰基本类型变量和引用类型变量的区别
- final修饰基本数据类型和修饰引用数据类型的区别
- final、static、static final修饰的字段赋值的区别
- final修饰基本类型变量和引用变量区别
- 《final修饰基本类型变量和引用类型变量的区别》
- java(instanceof操作符、对象类型转换 、final 关键字、final,finally,finalize的区别、static关键字,修饰符 )
- final 与static final修饰变量区别
- class文件结构[2] static final、static、final、普通类型成员变量的赋初值
- java-static、final、static final的区别
- 4 java final 变量 | 变量即是final 又是static | 引用类型与基本数据类型 | Exception相关
- Java-小技巧-003-static、final、static final的区别
- Java中static、final、static final的区别
- Java中static、final、static final修饰的属性
- private final static ×× 和private static final xx 两者修饰变量的区别
- final和static、static final的区别