让星星⭐月亮告诉你,为啥就只加了一个static就让程序连最简单的+1操作都不会了?究竟实例变量和静态变量之间藏着什么秘密?

41 篇文章 0 订阅
24 篇文章 0 订阅

零、⭐⭐⭐前情提要🌙🌙🌙

实例变量(也称成员变量),在类的实例对象被创建时,会先按照实例变量的先后顺序被赋初始默认值,然后再按照实例赋值语句先后的顺序进行实例变量的赋值操作,最后执行构造方法。
静态变量(也称类变量),在类初始化的时候,会先按照静态变量的先后顺序被赋初始默认值,然后再按照静态赋值语句先后的顺序进行静态变量的赋值操作。
这里还搞不大清楚没关系,让我们来演示推敲一番:

一、⭐⭐⭐实例变量版本演示代码🌙🌙🌙

class InstanceObj{
	public  static InstanceObj obj= new InstanceObj();
    public  int x;//注意此处无赋值操作
    public  int y = 0;
    private InstanceObj() {
        x++;
        y++;
    }
}
public class TestInstanceVariable{
    public static void main(String[] args) {
    	InstanceObj obj = InstanceObj.obj;
    	System.out.println("x=" + obj.x);
        System.out.println("y=" + obj.y);
    }
}

二、⭐⭐⭐成员变量版本演示结果🌙🌙🌙

x=1
y=1

三、⭐⭐⭐静态变量版本演示代码🌙🌙🌙

class StaticObj{
	public static StaticObj obj= new StaticObj();
    public  static int x;//注意此处无赋值操作
    public  static int y = 0;
    private StaticObj() {
        x++;
        y++;
    }
}
public class TestStaticVariable{
    public static void main(String[] args) {
    	StaticObj obj = StaticObj.obj;
    	System.out.println("x=" + obj.x);
        System.out.println("y=" + obj.y);
    }
}

四、⭐⭐⭐静态变量版本演示结果🌙🌙🌙

x=1
y=0

五、⭐⭐⭐结果分析🌙🌙🌙

一开始看到这个结果时,也是纳闷了好一阵子… 两个版本的代码区别就只是:变量x,y是否加了static修饰。为啥执行结果会如此不同呢?这就要回到一开始提到的实例变量和成员变量在初始化时候的不同处理方式了,完整的分析过程如下:
实例变量:
⭐1、先按照实例变量的定义顺序分别为实例变量赋默认值,也就是x=0 y=0;
⭐2、接着,在执行构造方法的时候对x和y分别做了加1的操作,结果自然是:x=1 y=1。
静态变量:
⭐1、先按照静态变量的定义顺序分别为每个静态变量赋默认值,即:obj=null x=0 y=0;
⭐2、再按照赋值语句顺序为对应的静态变量赋值,即 obj = new StaticObj();
⭐3、执行new StaticObj()时会调用构造方法,执行x和y的加1操作,即x=1 y=1;
⭐4、然后执行后续的赋值操作,由于x没有定义赋值操作所以x的值仍是1,而y定义了赋值操作y=0,所以y的1的值被0右覆盖掉了,故最终的结果是x=1 y=0。
Do you get it?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 下面是一个使用Java语言编写的最简单的程序: ``` public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } ``` 这是一个打印“Hello, World!”的程序。它使用了Java语言的基本结构:类,方法和语句。程序的主要部分是`main`方法,它被称为程序的入口。该方法通过使用`System.out.println`语句将字符串“Hello, World!”输出到控制台。 ### 回答2: 使用JAVA写一个最简单的程序非常简单,可以通过编写一个简单的Hello World程序来展示。 ```java public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } ``` 这是一个最基本的JAVA程序,它定义了一个公共的类HelloWorld,并在该类中定义了一个公共的静态方法main。在main方法中,使用System.out.println打印输出了一句"Hello, World!"。 要运行这个程序,只需要将以上代码保存为HelloWorld.java文件,然后使用JAVA编译器将其编译成字节码文件HelloWorld.class,在命令行中进入到保存该文件的目录,执行以下命令: ``` javac HelloWorld.java // 编译程序 java HelloWorld // 运行程序 ``` 这样,就可以在命令行中看到输出的"Hello, World!"。这个简单的程序展示了JAVA的基本语法和运行方式,是初学者入门的一个基础示例。 ### 回答3: 使用JAVA编写一个最简单的程序可以是输出一条简单的语句。可以使用如下代码完成: ```java public class SimpleProgram { public static void main(String[] args) { System.out.println("Hello, World!"); } } ``` 以上代码定义了一个名为`SimpleProgram`的类,并在`main`方法中使用`System.out.println()`来输出一条字符串"Hello, World!"。当程序运行时,控制台将显示这条消息。 这是一个非常简单的JAVA程序,可以作为初学者入门编程的一个练习。通过修改输出语句中的内容,可以输出其他自定义的消息。Java的语法相对简洁清晰,适合编写各类程序,无论是简单的还是复杂的。使用JAVA编写程序可以实现不同的功能,包括计算、处理数据、创建图形界面和网络应用等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dylanioucn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值