Java基础知识杂锦(三)

1.外部类,内部类,局部内部类
外部类:只能用public,default修饰符
内部类:可以用所有修饰符,此时内部类相当于外部类的一个成员变量
局部内部类:即方法中定义的类,只能用abstract,final,default修饰符,相当于一个局部变量。
代码示例:
public class Main
{
	int MainInt;
	public static void main(String[] args) {
		int localInnerInt=0;
		//局部内部类,与局部变量localInnerInt地位相同
		final class FinalLocalInnerClass{
		}
	}
	//内部类,与成员变量MainInt地位相同
	private class PrivateInnerClass{
	}
}


2.成员变量,局部变量
成员变量有初始值。局部变量没有初始值。
代码示例:
public class Main
{
	//MainInt无须赋值,其初始值为0
	int MainInt;
	public static void main(String[] args) {
		int localInt=0;
		//localInt必须赋值,否则代码会无法通过编译
		System.out.println(localInt);
	}
}


3.赋值语句也有返回值,详见代码
public static void main(String[] args) {
		boolean flag=false;
		if(flag=true){
			System.out.println("true");
		}
		else{
			System.out.println("false");
		}
	}

猜猜看,代码输出什么结果。编译错误,因为if里面不允许赋值语句?
答案是输出 true。
因为JAVA的赋值语句也有返回值,且其返回值为所赋的值。
我们把true值赋给了flag,所以flag=true也将返回一个boolean类型的值。

4.ThreadLocal
通过线程所持有的ThreadLocalMap类为每个线程提供一个独立的变量副本,解决变量并发访问的冲突问题。
以空间换时间来保证线程安全。

猜你喜欢

转载自leozam.iteye.com/blog/2389076