您的位置:首页 > 编程语言 > Java开发

Java基础学习.笔记之基本类型与String类型判断是否相同的方法差异

2020-01-12 11:42 232 查看

String 与 基本数据类型————判断值是否相同

需知

在解决这个问题之前,我们首先要知道以下知识:
1、 在Java中,调用方法,传递实参为基本数据类型的变量,或者传递的实参为基本数据类型的封装类时,传递形式为值传递,当传递的实参为引用类型的时候,传递的形式为地址的传递.

(说人话)基本数据类型:就是说int,float等类型的变量,在传递的时候,只是传递的该变量的值,而不是传递地址. 基本数据类型的封装类:最主要的就是String类型,它在传递的时候传递的也是一个值,而不是引用,在这个方面可能就会造成对代码的影响.
2、在不同类型的数据比较是否相同的过程中,如果是基本数据类型,使用 " == " 比较的是值,但如果是String类型,使用"=="比较的就会是地址(强调!强调!强调!)

分析以下段代码.

package practice;

public class StringCompare {
String practice;
StringCompare()
{
practice="abc";
}
void IsEqual(String a)
{
//System.identityHashCode()用于查看对象的地址.
System.out.println("a的地址:       "+System.identityHashCode(a));
System.out.println("practice的地址:"+System.identityHashCode(practice));
System.out.println();
System.out.println("使用compareTo()比较String获得结果:"+practice.compareTo(a));
//practice.compareTo(a)结果为0表示字符串相同.
System.out.println("使用'=='比较String获得结果:"+practice==a);
System.out.println();
}

public static void main(String[] args)
{
StringCompare A=new StringCompare();	//创造一个StringCompare类的变量A.
A.IsEqual("abc");				//调用A的方法.传入参数"abc".
String a=new String("abc");		//生成一个String类,命名为a,其值为"abc".
System.out.println("*******************************");
A.IsEqual(a);					//调用A的方法,传入参数a.
}
}

运算结果如下:

a的地址:       1284693
practice的地址:1284693

使用compareTo()比较String获得结果:0
false

*******************************
a的地址:       31168322
practice的地址:1284693

使用compareTo()比较String获得结果:0
false

有了上述的复习(预习),现在我们来分析

1、 使用我们自己定义的构造函数创造了一个StringCompare类型的变量A,变量A调用了其自己的方法IsEqual.但是传入的是一个常量"abc".因为"abc"的字符串在内存池中已经有了,所以传入的常量"abc"就不会再另外开辟一个新空间,而是指向已有的practice素在空间,即我们发现该常量"abc"与A的属性practice的地址是一样的(同一个地址,值也一定一样).所以此时无论是用"==",还是用compareTo(),得到的结果都是相等的.

2、 命名了一个新的String类型变量a,此时用了 a = new String(“abc”); 所以无论之前在内存池中是否已经存在了值为 “abc"的变量,编译器都会重新创建一个变量.让a指向那个地址.在结果中也可以看出来,a和practice的地址是不一样的, 如果此时还用”=="来比较,由于地址不一样,所以就会返回false.此时使用compareTo()函数来进行比较,就可以避免比较错误啦!

总结

String类型的变量,如果作为实际参数传递,且在方法的函数体内用到了形式参数的值的比较,要用compareTo(another String)方法来比较,才可以得到真正的结果.

写在最后

看CSDN已经有1年多了,以前只是看别人的文章,给别人的文章点点赞,没有动手写过一篇博客,不过想要养成更好的习惯,不要要有知识的输入,也要有知识的输出,如果我们有一些相同的地方,希望能点个关注,多多支持~~~,
第一篇写的肯定多多少少有不合适,需要改进的地方,还希望有错误的地方大家多多包含,指出,我们共同进步~

一枚努力奋斗的大学生
  • 点赞 2
  • 收藏
  • 分享
  • 文章举报
张亲亲亲亲钦 发布了6 篇原创文章 · 获赞 4 · 访问量 350 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐