Java局部變量final


  局部變量和形參帶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);
	}
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM