码迷,mamicode.com
首页 > 编程语言 > 详细

Java局部变量final

时间:2015-12-27 00:59:28      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

  局部变量和形参带final。

  在一个线程A中开起另一个线程B,如果线程B要使用线程A的局部变量,那么A的局部变量需要定义成final。理由:局部变量是线程内部共享的,每一个线程内的不能访问其他线程的局部变量,但是上诉的情况却违背了这一原则,那么加上final为什么就可以了呢?原因是加上final之后,在创建B线程的时候会把final标记的变量作为线程B的构造方法的参数传给B,如此一来就解决了此问题,这是一个比较巧妙的做法,通过class文件反编译可以看出这个道理。

  另外Java的String变量比较特殊,他所定义的变量的值全部都存放在常量池里面,不管是不是final的。下面的结果全部为true。并且如果相等都指向同一个地址。

  基本类型的局部变量如果值相同也都指向同一个地址。只有后面的和前面的不想等的时候才会指向新的地址,这就是为什么基本局部变量相互之间不会影响的原因。

public class StringTest {
	private static String s1 = "123";
	static final String s2 = "123";
	
	public static void main(String[] args) {
		String s3 = "123";
		final String s4 = "123";
		System.out.println(s1 == s2);
		System.out.println(s3 == s4);
		System.out.println(s1 == s3);
	}
}

  

Java局部变量final

标签:

原文地址:http://www.cnblogs.com/dreamroute/p/5079277.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!