String 类型的==和equals的区别

关键在于。。。你要理解s1=new String("we are students"); s2="We are students";这两个是不一样的。。。。new是用新建一个对象的方法。。。。而后一种是放在常量池中的。。。你一下次再用这种方法去创建的时候。。。就会去常量池里面找,所以s2="We are students";       s3="We are students";

这两个是相同的。。。指向常量池中的"We are students";。。。

而s1=new String("we are students");       s4=new String(s1);这两个是不同的对象。。。。。尽管他们的内容是一样的。。。就像有两个人。。。他们的名字是相同的。。。。但是并不是一样的人。。。。
时间: 2024-11-03 21:27:18

String 类型的==和equals的区别的相关文章

String类型的==和equals问题及常量池小结

public static void main(String[] args) { String str1 = "abc"; String str2 = "abc"; final String str3 = "ab"; String str4 = "ab"; String str5 = str3+"c"; String str6 = str4+"c"; String str7 = &quo

String 类型equals方法和int == 方法效率比较

最近写了一个递归方法,在进行比较判断的时候,因为都是integer类型,而integer类型在大于127或者小于-128时会在新建一个,这是因为integer类型的拆装箱机制, 之前没有考虑过equals方法和 == 方法的效率,又为了避免integer类型的拆装箱机制导致的错误,所以将integer类型使用String.valueOf()方法,将所有的integer类型转为了字符串使用equals方法进行比较. 后来被我师傅不经意间看到,指出来这个错误,我立马改为了Integer.intVal

从String类型字符串的比较到StringBuffer和StringBuilder

1. String类型 String类源码 为了从本质上理解String类型的特性所在,我们从String类型的源码看起,在源码中String类的注释中存在以下: /**Strings are constant; their values cannot be changed after they * are created. String buffers support mutable strings. * Because String objects are immutable they ca

C# string类型遇到的两个问题

最近在维护一位离职的同事写的WPF代码,偶然发现他使用C# string类型的两个问题,在这里记录一下. 1. 使用Trim函数移除字串中的空格.换行符等字符串. csRet.Trim(new char[] { '\r', '\n', '\t', ' ' });if (!csRet.Equals(string.Empty)) statement1; else statement2; 上述代码的意图为:移除string类型变量csRet开头和结尾处的换行符.制表符.空格符之后,判断该字符串是否是空

java String类型 深入理解

本文摘自:http://www.cnblogs.com/ITtangtang/p/3976820.html 这作者写的非常好,少许地方有笔误,值得收藏 在讲解String之前,我们先了解一下Java的内存结构. 一.Java内存模型 按照官方的说法:Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配. JVM主要管理两种类型内存:堆和非堆,堆内存(Heap Memory)是在 Java 虚拟机启动时创建,非堆内存(Non-heap Memory)是在JVM堆之外的

C#string类型总结

个人笔记分享,知识点以及小练习 字符串的特性:不可变性,每对字符串做拼接或者重新赋值之类的操作,都会在内存中产生一个新的实例. 所以说,在.Net平台下,如果你对一个字符串进行大量的拼接赋值等操作,会产生大量的垃圾. ---->我们可以将字符串看做是char类型的只读数组. --->当我们以索引的方式去访问某一个字符串的时候,获得是char类型 空和null有什么区别,空在内存上开空间了,null没有 字符串的常用函数 1.ToCharArray():将一个字符串转换成一个char类型的数组.

[每天一个知识点]18-Java语言-在switch中接受String类型

在Java7中增加了一个新特性,switch可以接受String类型的变量,这就省下了书写大量if ("xxx".equals(yyy))的繁复工作.示例代码就免了,仅仅是一个数据类型的改变而已,如果会用原来的switch而在5分钟内搞不定String类型的switch,建议还是放弃做程序员吧-- 至于内部实现,java一点都没增加新内容,其实代码是被转换成了这个样子 switch (xxx.hashCode()) { case 1024: // 假设原来是"aaa"

java动手动脑和课后实验型问题String类型

1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? true true false 总结: 使用new关键字创建字符串对象时, 每次申请新开辟一个地址空间,存储的地址空间不一样(对象不同),string类型下hello是同一个对象,其内容和地址都相容. 2. public class StringEquals { /** * @param args the command line arguments */ public stati

java 中的String类型

java 中的String类型   (1)String类型的数据可以表示所有的数据类型. (2)String中的字符串常量与一般的字符串:                String str0 = "hello";//字符串常量“hello”被预先放到了数据段的字符串常量池中                String str1 = "hello";//直接从常量池中寻找已有的字符串常量                String str2 = new String

java中String类型

String类型是字符串类型.. 字符串一旦创建不可以在改变."abc"字符串对象一旦创建,不可以再改成"abcd" 提升字符串的访问效率:在程序中使用了"缓存"技术.所以在java中所有使用"双引号"括起来的字符串都会在"字符串常量池"中创建一份.字符串常量池在方法区中被存储. 在程序执行过程中,如果用到某个字符串,例如:"abc"那么程序救护在字符串常量池中去搜索该字符串,如果没有找