易错

static方法通常称做静态方法,因为静态方法不依赖于任何对象就能够进行访问,所以对于静态方法来讲,是没有this的,由于它不依附于任何对象,既然都没有对象,就谈不上this了。而且因为这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,由于非静态成员方法/变量都是必须依赖具体的对象才可以被调用。java

  可是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,可是在非静态成员方法中是能够访问静态成员方法/变量的性能

2)static变量优化

  static变量也称做静态变量,静态变量和非静态变量的区别是:静态变量被全部的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在建立对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。this

  static成员变量的初始化顺序按照定义的顺序进行初始化。spa

3)static代码块code

  static关键字还有一个比较关键的做用就是 用来造成静态代码块以优化程序性能。static块能够置于类中的任何地方,类中能够有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每一个static块,而且只会执行一次。对象

class Person{内存

     private  Date birthDate;
     private  static  Date startDate,endDate;
     static {
         startDate = Date.valueOf( "1946" );
         endDate = Date.valueOf( "1964" );
     }
     
     public  Person(Date birthDate) {
         this .birthDate = birthDate;
     }
     
     boolean  isBornBoomer() {
         return  birthDate.compareTo(startDate)>= 0  && birthDate.compareTo(endDate) <  0 ;
     }
}
public  class  Main {  
     static  int  value =  33 ;
 
     public  static  void  main(String[] args)  throws  Exception{
         new  Main().printValue();
     }
 
     private  void  printValue(){
         int  value =  3 ;
         System.out.println( this .value);
//33
     }
}
 

二、前缀自增自减法(++a,--a): 先进行自增或者自减运算,再进行表达式运算。string

三、后缀自增自减法(a++,a--): 先进行表达式运算,再进行自增或者自减运算 io

相关文章
相关标签/搜索