this和static

this和static

static

  • 静态变量

成员变量包括 【实例变量和静态变量】
实例变量是成员级别的,必须通过对象引用方式访问【存储在堆内存中
静态变量直接通过“类名”访问【存储在方法区中


什么情况下用静态变量?
package com.demo;

public class Man {
    //ID
    int Id_card;
    //sex
    static boolean sex = true;

    //有参数构造方法
    public Man(int I){
        this.Id_card = I;
    }
}
package com.demo;

public class ManTest {
    public static void main(String[] args) {
        Man man1 = new Man(222);
        Man man2 = new Man(333);
        System.out.println("ID:"+man1.Id_card+"-->性别"+Man.sex);
    }
}
运行结果

ID:222–>性别true

总结

每一个“男人对象”的身份证号都不一样,该属性应该每个对象持有一份,所以应该定义为实例变量,而每一个“男人对象”性别都是“男”,不会随着对象的改变而变化。【不占用堆内存空间】


  • 静态方法
方法在什么情况下会声明为静态的呢?

方法实际是描述对象的实际行为
跟实例方法的区别
实例方法: 我(对象)–>打篮球(行为)
你(对象)–>打篮球(行为)【效果是不一样的】
当方法体中需要直接访问当前对象的实例变量或者实例方法的时候----方法必须定义为实例方法
静态方法: “工具类”当中的方法一般定义为静态方法,因为工具类就是为了方便大家的使用,将方法定义为静态方法,比较方便调用,不需要创建对象,直接使用类名就可以访问。


this

package com.demo;

public class ThisTest {
    public static void main(String[] args) {
        Customer c1 = new Customer("张三");
        Customer c2 = new Customer("李四");
        c1.shopping();
        c2.shopping();
    }
}
//顾客类
class Customer{
    //实例变量
    String name;

    //构造方法
    public Customer(){
    }
    public Customer(String name){
        this.name = name;
    }
    //实例方法
    public void shopping(){
        //this指代当前对象
        //c1调用就是c1.name
        //c2调用就是c2.name
        System.out.println(this.name+"正在购物---"); //实例变量只能通过"引用."的方式进行访问
    }

}
运行结果

张三正在购物—
李四正在购物—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值