java static方法 this_Java static静态方法

Java static静态方法

方法在什么情况下会声明为静态的呢?方法实际上描述的是行为动作,我认为当某个动作在触发的时候需要对象的参与,这个方法应该定义为实例方法,例如:每个玩篮球的人都会打篮球,但是你打篮球和科比打篮球最终的效果是不一样的,显然打篮球这个动作存在对象差异化,该方法应该定义为实例方法。再如:每个高中生都有考试的行为,但是你考试和学霸考试最终的结果是不一样的,一个上了“家里蹲大学”,一个上了“清华大学”,显然这个动作也是需要对象参与才能完成的,所以考试这个方法应该定义为实例方法。

以上描述是从设计思想角度出发来进行选择,其实也可以从代码的角度来进行判断,当方法体中需要直接访问当前对象的实例变量或者实例方法的时候,该方法必须定义为实例方法,因为只有实例方法中才有this,静态方法中不存在this。请看代码:

public class Customer {

String name;

public Customer(String name){

this.name = name;

}

public void shopping(){

//直接访问当前对象的name

System.out.println(name + "正在选购商品!");

//继续让当前对象去支付

pay();

}

public void pay(){

System.out.println(name + "正在支付!");

}

}

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

public class CustomerTest {

public static void main(String[] args) {

Customer jack = new Customer("jack");

jack.shopping();

Customer rose = new Customer("rose");

rose.shopping();

}

}

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

运行结果如下图所示:

96583cc2714924b8171f9936c9fed35e.png

图11-26:运行结果

在以上的代码中,不同的客户购物,最终的效果都不同,另外在shopping()方法中访问了当前对象的实例变量name,以及调用了实例方法pay(),所以shopping()方法不能定义为静态方法,必须声明为实例方法。

另外,在实际的开发中,“工具类”当中的方法一般定义为静态方法,因为工具类就是为了方便大家的使用,将方法定义为静态方法,比较方便调用,不需要创建对象,直接使用类名就可以访问。请看以下工具类,为了简化“System.out.println();”代码而编写的工具类:

public class U {

public static void p(int data){

System.out.println(data);

}

public static void p(long data){

System.out.println(data);

}

public static void p(float data){

System.out.println(data);

}

public static void p(double data){

System.out.println(data);

}

public static void p(boolean data){

System.out.println(data);

}

public static void p(char data){

System.out.println(data);

}

public static void p(String data){

System.out.println(data);

}

}

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

运行结果如下图所示:

a2f42a7c71d311f8f9ab146cc07ff43c.png

图11-27:测试工具类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值