$%&'('的实现过程:首先栈区创建 $ 引用,然后在 池(独立于栈和堆而存
在,存储不可变量)中寻找其指向的内容为'('的对象,如果 池中没有,则创建一个,然
后 $ 指向 池中的对象,如果有,则直接将 $% 指向'('';
如果后来又定义了字符串变量 $&'('则直接将 $ 引用指向 池中已经存在的
“(),不再重新创建对象;
当 $% 进行了赋值($%&*()),则 $% 将不再指向'(',而是重新指 池中
的'(',此时如果定义 $+&'('进行 $%&&$+ 操作,返回值为 ,因为他们
的值一样,地址一样。
但是如果内容为'('的 $% 进行了字符串的,连接 $%&$%,'';此时 $% 指向的是在堆中
新建的内容为'('的对象,即此时进行 $%&&$,返回值 $,因为地址不一样。
$+&'('#的实现过程:直接在堆中创建对象。如果后来又有 $-
&'('#,$- 不会指向之前的对象,而是重新创建一个对象并指向它,所以如果
此时进行 $+&&$- 返回值是 $,因为两个对象的地址不一样,如果是 $+./$$-#,
返回 因为内容相同。
$%&'('
$&'('
$+&new'('#
$-&new'('#
0$1..$%&&$# 地址一样
0$1..$+&&$-#$但地址不一样
0$1..$+./$$+##值一样
0$1..$./$$+##值一样
0$1..$%,''#&&$,''##$进行了,连接地址不一样
参考网址:https://www.cnblogs.com/xiaoxi/p/6036701.html
Demo:Test132
三、 接口常量定义
public:使接口的实现类可以使用这个常量。
stac:stac 修饰就表示它属于类的,随的类的加载而存在的,如果是非
stac 的话,就表示属于对象的,只有建立对象时才有它,而接口是不能建
立对象的,所以接口的常量必须定义为 stac。
nal:nal 修饰就是保证接口定义的常量不能被实现类去修改,如果没有
评论0
最新资源