首页 > 编程语言 > 详细

java中字符串比较的问题

时间:2019-07-18 01:42:10      阅读:112      评论:0      收藏:0      [点我收藏+]

一、关于基本类型与引用类型

1.基本类型:  

全在   栈空间:名字--具体值

整型:byte short  int  long

浮点型:float double 

逻辑型:boolean 

字符型:char

2.引用类型:   栈空间:名字--地址(用于在堆空间寻找)      堆空间:具体值

类、接口、数组

 

二、创建字符串的两种方式

1.字面量赋值方式  String a = "ttt";  

该种直接赋值的方法,JVM会去字符串常量池(String对象不可变)中寻找是否有equals("ttt")的String对象,如果有,就把该对象在字符串常量池中"ttt"的引用复制给字符串变量a,如若没有,就在堆中新建一个对象,同时把引用驻留在字符串常量池中,再把引用赋给字符串变量str。


2.new关键字创建新对象  String b = new String("ttt"); 

利用new来创建字符串时,无论字符串常量池中是否有与当前值相同的对象引用,都会在堆中新开辟一块内存,创建一个新的对象。

 

注:字符串无法被修改(String对象不可变):
eg:

String str1 = new String("ttttttt"); 
str1 = "yyyyyyy";

对str1重新赋值后  ttttttt这个String对象在堆空间中并没有消失 

即在堆空间中新建一个字符串yyyyyy 不再指向ttttttt 而是重新指向yyyyyyyy的首地址

 技术分享图片

 

三、关于字符串的比较

1.equals:值比较

2.==:地址比较

例一:

String a = "ttt";
String b = "ttt";

 equals相等   ==相等   ttt这个字符串对象是同一个

例二:

String a = new String("ttt");

String b = new String("ttt");

 equals相等   ==不相等   ttt这个字符串对象不是同一个(地址不同)

例三: 

String a = "ttt";
String b = new String("ttt");

equals相等   ==不相等   ttt这个字符串对象不是同一个(地址不同)

java中字符串比较的问题

原文:https://www.cnblogs.com/yang37/p/11204347.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!