java中静态与非静态理解

对于静态变量(方法)与非静态变量(方法)的理解:

static 声明的变量和方法在类中共享的,当使用static修饰变量时,在类中是共享。例如:在下列代码中定义静态变量i = 10时,当类创建了多个对象时,其中一个对象修改了i的值(ts1.i = 100),其他对象ts2、ts3调用i值时,会出现i值都是100,说明静态变量i是共享。

非静态变量:当类中创建多个对象时,非静态变量在内存中直接分布各个新创建的对象中。所以当修改某个对象引用的变量值时,其他对象在引用变量时,没有发生改变。例如:j =20 ;ts1.j = 15;此时ts1对象输出 j=15 .而输出的ts2.j=20,ts3.j=20跟初始定义的j一样;

静态static的使用:1、工具类使用;2、定义常量;3、单例模式

具体代码理解:

public class TestStatic {
public static int i =10;
public int j = 20;
public static void main(String[] args){
TestStatic ts1 = new TestStatic();
TestStatic ts2 = new TestStatic();
TestStatic ts3 = new TestStatic();
ts1.j = 200;
ts1.i = 0;
System.out.print(ts1.j + "\t");
System.out.print(ts2.j + "\t");
System.out.println(ts3.j + "\t");
System.out.print(ts1.i + "\t");
System.out.print(ts2.i + "\t");
System.out.print(ts3.i + "\t");
}

}

实验结果:

深入理解,下面是对于静态变量与非静态变量的java内存分配:

(自己第一次写写,想锻炼自己思维与组织语言能力,不喜勿喷!)


猜你喜欢

转载自blog.csdn.net/weixin_41387375/article/details/80545430