发表于: 2017-07-02 23:18:23
1 1179
一、今天做的事情:
代码生成测试。
test没有成功。继续观察代码,查看动态语句
放歌String的源码解析把- -
例子
大家觉得结果是什么呢?
答案就是
不知道在看答案的你是不是答对了呢
原理
其实这个要讲起来又是涉及到==和equals的区别。我的理解是,==是比较两个类的应邀地址是不是指向了同一个地方。而equals是基于定义的equals方法来具体实现的。举个栗子:
String的equals方法:
这里我们就可以知道:
1.String的equals是先判断是不是同一个对象,如果是就返回true.
2.然后判断a3对象是不是String类,然后定义a4赋值为a3
3.初始化n用来记录值的a3的长度。
4.如果a4的长度等于n
5.定义一个数组存储a3.v2存储a4的长度
6.比较两个数组的值是不是相等,不等返回false,相等返回true
这里我们就可以知道了a3 equal a4的。
而当String一个对象””时,JVM是先根据””里面的值去字符串池里面找,如果没有就创建一个,如果有就引用,所以这里面的过程大致是(JVM没这么简单,粗糙粗糙….)
所以a1等于a2,a3==a4为false,是因为它们开辟了新的内存,指向地址不同,所以为false.
所以String类原来是这样的呀
二、遇到的问题:无
三、明天计划的事情:方案评审通过
四、收获:其实这几天感觉自己很焦虑,不知道为什么。
评论