成员变量会被初始化,局部变量不会被初始化。
package com.lcx.sort;
public class Test {
static int i;
public static void main(String[] args){
int j;
System.out.println(i); //0
System.out.println(j); //报错:initialize variable
}
}
先看一段代码,在一个方法中定义一个int 变量
public void delete(){undefined
private int a = 4;
}
如果在idea工具开发中,编译时期会提醒我们有错,错误提示是删除a的修饰符private,那为什么局部变量前不能用pirvate等修饰符呢?
因为局部变量本身就是一个访问权限的设定。只能在局部调用,也就是说局部变量的生命周期在方法体{}之中,除了这个方法外界是没办法访问你这个变量,
所以不需要用任何修饰符修饰,比如private,public,protected等,也不能加static静态的关键字,但是能加final。
因为static只能修饰成员变量和成员方法,在局部变量中用static修饰,又不能直接被类调用,而static关键字就是不直接经过对象而用类名就可以直接调用的。
所以局部变量前不能加static关键字