java Static
文章内容发布于 6 天前;最后修改于 6 日前。其中的信息可能发生变化或产生更改,敬请留意。

static 静态

static静态,是存在类中的概念的,表示静态。可以修饰成员方法、也可以修饰成员变量。

static修饰的成员变量,叫做静态变量。

static修饰的成员方法,叫做静态方法。

静态变量

static修饰的成员变量,叫做静态变量。

静态变量的特点

  • 静态变量被该类的全部对象共享
  • 不属于对象,属于类
  • 随着类的加载而加载,优先于对象存在

静态变量的调用方法

  • 通过类名调用【推荐】:<类名>.<静态变量名>
  • 通过具体的对象的对象名调用:<对象名>.<静态变量名>

代码如下

public class MyStaticClass {
    public static void main(String[] args) {
        myCatsFriend cat1 = new myCatsFriend("linCat", "Ginger");
        myCatsFriend cat2 = new myCatsFriend("bingCat", "Calico");
        cat1.showCat();
        cat2.showCat();
        myCatsFriend.catMaster = "SakuraNyako"; // 通过类名访问
        cat1.showCat();
        cat2.showCat();
        cat1.catMaster = "SakuraLeffay"; // 通过具体的对象名访问
        cat1.showCat();
        cat2.showCat();
    }

}
class myCatsFriend {
    public String catName;
    public String catTpye;
    public static String catMaster;
    public myCatsFriend(String catName, String catTpye) {
        this.catName = catName;
        this.catTpye = catTpye;
    }
    public void showCat() {
        System.out.println(catName + "\t" + catTpye + "\t" + catMaster);
    }
}

运行结果

在上面的例子中,myCatsFriend.catMaster = "SakuraNyako";是通过类名访问,cat1.catMaster = "SakuraLeffay";是通过变量名访问。因为是静态对象,所以无论什么方法访问对象,都是访问的同一个对象。

静态变量是随着类的加载而加载的,优先于对象出现。也就是在加载类的时候,静态区(元空间)就创建了静态变量的内存空间,而对象所属的内存的创建,是等到使用new关键字创建对象后才开辟对应在堆内存的内存空间。事实上,所有被**static**关键字修饰的,无论是静态变量还是静态方法,均是类加载后立刻在堆内存的静态区开辟对应内存空间。

关于内存的空间需要注明的是:JDK 8之前:静态变量存储在方法区(PermGen);JDK 8及以后:静态变量存储在堆内存的元空间(Metaspace)

static关键字修饰的静态内容,无论是静态变量还是静态方法,在内存中只存储一份。

静态方法

static修饰的成员方法,叫做静态方法。

静态方法的特点

  • 多用于测试类和工具类中
  • 在Javabean类中极其少用

静态方法的调用方法

  • 在静态方法所在的类中,直接调用。
  • 通过类名调用【推荐】:<类名>.<静态方法名>
  • 通过具体的对象的对象名调用:<对象名>.<静态方法名>

说明

各种类的说明

  • Javabean类:主要用于封装数据,需要符合Javabean规范。
  • 测试类:用于检查其他类是否书写正确,带有main方法的类,是程序的入口。
  • 工具类:包含通用的、与具体业务无关的功能,方法都是静态方法(static);构造方法私有化(即构造方法使用private修饰),防止实例化。

静态方法的说明

虽然静态方法可以存在在各种类中,但是绝大部分场景下都是存在在工具类中的。工具类由于是构造方法私有化,所以如果静态方法存在于工具类中,是无法通过具体的对象名来调用的。

static的注意事项

  1. 静态方法只可以访问静态变量和静态方法;
  2. 非静态方法可以访问静态变量、或者静态方法,同时非静态方法可以亦可以访问非静态成员变量、或者非静态的成员方法;
  3. 静态方法中,没有this关键字;

简单来说,就是静态方法只能访问静态,非静态方法可以访问所有,静态方法没有**this**关键字。

文章「java Static」,由本站用户「Admin」发布。文章仅代表Admin观点,不代表本站立场。
页面网页地址「https://xiaozhiyuqwq.top/p/2841」。
如您对文章及其附件提出版权主张,或进行引用转载等,请查看我们的【版权声明】
本页面暂时没有评论......

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇