static关键字
static关键字最基本的用法是:
1、被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来
2、被static修饰的方法属于类方法,可以通过类名.方法名直接引用,而不需要new出一个类来
1、不使用static修饰的属性,我们叫实例变量。
2、不使用static修饰的方法,我们叫实例方法。
被static修饰的变量、被static修饰的方法统一属于类的静态资源,是类实例之间共享的,换言之,一处变、处处变。JDK把不同的静态资源放在了不同的类中而不把所有静态资源放在一个类里面,很多人可能想当然认为当然要这么做,但是是否想过为什么要这么做呢?主要有三个好处:
1、不同的类有自己的静态资源,这可以实现静态资源分类。比如和数学相关的静态资源放在java.lang.Math中,和日历相关的静态资源放在java.util.Calendar中,这样就很清晰了
2、避免重名。不同的类之间有重名的静态变量名、静态方法名也是很正常的,如果所有的都放在一起不可避免的一个问题就是名字重复,这时候怎么办?分类放置就好了。
3、避免静态资源类无限膨胀,这很好理解。
static的调用
成员的调用
类变量和类方法属于类,可以使用类名直接调用;
实例变量和实例方法属于对象,可以使用对象名直接调用;
所有类变量和类方法可以共享给对象使用,所以可以通过对象名调用类变量和类方法。
综上所述:对象可以调任何属性和方法,类只能调用类变量和类方法。
方法之间的调用
static静态方法可以直接通过类名来进行调用,
类方法只能直接调用成员变量和方法,不能直接调用实例化对象和方法。
实例化对象可以调用任何实例方法和实例变量,需要指定对象。
this关键字
(1)如果成员变量和局部变量(参数)重名
我们直接访问是局部变量(参数),无法访问成员变量。
如果我们想要访问成员变量,需要在前面加this:
this.成员变量名
注意:this表示的是当前对象。
例如
private String name;
public Area(String name){
this.name=name;
}
(2)构造器之间相互调用
如果多个构造器之间有重复的代码,那么我们可以通过使用this(实参)来调用其它构造器,从而避免重复代码的定义。
用法:this(实参);
注意:调用不会产生新对象,只是执行方法体中的初始化代码而已。
例如下面这段代码
public class WuMingFen {
public String theMa;
public int quantity;
public boolean likeSoup;
public WuMingFen() {}
public WuMingFen(String theMa) {
this.theMa=theMa;
}
public WuMingFen(String theMa,int quantity) {
this(theMa);
this.quantity=quantity;
}
public WuMingFen(String theMa,int quantity,boolean likeSoup) {
this(theMa,quantity);
this.likeSoup=likeSoup;
}
public void check() {
System.out.println("粉的属性:面码为:"+theMa+",分量为:"+quantity+",是否带汤:"+likeSoup);
}
}
(3)返回对象的值
this关键字除了可以引用变量或者成员方法之外,还有一个重大的作用就是返回类的饮用。如在 代码中,可以使用return this,来返回某个类的引用。此时这个this关键字就代表类的名称。如这个代 码在上面这个student类中,那么这个代码其代表的含义就是return student。可见,这个this关键字除 了可以引用变量或者成员方法之外,还可以做为类的返回值。这才是this关键字最引人注意的地方。