山川云数据欢迎您!

知网和您谈---【Java基础】static关键字相关

作者:创始人 日期:2020-06-12 人气:2258

static关键字特点:

  • 随着类的加载而加载。
  • 优先于对象存在。
  • 被所有对象共享
  • 可以直接被类名调用。

    使用注意:

  • 静态方法只能访问静态成员。
  • 但非静态成员可以访问静态成员。
  • 静态方法中不能使用this,super关键字。
  • 主方法(main)是静态的。

    看了上面是不是想睡觉了,单纯的概念是挺烦人的,那下面让我们在实际代码中来加深对他们的认知。

    方法的调用可以分为两种:

  1. 对象调用: 对象.方法(实参)
  2. 类调用: 这个方法所在类的名字.方法(实参)//前提是这个方法必须被static修饰。

    没有使用static修饰的方法或字段,属于对象。为实例成员。

    使用static修饰的方法或字段,属于类。为类成员。

    对他们的调用:

    若是实例成员:只能通过对象来调用。

    若是类成员:可以通过类名调用,也可以通过对象来调用。

    好吧,下面小程序来了。

class dog//一群狗狗
{
    String name;
    int age;//没有使用static修饰,属于对象,为实例成员。
    //狗的名字,年龄,每只狗都不同,能随意变。

    static int num=100;//使用static修饰,属于类,为类成员。
    //而狗的总数是不变的。
}
class day5lesson2
{
    public static void main(String[] args)
    {
        System.out.println("通过类名来调用类成员-->"+dog.num);//编译通过
        //System.out.println("通过类名来调用实例成员-->"+dog.name);//编译不通过
        System.out.println("通过对象来调用类成员-->"+new dog().num);//运行通过
        System.out.println("通过对象来调用实例成员-->"+new dog().name);//运行通过
    }
}

上面代码中被注释掉的不能通过的代码的错题提示如下:

    上面程序也说明了上面提到的:若是实例成员:只能通过对象来调用。若是类成员:可以通过类名调用,也可以通过对象来调用。但是在调用类成员时建议用类名来调用,因为在底层,对象来调用类成员,也会转换为类名调用。

    下面必须提到的是:静态区域。它是在JVM内存中的一块专门存储类成员的存储区域。

    我们修改一下上面一段程序的主方法:

class dog//一群狗狗
{
    String name;
    int age;//没有使用static修饰,属于对象,为实例成员。
    //狗的名字,年龄,每只狗都不同,能随意变。
    static int num=100;//使用static修饰,属于类,为类成员。
    //而狗的总数是不变的。
}
class day5lesson2
{
    public static void main(String[] args)
    {
        dog d1=new dog();
        dog d2=new dog();//声明2个对象

        d1.num=111;//用d1修改类成员。
        System.out.println("d1.num="+d1.num);
        System.out.println("d2.num="+d2.num);//输出

        d1.age=111;//用d1修改实例成员。
        System.out.println("d1.age="+d1.age);
        System.out.println("d2.age="+d2.age);//输出
    }
}


结果如下:

    为什么是这种结果呢?这就是static修饰的字段属于类成员,存储在专门的静态区域中。(PS:在类加载时就为其创建空间,所以比较消耗性能)。一般 static方法用在做工具类的方法的时候,如Arrays类(java.util.Arrays)中,大量使用static方法,可在JDK API中查看。

    而没被static修饰的age(实例成员)则不会有这种效果。(PS:int定义一个数字默认值为0,所以d2.age输出0)


你觉得这篇文章怎么样?

00

快捷导航

网络营销推广策划方案 互联网营销策划方案 开发软件直销 单品营销策划 网站建设制作公司 直销系统软件公司 网络推广的平台 市场营销策划服务 网络营销策划外包 微商城3级分销 app软件开发需多少钱 合作网络推广公司 app软件开发教育 管理软件开发平台 商城二级分销 组织网络营销 网络推广解决方案 网络推广营销 建设公司网页 软件开发与维护 服务营销策划与推广 网络营销中小企业解决方案 双轨直销软件公司 网路推广 河南建网站公司 郑州设计app 软件开发云平台 电话软件直销 开发 直销软件吗 推广网络营销