Java变量

成员变量

  成员变量也称为实例变量,成员变量位于类中,但是在方法之外,并且只有在类实例化时候才初始化成员变量,成员变量是属于每一个唯一对象的字段,成员变量可以用final、static、private、protected、public、default修饰,不能用transient,abstract,synchronized,strictfp,native修饰。

 

局部变量

  局部变量是声明在方法内的变量,这指变量不仅在方法内初始化,而且也在方法内声明,局部变量的生命周期从方法开始一样,当该方法完成时它也被删除,局部变量总是位于栈上,而不是堆上。

 

  局部变量声明不能使用public、private、protected、transient、volatile、abstract、static修饰,可以使用final修饰。在使用局部变量时候,他必须被初始化。局部变量没有默认值,所以它必须被显式的初始化。

最终变量

  final关键字声明变量将使该变量一旦被一个显式值初始化之后就不可能再重新初始化,对于原始类型,一旦变量赋值之后,该值就不能修改。如果对于对象引用用final修饰,那么表示该引用不能指向其他对象,但是可以更改这个对象引用里实例变量的值。

瞬态变量

  如果把成员变量用transient修饰,那么这样是告诉JVM当时图串行化声明这个变量的对象时候忽略它。

静态变量

  如果有一个方法,那么这个功能与哪一个类的实例执行这个方法没有任何关系,其行为总相同的。用static标识的变量和方法属于这个类,而不是属于任何类具体的实例,那么这样则可以使用"类名.变量名or方法名“去使用静态变量和静态方法,而需要使用该类的任何实例,不需要构造出对象。但是如果构造出一个实例对象,那么该用static修饰的变量或方法则共属于类和实例对象。那么既然非static修饰的成员变量是属于类的实例,那么如果在一个static修饰的方法中去调用一个非static方法or变量,由于没有构造对象,那么此时这个被调用的变量or方法是由哪一个对象调用是不清楚的,编译器不可能给出答案,所以必然是会报错。所以,无法在静态上下文引用非静态的变量or方法。

  静态调用

    

 

posted @ 2018-01-30 21:18  真有才!  阅读(94)  评论(0)    收藏  举报