Java 基础之实例方法,实例变量,类方法,类变量

Java 基础之实例方法,实例变量,类方法,类变量实例变量(instancevariable)实例变量:或叫实例域、实例字段(instancefield),或叫成员变量(membervariable)。实例的变量,每个实例的变量可能不同。实例方法(instancemethod)实例方法:或叫成员方法(membermethod)。供实例用的方法,必须要先有实例,才能通过此实例调用实例方法。类变量(classvariable)类…

实例变量(instance variable)

实例变量:或叫实例域、实例字段(instance field),或叫成员变量(member variable)。实例的变量,每个实例的变量可能不同。

实例方法(instance method)

实例方法:或叫成员方法(member method)。供实例用的方法,必须要先有实例,才能通过此实例调用实例方法。

类变量(class variable)

类变量:或叫静态域、静态字段(static field),或叫静态变量(static variable)。出现在这样的情况下:一个类的所有实例需要一个公有的属性,比如,一,统计实例个数;二,常量。类变量与类直接关联在一起。内存当中只有一个地方存放这个变量。任何实例都可以修改它的值(前提是它没有被final修饰符修饰,不然就是常量),但是,访问类变量并不需要实例,用类就可以操作了。

类方法(class method)

类方法(class method):跟类变量的基本特点一样。供类用的方法,可以没有实例,直接通过类来调用类方法。
从形式上看,类变量和类方法,比一般的变量和方法多了一个static修饰符。因为这个原因,类变量和类方法也被叫做静态变量和静态方法。

使用方式

  • 实例方法可以直接访问实例变量,调用实例方法;
  • 实例方法可以直接访问类变量,调用类方法。但不推荐这么做,原因是不清晰,容易把类变量误认为是实例变量,把类方法误认为是实例方法(借助IDE,它会给出警告信息);
  • 类方法可以直接调用类变量和类方法;
  • 类方法不能直接调用实例变量和实例方法;
  • 类方法里面不能使用“this”关键字,因为没有实例存在,“this”不知道引用哪个实例。

程序代码:

public class Exam { 
   
    /** * 类变量 */
    public static String classVariable = "Class variable.";
    /** * 实例变量 */
    public String instanceVariable = "Instance variable.";

    /** * 类方法 */
    public static void classMethod() { 
   
        // 类方法可以直接调用类变量
        System.out.println("classVariable:" + classVariable);
        // error,类方法里面不能使用“this”关键字
        //System.out.println("instanceVariable:" + this.instanceVariable);
    }

    public static void classMethodTwo() { 
   
        System.out.println("Class method.");
        // 类方法可以直接调用类方法
        classMethod();
        // error,类方法不能直接调用实例变量和实例方法
        //instanceMethod();
        //System.out.println("instanceVariable:" + instanceVariable);
    }

    /** * 实例方法 */
    public void instanceMethod() { 
   
        System.out.println("Instance method.");
    }

    public static void main(String[] args) { 
   
        Exam instance = new Exam();
        // 通过实例引用调用类方法
        instance.classMethod();
        // 通过实例引用调用类变量
        System.out.println(instance.classVariable);
        // 通过实例引用调用实例方法
        instance.instanceMethod();
        // 通过实例引用调用实例变量
        System.out.println(instance.instanceVariable);
    }
}

注意这样一个特殊的情形:如果已有一个类变量,再定义一个方法去操作这个类变量。那么此方法可以不加static修饰符,本质上仍然是一个类方法。但是,现在就只能通过该类的一个实例,才能调用这个方法(常见于面试中)。

// 修改上述方法
public void instanceMethod() { 
   
        System.out.println("Instance method.");
        // 修改
        classVariable += "append";
        System.out.println("classVariable:"+classVariable);
}

字面量、常量和变量之间的区别

字面量是指由字母,数字等构成的字符串或者数值,它只能作为右值出现,所谓右值是指等号右边的值,如:int a = 123这里的a为左值,123为右值。
常量和变量都属于变量,只不过常量是赋过值后不能再改变的变量,而普通的变量可以再进行赋值操作。
例:

// a变量
int a;
// b为常量,10为字面量
final int b = 10;
// str为变量,hello world为字面量
String str = "hello world";

参考链接link

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/37741.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注