1 == 与 equals()

使用==来比较两个primitive主数据类型在意义上相等(是否带有相同的字节组合),或者判断两个引用(如String变量)是否引用同一个对象。使用equals()来判断两个对象是否在值(内容)上相等。

int a = 3;
byte b = 3;
if (a==b) { //true }

2 String在使用匿名对象字符串或初始化赋值字符串引用变量时会采用对象池策略,相同内容的字符串,会共用同一段堆内存

3 String在new实例化方式创建字符串对象时会开辟不同的堆内存存储字符串内容,即便是相同的内容。

4 字符串的内容不可改变,即便是对一个字符串变量赋予新的内容,但是与此同时也只会开辟新的堆内存空间来存储,并不会改变原来的堆内存空间的内容。而短时间内JVM还来不及回收前面所创造的垃圾内存空间,这可能会造成不好的影响。

下面的例子是对以上内容的应用:

StringDemo.java

package test.string;

public class StringDemo {

	public static void main(String[] args) {
// TODO Auto-generated method stub
boolean b11 = false;
boolean b12 = false;
boolean b21 = false;
boolean b22 = false;
boolean b31 = false;
boolean b32 = false;
boolean b41 = false;
boolean b42 = false; if ("hello"=="hello"){
b11 = true;
}
if("hello".equals("hello")){
b12 = true;
}
System.out.println(b11);//true
System.out.println(b12);//true
//===================================
String str1 = "Hello";
String str2 = "Hello";
if(str1 == str2){
b21 = true;
}
if(str1.equals(str2)){
b22 = true;
}
System.out.println(b21);//true
System.out.println(b22);//true
//==================================
String str3 = "Hello";
String str4 = new String("Hello");
String str5 = new String("Hello");
if(str3 == str4){
b31 = true;
}
if(str3.equals(str4)){
b32 = true;
}
if(str5 == str4){
b41 = true;
}
if(str5.equals(str4)){
b42 = true;
}
System.out.println(b31);//false
System.out.println(b32);//true
System.out.println(b41);//false
System.out.println(b42);//true
//==================================
String str = "hello ";//generate the first heap memory: hello
str = str + "world";// generate the second heap memory : hello world
System.out.println(str);//use the second heap memory, and the first heap memory is waiting to be GC
}
}

  

Java String使用总结的更多相关文章

  1. 从Java String实例来理解ANSI、Unicode、BMP、UTF等编码概念

    转(http://www.codeceo.com/article/java-string-ansi-unicode-bmp-utf.html#0-tsina-1-10971-397232819ff9a ...

  2. Java String.split()小点

    java String.split(); 别的不说,单说其中一个问题,这个函数去切分空字符串时,得到的结果: public static void main(String[] args) {// St ...

  3. Java总结篇系列:Java String

    String作为Java中最常用的引用类型,相对来说基本上都比较熟悉,无论在平时的编码过程中还是在笔试面试中,String都很受到青睐,然而,在使用String过程中,又有较多需要注意的细节之处. 1 ...

  4. java String.split()函数的用法分析

    java String.split()函数的用法分析 栏目:Java基础 作者:admin 日期:2015-04-06 评论:0 点击: 3,195 次 在java.lang包中有String.spl ...

  5. java string类型的初始化

    以下基本上是java string类型最常用的三种方法 new string()就不介绍了  基本等同于第三种 String a;  申明一个string类型的 a,即没有在申请内存地址,更没有在内存 ...

  6. Java String字符串/==和equals区别,str。toCharAt(),getBytes,indexOf过滤存在字符,trim()/String与StringBuffer多线程安全/StringBuilder单线程—— 14.0

    课程概要 String 字符串 String字符串常用方法 StringBuffer StringBuilder String字符串: 1.实例化String对象 直接赋值  String str=& ...

  7. Java String类详解

    Java String类详解 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 类结构: public final ...

  8. java string,需要进行首字母大写改写

    java string,需要进行首字母大写改写,网上大家的思路基本一致,就是将首字母截取,转化成大写然后再串上后面的,类似如下代码 //首字母大写     public static String c ...

  9. Java String Class Example--reference

    reference:http://examples.javacodegeeks.com/core-java/lang/string/java-string-class-example/ 1. Intr ...

  10. java基础知识回顾之---java String final类普通方法

    辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /*     * 按照面向对象的思想对字符串进行功能分类.     *      ...

随机推荐

  1. 关于IDE与环境变量的一点说明

    环境变量就是当计算机要执行操作时,在环境变量所制定的范围内查找该操作. 比如linux的ls命令,计算机就需要在$PATH规定的目录中寻找该ls的可执行文件. java的classpath,在该规定的 ...

  2. vue源码入口文件分析

    开发vue项目有段时间了, 之前用angularjs 后来用 reactjs 但是那时候一直没有时间把自己看源码的思考记录下来,现在我不想再浪费这 来之不易的思考, 我要坚持!! 看源码我个人感觉非常 ...

  3. 深入剖析Java编程中的中文问题及建议最优解决方法

    摘录自:http://fafeng.blogbus.com/logs/3062998.html http://www.blogbus.com/fafeng-logs/3063006.html 深入剖析 ...

  4. Python+Selenium安装及环境配置

    一.Python安装 Window系统下,python的安装很简单.访问python.org/download,下载最新版本,安装过程与其他windows软件类似.记得下载后设置path环境变量,然后 ...

  5. Linux - ubuntu读取/root/.profile时发现错误:mesg:ttyname fa

    启动ubuntu,以root用户登陆,打开命令行终端 输入命令:#vim /root/.profile 找到.profile文件中的mesg n 将其替换成tty -s && mesg ...

  6. cpuimage 开源之

    前年学习opengl做的一个小东西. 原本计划将gpuimage 的算法一个一个转写成cpu版本 c,c++ 版本. gpuimage 项目参考: https://github.com/BradLar ...

  7. call 和 ret 指令

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  8. java进行图片和字符串的互相转换

    今天做项目,突然发现图片居然能转成字符串,字符串也能转成图片. 接下来让我们进行代码演示吧! /** * 字符串转图片 * @param imgStr --->图片字符串 * @param fi ...

  9. mysql myisam转innodb的2种方法

      mysql myisam转innodb的2种方法 mysql中的myisam和innodb有什么区别.一个好比便利店,一个好比大型购物中心,他们是为了适应不同的场合而存在的.当流量比较小,我们可以 ...

  10. junit4X系列--Statement

    原文出处:http://www.blogjava.net/DLevin/archive/2012/05/11/377954.html.感谢作者的无私分享. 初次用文字的方式记录读源码的过程,不知道怎么 ...