这是我参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战
点赞再看,养成习惯。微信搜索【一条coding】关注这个在互联网摸爬滚打的程序员。
本文收录于技术专家修炼,里面有我的学习路线、系列文章、面试题库、自学资料、电子书等。欢迎star⭐️
题目描述
难度:简单
写出下面代码的输出结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 > java复制代码public static void main(String[] args) {
> String s1,s2;
> s1=new String("we are students");
> s2=new String("we are students");
> System.out.println(s1.equals(s2));
> System.out.println(s1==s2);
> String s3,s4;
> s3="how are you";
> s4="how are you";
> System.out.println(s3.equals(s4));
> System.out.println(s3==s4);
> }
>
>
知识点
- String
- equals()
- ==
解题思路
1.equals()和==
首先需要明确equals()
比较的是值,也就是和我们肉眼看见的没区别,1和1就是true
。
==
比较的是地址,好比两件衣服虽然看着一样,但产地不一样。依然是false
。
2.String
再就是String
的创建过程,对于new String()
这种毫无疑问,肯定是创建一个新对象。
但是对于直接赋值s3="how are you";
,如果已经有一个和他值相等的对像,就不再new
新的,而是直接指向这个对象的地址。
代码实现
输出结果
扩展总结
由于String
被final
修饰,值无法修改,所以我们每次修改值都是重新new
了一个对象,为了避免产生过多垃圾,对于需要经常修改的字符串建议使用StringBuilder
或StringBuffer
。
最后
独脚难行,孤掌难鸣,一个人的力量终究是有限的,一个人的旅途也注定是孤独的。当你定好计划,怀着满腔热血准备出发的时候,一定要找个伙伴,和唐僧西天取经一样,师徒四人团结一心才能通过九九八十一难。
所以,
如果你想学好Java
想进大厂
想拿高薪
想有一群志同道合的伙伴
请查看我的主页。
本文转载自: 掘金