山川云数据欢迎您!

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

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

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软件开发入门 新公司如何推广 如何在网络做推广 水果网络营销方案 直销商城软件 正规网络推广 怎么在网络推广营销 安卓软件开发 直销软件多少钱一个 手机网站建设公司 一般做网络推广的有哪些