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);
}
}
二、前缀自增自减法(++a,--a): 先进行自增或者自减运算,再进行表达式运算。string
三、后缀自增自减法(a++,a--): 先进行表达式运算,再进行自增或者自减运算 io