山川云数据欢迎您!

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

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

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

快捷导航

惠购手机app 网络营销效果 seo网络营销推广公司 新媒体网络营销 郑州市的软件公司 网络推广有效方法 网络推广贵吗 郑州app开发制作公司 管理系统快速开发平台 北京网络营销服务 怎么在网络上推广 网络营销整体解决方案 郑州微分销系统 专业app开发公司 河南网络推广公司 互联网软件开发 郑州网站seo优化 广电网络营销方案 网络推广初学者 网络推广有几种方式 郑州seo哪家好 开发app软件 o2o软件开发 网络推广怎样做 建设网站公司 郑州专业网站制作 网络营销策划专家 企业信息系统开发软件 软件app用什么开发 郑州排名优化