Java---类变量和类方法

本文深入探讨了Java中的类变量和类方法,包括它们的使用场景、注意事项和内存剖析。通过三个实践例子,阐述了类变量的共享特性以及类方法的调用过程。强调了static变量在不同JDK版本中的存储位置变化,并提醒读者注意在类方法中不能使用this关键字。
摘要由CSDN通过智能技术生成

类变量介绍

在这里插入图片描述

类变量使用注意事项和细节讨论

在这里插入图片描述
在这里插入图片描述

类方法介绍

在这里插入图片描述

类方法使用场景

在这里插入图片描述

类方法使用注意事项和细节讨论

在这里插入图片描述
在这里插入图片描述

类变量内存剖析

在这里插入图片描述

至于static变量到底是放在堆里面还是在方法区的静态域里面,是看JDK的版本决定的,JDK7及以下版本static变量在方法区的静态域中,
JDK7以上版本,静态域存储于定于类型的class对象宏,class对象如同堆中其他对象一样,存在于GC堆中

堆里面通过反射机制会加载一个class对象 
当你的类加载的时候,它会在堆里面生成一个它的类的class对象,class对象可以拿到很多类的信息,static变量保存在class实例的尾部
static变量是对象共享,不管static变量在哪,都有两点共识(1)static变量是同一个类所有对象共享
												  (2)static变量,在类加载的时候就生成了

练习

练习一

class Test {
    static int count = 9;
    public void count() {
        System.out.println("count=" + (count++));
    }
    public static void main(String args[]) {
        new Test().count(); //9
        new Test().count(); //10
        System.out.println(Test.count);	//11
    }
}

练习二

class Person {  
    private int id;
    private static int total = 0;
    public static int getTotalPerson() {
        //id++;//错误, 注销

        return total;
    }
    public Person() {//构造器
        total++;  //total = 1
        id = total;//id = 1
    }
}
class TestPerson {
    public static void main(String[] args) {
        System.out.println("Number of total is " +Person.getTotalPerson()); //0
        Person p1 = new Person();
        System.out.println( "Number of total is "+ Person.getTotalPerson()); //1
    }
}

练习三

class Person { 
    private int id;
    private static int total = 0;
    public static void setTotalPerson(int total){
        // this.total = total;//错误,因为在static方法中,不可以使用this 关键字

        Person.total = total;
    }
    public Person() {//构造器
        total++;
        id = total;
    }
    //编写一个方法,输出total的值
    public static void m() {
        System.out.println("total的值=" + total);
    }
}
class TestPerson {
    public static void main(String[] args) {

        Person.setTotalPerson(3);
        new Person(); //最后 total的值就是4
        Person.m();//看看输出的是不是4
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值