String 比较的部分理解(1)
虽然是转载但是很经典.我把自己在学习当中相继弄明白的问题用博文的形式记录下来.作为我对java学习的总结.希望通过这种方式能够更好的提高.
String的比较问题:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
       · String是一个系统提供好的类,但是String可以像基本数据类型那样,直接赋值
       · String还可以通过new关键字赋值
public class OODemo12{
         public static void main(String args[]){
                   String str1 = "abc" ;
                   String str2 = new String("abc") ;
                   String str3 = str2 ;
         }
};
那么该如何去比较两个字符串是否相等呢?
· 按照“==”的方式进行比较 -- 按地址比较
public class OODemo12{
         public static void main(String args[]){
                   String str1 = "abc" ;
                   String str2 = new String("abc") ;
                   String str3 = str2 ;
                   System.out.println(str1==str2) ;    // false
                   System.out.println(str1==str3) ;    // false
                   System.out.println(str3==str2) ;    // true
         }
};
       比较之后发现,虽然str1和str2的内容是一样,但是通过==比较之后,结果均为“false”,而str2和str3的比较结果均为“true”。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
       如果使用了“==”,则最终的比较结果是比较的两个地址。
· 最终应该比较的是两个字符串的内容,所以此时,就必须使用String类中提供好的一个方法:
       public boolean equals(String str)
public class OODemo13{
         public static void main(String args[]){
                   String str1 = "abc" ;
                   String str2 = new String("abc") ;
                   String str3 = str2 ;
                   System.out.println(str1.equals(str2)) ;    // true
                   System.out.println(str1.equals(str3)) ;    // true
                   System.out.println(str3.equals(str2)) ;    // true
         }
};
使用equals方法比较的是两个字符串的内容。
注意点1
       实际上一个字符串就是String类的匿名对象。
       每一个字符串都会在堆内存中开辟空间。
              String str1 = "abc" ;
       · 首先要在堆内存中开辟一个空间,此空间存放的是“abc”的字符串,之后把此字符串的地址使用给了str1:System.out.println("abc".equals(str2)) ;
注意点2
       String有两种实例化方式
       · 直接赋值
       · 使用new关键字开辟
       以上两种方式使用那种更好呢?
       · 直接赋值:它本身只会产生一个实例化对象
public class OODemo14{
         public static void main(String args[]){
                   String str1 = "abc" ;
         }
};
       · 使用new关键字开辟,会产生两个实例化对象
public class OODemo14{
         public static void main(String args[]){
                   String str1 = new String("abc") ;
         }
};
使用直接赋值的方式比较节约空间,所以绝对不要使用new关键字实例化对象。
注意点3
       · String中的内容一旦声明则不可改变
       String的内容是固定的,如果要改变其内容,修改的是其内存的指向。
public class OODemo14{
         public static void main(String args[]){
                   String str1 = "abc" ;
                   str1 += "bcd" ;
                   System.out.println(str1) ;
         }
};

转载于:https://blog.51cto.com/dreamhappy2008/118592

String 比较的部分理解(1)相关推荐

  1. SWIFT MX报文基础函数与Java语言中String的方法对照理解

    SWIFT MX报文基础函数与Java语言中String的方法对照理解 前言 一.SWIFT是什么? 二.SWIFT MX是什么? 二.报文基础函数与Java语言中String的方法对照表 总结 前言 ...

  2. java string封装类_java中八种基本数据类型以及它们的封装类,String类型的一些理解...

    在我们面试或者考试过程中经常会考到八种基本数据类型以及它们的封装类,那么有哪八种基本数据类型呢?它们的封装类又是什么呢? 首先,八种基本数据类型分别是:int.short.float.double.l ...

  3. 对于String类型的深刻理解

    1."abc"与new String("abc"); 经常会问到的面试题:String s = new String("abc");创建了几 ...

  4. String.intern() 的详细理解

                        字符串intern 的作用以及具体案例 前提:如果想了解字符串的intern操作产生的影响,必须首先知道字符串对象的创建方式,一般字符串有四种创建方式,如下 S ...

  5. java里面的string类型,java中的String类型(不知道理解的好不,请教大神)

    当执行String a = "abc"; 时候(前提条件是:执行这行代码之前在常量池中没有abc,若有,a直接引用在常量池中abc不在创建一个对象,若无,执行下面的描述) java ...

  6. tp5 聚合max获取不到string最大值_深入理解Kafka客户端之如何获取集群元数据

    一.场景说明 当我们初始化一个Kafka生产者后(初始化流程可以查看<Kafka源码解析之生产者初始化流程>),通过该生产者将封装好的消息发送出去,示例代码仍然参考example模块下的P ...

  7. for (String str : s){} 的理解

    List<String> s //定义s for(int i = 0;i < s.length(); i++){ String str = s[i]; //当成数组的写法 } 1.创 ...

  8. java string改变的影响_为什么Java的string类要设成immutable(不可变的)

    最流行的Java面试题之一就是:什么是不可变对象(immutable object),不可变对象有什么好处,在什么情况下应该用,或者更具体一些,Java的String类为什么要设成immutable类 ...

  9. python3怎么使用qstring_请问PyQt的QString和python的string的区别?

    以下在python2.5和PyQt4.4.6 for python2.5环境下讨论. 在python中有两种与字符有关的类型:string object和Unicode object. 平时进行输入输 ...

最新文章

  1. hp laser103 属性没有配置项_冰雪传奇:起源之上还有装备吗?详解鸿蒙装备合成与属性...
  2. 大志非才不就,大才非学不成—我的博文资源汇总
  3. 服气!3小时竟能写出风靡全球的小游戏,还顺手就赚的盆满钵满
  4. 自己动手开发智能聊天机器人完全指南(附python完整源码)
  5. HTML5的明天,局部有小雨
  6. 项目Alpha冲刺——随笔集合
  7. 前端学习(2018)vue之电商管理系统电商系统把good_cat转换为字符串
  8. 流量超过谷歌的Tiktok,在扩张过程中被质疑“偷窃”OBS代码
  9. ESP32 TIMER
  10. 网页设计中一些小功能
  11. css的盒子模型以及布局(面试考点)
  12. 三阶段DEA模型操作步骤笔记
  13. java 查看jar包内容_jar文件怎么打开?如何查看jar文件内容?
  14. 基于PyQt5与opencv制作的证件照尺寸变换应用程序
  15. iPhone模拟器如何截图呢?
  16. 1213_SCons初步了解以及安装试用
  17. 第四章 DirectX 渲染流水线(上)
  18. 新手如何运营好阿里国际站+产品标题组成
  19. studiolibrary安装_初学者daz studio中文基础安装布局教程
  20. 非官方esp8266烧写出厂默认AT固件v1.5.4.1

热门文章

  1. electron 利用 electron-builder实现自动更新
  2. new Date() 在 ie 浏览器中兼容性的问题
  3. 配置安全的windows2003服务器
  4. 正弦交流电电压电流峰值与有效值关系的推导
  5. 电脑启动后,没有桌面
  6. 没有JS的前端:体积更小、速度更快!
  7. springboot1.5升级2.0后遇到的问题
  8. 怎样初始化一个指针数组
  9. 查看 -- tree
  10. ios------进度轮