山川云数据(河南)有限公司欢迎您!

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

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

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软件开发价格 qq农场这样的游戏开发 网站建设方案公司 网络销售怎样推广 河南分销平台 网络推广有效方法 软件开发服务公司 网络建设公司 热门手机app排行榜 郑州软件学校 分销商城哪个好 做分销商城多少钱 企业网络推广的优点 怎么做分销商城 软件开发实例 网络产品推广 网络推广内容 后台分析软件 直销管理软件 app开发郑州 网络营销平台 在网络上推广 电话网络营销技巧 做直销软件吗 直销软件编程