首页 > 编程语言 >java中的static关键字

java中的static关键字

时间:2022-09-24 16:47:09浏览次数:44  
标签:java 变量 静态 Demo 代码 关键字 static println

引言

  通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员声明前面加上static关键字就能创建这样的成员。static翻译过来是静态的,他可以用来修饰变量和方法。被static修饰的变量称为静态变量或类变量。被static修饰的方法称为静态方法或类方法。

main方法解析

  static成员最常见的例子就是main()。因为在程序开始执行时必须调用main()方法。

public static void main(String[] args){}
  • public被jvm调用,访问权限足够大。
  • static被jvm调用,不用创建对象,直接类名访问。
  • void被jvm调用,不需要给jvm返回值。
  • main一个通用的名称,虽然不是关键字,但是被jvm识别。
  • String[] args 以前用于接收键盘录入的。

  通过对main方法的解析,我们大概对static有一个了解。接下来我们引用一些例子来认识一下static。

static的特点

  • 随着类的加载而加载
  • 优先于对象存在
  • 被类的所有对象共享
  • 可以通过类名调用
  • 注意:
    • 在静态方法中不可以使用this关键字。
    • 静态方法只能访问到静态的成员变量和静态的成员方法

例:

public class Demo{
    String name="tom";
    static int age=20;
} 
public static void main(String[] args){
    Demo d1=new Demo();
    d1.name="tim";
    d1.age=18;
    Demo d2=new Demo();
    d2.name="tian";
    d2.age=30;
    System.out.println(d1.name);
    System.out.println(d1.age);
    System.out.println(d2.name);
    System.out.println(d2.age);
}

这道题的输出结果为:

tim
30
tian
30

 静态变量和成员变量的区别

  • 二者所属不同
    • 静态变量属于类,所以也称为类变量
      • 例:static int a;
    • 成员变量属于对象,所以也称为实例变量(或对象变量)
      • 例:int a;
  • 二者在内存中所处位置不同
    • 静态变量存储于方法区的静态区
    • 成员变量存储于堆内存
  • 二者在内存中出现的时间不同
    • 静态变量随着类的加载而加载,随着类的消失而消失(与类同生共死)
    • 成员变量随着对象的创建而存在,随着对象的消失而消失
  • 二者调用不同
    • 静态变量可以通过类名调用,也可以通过对象调用
    • 成员变量只能通过对象调用

静态代码块

  • 在了解静态代码块之前我们可以先了解一下代码块。在java中,用{}括起来的代码被称为代码块,根据其位置和声明不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块。
  • 局部代码块在方法中出现,限定变量生命周期,及早释放,提高内存利用率。
  • 构造代码块在类中方法外出现,多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行。
  • 静态代码块在类中方法外出现,用static修饰,用于类的初始化,在加载的时候执行,并且只执行一次。
  • 三者的执行顺序是:静态代码块>构造代码块>构造方法

例:

 

public class Demo{
    static{
        System.out.println("大哈");
    }
    {
        System.out.println("大哈真帅");
    }
    public Demo(){
        System.out.println("大哈真的很帅");
    }
}
public class De{
    static{
        System.out.println("DaHa");
    }
    public static void main(String[] args){
        System.out.println("DaHa帅");
        Demo d1=new Demo();
        Demo d2=new Demo();
    }
}

这道例题答案是

DaHa
DaHa帅
大哈
大哈真帅
大哈真的很帅
大哈真帅
大哈真的很帅

  按照静态代码块>构造代码块>构造方法的执行顺序,先执行De中的静态代码块“DaHa”,再执行main方法,先输出“DaHa帅”,再执行d1,d1即Demo,在Demo中先执行静态代码块,输出“大哈”,再执行构造代码块,输出“大哈真帅”,最后是构造方法,输出“大哈真的很帅”,最后执行d2,依然是Demo,但是因为已经执行过静态代码块,所以本次不再执行,只用执行后两个。

本期到此结束,欢迎补充~

标签:java,变量,静态,Demo,代码,关键字,static,println
From: https://www.cnblogs.com/daha123/p/16725914.html

相关文章

  • 计算机毕业设计 SpringBoot+Vue零食商城平台系统 零食网上商城系统 零食购物商城系统J
    ......
  • 力扣23(java)-合并k个升序链表(困难)
    题目:给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例1:输入:lists=[[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4......
  • my.java
    packagecn.ac.cti.txfz.common.szs;importcn.ac.cti.txfz.common.constant.BaseEnum;importcn.ac.cti.txfz.common.constant.InfoEnum;importio.swagger.annotatio......
  • 二 Java流程控制
    java流程控制Scanner对象实现程序和人的交互,通过Scanner类来获取用户的输入。Scanners=newScanner(System.in);通过Scanner类的next()与nextLine()方法获取输入......
  • 三 Java方法
    Java方法什么是方法Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合。方法包含于类或对象中。方法在程序中被创建,在其他地方被引......
  • Java基础 (1)
    IJ的使用快捷键:ctrl+d复制当前行到下一行psvmpublicstaticvoidmain(String[]args){}soutSystem.out.println();Java基础1.注释注释包括单行注释,......
  • java static
    1.static关键字的目的:   主要用于内存管理2.static关键字的范围:     1)使用范围:javastatic关键字可以用在变量、方法、代码块和嵌套类伤。   2)作......
  • JavaScript 的闭包(closure)
    以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「englyf」https://www.cnblogs.com/englyf/对于闭包的理解,其实可以归纳为,在创建函数时,同时创建了一个集......
  • Java 静态字段和静态方法
    在一个class中定义的字段,我们称之为实例字段。实例字段的特点是,每个实例都有独立的字段,各个实例的同名字段互不影响。还有一种字段,是用static修饰的字段,称为静态字段:stati......
  • Java 包(package) (不重要)
    为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。包的作用1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。2、如同文件夹一样,包也......