【Day3】每日学Java--》详解java中的static成员
创始人
2024-04-20 06:02:08

大家好,我是良辰丫,今天我和大家分享的是java中的static成员,static说难不难,说简单也不简单,主要是细节,很多情况下,你使用了static,却不知道为什么会报错,嘿嘿嘿,细节决定成败,不要着急,我们慢慢往下说。💖💖💖

🧑个人主页:良辰针不戳
📖所属专栏:EveryDay学java
🍎励志语句:生活也许会让我们遍体鳞伤,但最终这些伤口会成为我们一辈子的财富。
💦期待大家三连,关注,点赞,收藏。
💞愿与君为伴,共探Java汪洋大海。


目录

  • 1、简述static
  • 2、static修饰成员变量
  • 3、static修饰成员方法
  • 4、static成员变量初始化
  • 5、总结static


1、简述static

static在英文中的意思是静态的,因此呢,它也具有了很多静态的属性,但是它和大家所学的C语言里面的static是不同的,为什么呢?因为java中的static属于类,而C语言没有类这个概念。文字说的再多也不够生动,大家也不能够理解,那我们先拿例子简单理解一下。
①没有static修饰的成员属性被func方法调用,即使num是public,它也没有直接调用的权利。
在这里插入图片描述
②调用前new一个对象,通过对象进行调用就不会报错,理解困难的话大家可以想象成你要向别人借东西,必须先和别人说一下,new可以理解为申请权限。
在这里插入图片描述
③是不是突然发现很神奇,num被static修饰后,可以直接调用了,这就验证了static修饰的成员属性属于类,而不是对象,为什么可以直接调用呢?因为对象也属于类,他们两个平起平坐。
在这里插入图片描述

看完上面,想必大家已经对java中的static有了一定的了解,我们接下来继续介绍static的具体用法。

2、static修饰成员变量

static修饰的成员变量,称为静态成员变量,静态成员变量最大的特性:不属于某个具体的对象,是所有对象所共享的。还是那句话,可以理解为static修饰的成员变量和对象平起平坐。

  • 不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中。
  • 既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问。
  • 类变量存储在方法区当中。
  • 生命周期伴随类的一生(类结束生命周期,static也将结束)

①name和main方法在同一个类中,直接通过name就可以调用。

在这里插入图片描述
②main方法和name在不同的类中,只通过name调用会报错。
在这里插入图片描述
③static修饰的成员属性,通过类名.属性名字就可以调用,通过对象也可以调用,但是介意大家使用类名调用,因为static修饰的属性本来就属于类。
在这里插入图片描述
④static修饰的属性通过对象进行访问。
在这里插入图片描述

3、static修饰成员方法

一般而言,我们在类中定义成员属性的时候,我们总会把属性弄成私有的private,保证程序的安全。那么我们如何调用这个属性呢?
①把该属性的值传给一个静态方法,通过调用该方法达到传值目的。
在这里插入图片描述
②方法不是静态的时候,直接调用时会报错,注意是直接调用报错,而不是不能调用。
在这里插入图片描述
③通过对象调用方法,也能达到调用的目的。
在这里插入图片描述

静态方法特性:

  1. 不属于某个具体的对象,是类方法。
  2. 可以通过对象调用,也可以通过类名.静态方法名(…)方式调用,更推荐使用后者。
  3. 不能在静态方法中访问任何非静态成员变量(或者成员方法)。
  4. 静态方法无法重写,不能用来实现多态。

4、static成员变量初始化

  • 静态成员变量一般不会放在构造方法中来初始化,构造方法中初始化的是与对象相关的实例属性。
  • 静态成员变量的初始化分为两种:就地初始化 和 静态代码块初始化。
  1. 就地初始化
    就地初始化指的是:在定义时直接给出初始值。
    在这里插入图片描述
  2. 静态代码块初始化。
    在这里插入图片描述
  3. 下面的初始化就会报错。
    在这里插入图片描述

5、总结static

看了上面那么多,其实内容没大家想的那么理解,熟悉了就会很简单,谁一生下来就会跑呢?那么我们简单的做一下总结。

  • 静态方法不能直接调用非静态变量(成员方法),若用,通过对象调用。
  • 非静态的方法可以使用类的静态或非静态成员。
  • 在方法中,static不能修饰属性,如 static int num = 10;
  • 系统仅为系统单元分配一个存储单元,所有对象共享这个静态成员变量,若某个对象修改了静态成员变量的值,所有对象使用的都将是修改后的静态成员变量值。
  • 静态成员方法可以通过类名访问,即不需要实例化就可以调动静态成员方法,同时也可以通过对象名访问。

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...