Java内存思维

来源:互联网 发布:tomcat连接池配置优化 编辑:程序博客网 时间:2024/06/10 21:11

1-Java方法与属性调用

Java中调用属性与方法有什么规则?
不同的对象之间:
访问类的静态属性:类名.属性;对象名.属性
访问类的动态属性:对象名.属性
调用类的静态方法:类名.方法名();对象名.方法名()
调用类的动态方法:对象名.方法名()
同一个对象之间:
访问类的动态属性:对象名.属性
访问类的静态属性:类名.属性;对象名.属性
调用类的动态方法:方法名();对象名.方法名
调用类的静态方法:类名.方法名();对象名.方法名

2-内存思维
静态调用的内存理解:
这里写图片描述

这里写图片描述
动态调用的内存理解:
这里写图片描述
这里写图片描述
下面例子为什么有这样的输出结果?从内存的角度理解。
因为new出一个新的内存来存放动态属性,改变一个对象内的动态属性并不改变TestA和其他对象内的动态属性。动态属性的存放是各自独立,互不影响的。
这里写图片描述
这里写图片描述

下面例子为什么有这样的输出结果?从内存的角度理解。
因为new出来的对象是通过引用TestA来开辟内存空间的,ta1和ta2都可以直接调用静态属性和方法,所以当其中的一个对象调用后改变了静态属性和方法,其它的对象再次调用时,这个值会变成前一个对象调用后改变的值
这里写图片描述
这里写图片描述

什么时候用静态属性?什么时候用动态属性?
当属于每一个新建的类特有的属性时用动态属性;属于所有的类公用的属性时使用动态属性。
希望共享的内容设置为静态属性,不共享的内容设置为动态属性。

类内部动态方法调用动态属性/方法为什么可以不new?
因为它们在同一个类中。即它们放在同一个内存块中,可以直接调用。

TestA ta = new TestA();与TestA ta = null;的区别?
有new,内存才会对这个对象的动态属性分配内存空间。第二种分配了内存空间,但内存中不存在动态属性。

0 0
原创粉丝点击