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. No input file specified的解决方法apache伪静态

    http://jingyan.baidu.com/article/dca1fa6f8d623ff1a44052e8.html (一)IIS Noinput file specified 方法一:改PH ...

  2. dedecms_分页技术

    <ul>{dede:list pagesize='30'} <li><a href="[field:arcurl/]">[field:title ...

  3. 面试官最爱的volatile关键字

    在Java相关的岗位面试中,很多面试官都喜欢考察面试者对Java并发的了解程度,而以volatile关键字作为一个小的切入点,往往可以一问到底,把Java内存模型(JMM),Java并发编程的一些特性 ...

  4. asp.net -mvc框架复习(11)-基于三层架构与MVC实现完整的用户登录

    一.先从M部分写起(Modles\DAL\BLL) 1.Modles 实体类:上次实体类已经搞定. 2.DAL 数据访问类类 (1)通用数据数据访问类: A:  先编写数据连接字符串,写到网站根目录W ...

  5. PostgreSql 分页limit

    摘录自:http://jingyan.baidu.com/article/a17d528538119b8098c8f2ca.html 语法: select * from persons limit   ...

  6. mysql 中order by 与group by的顺序

    mysql 中order by 与group by的顺序 是: select from where group by order by 注意:group by 比order by先执行,order b ...

  7. freemarker常用值格式化方法

    freemarker常用的值格式化方法: 1.${price?string('0.00')} 对price进行格式化,小数点后不足2位用0补足. 比如:price=1 输出:1.00 2.${pric ...

  8. rem与@media 的优缺点

    首先:   如果我们在做单独移动端网站或者app的时候  我建议  使用 rem  ; 他能让我们在手机各个机型的适配方面:大大减少我们代码的重复性,是我们的代码更兼容. 下面两个图一个调试在常用的机 ...

  9. RChain节点通信机制(上)

    在介绍RChain的通信机制之前,先简单介绍一些以太坊的通信机制,它包括以下几个方面,如下详细了解以太坊的通信机制,可以查看https://github.com/ethereum/devp2p/blo ...

  10. 在nagios中使用nrpe自定义脚本

    nrpe的安装    tar xvfz nrpe-2.13.tar.gz cd nrpe-2.13 ./configure make all make install-plugin make inst ...