Java入门练习100例11.==和equals()——值和地址

Posted 一条coding

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java入门练习100例11.==和equals()——值和地址相关的知识,希望对你有一定的参考价值。

点赞再看,养成习惯。微信搜索【一条coding】关注这个在互联网摸爬滚打的程序员

本文收录于github-技术专家修炼,里面有我的学习路线、系列文章、面试题库、自学资料、电子书等。

题目描述

难度:简单

写出下面代码的输出结果:

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新的,而是直接指向这个对象的地址。

代码实现

输出结果

扩展总结

由于Stringfinal修饰,值无法修改,所以我们每次修改值都是重新new了一个对象,为了避免产生过多垃圾,对于需要经常修改的字符串建议使用StringBuilderStringBuffer

以上是关于Java入门练习100例11.==和equals()——值和地址的主要内容,如果未能解决你的问题,请参考以下文章

Java入门练习100例02.键盘输入——三种方式

Java入门练习100例03.短路与和逻辑与的区别——老实人和机灵鬼

Java入门练习100例10.各行元素之和——二维数组

Java入门练习100例07.各数字的和——取余运算

Java入门练习100例04.三数排序——两数交换高级算法

Java入门练习100例09.数组中的最小值——一维数组