Java内存思维

1-Java方法与属性调用

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

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

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值