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. 每天一个linux命令(34):du 命令

    Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 1.命令格式: du [选项][文件] 2.命令功能 ...

  2. 人人都是CEO

    在这个互联网崛起的时代有些流行说法,比如:人人都是产品经理,人人都是程序员以突显行业繁荣的特点,但从更基本的出发点,难道人人不都是 CEO 么?个人的 CEO. 从这个名字套路出发,我沿着想了下去,作 ...

  3. asp.net -mvc框架复习(2)-创建ASP.NET MVC 第一个程序以及MVC项目文件夹说明

    建议vs2013或2013以上版本的vs,要是跨平台的话最好用vs2015或vs2017的asp.net mvc core . 1.创建ASP.NET MVC 第一个程序 打开vs2013->文 ...

  4. cpuimage 开源之

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

  5. linux_通配符

    通配符和正则表达式区别? 通配符用在用户命令行bash环境,而正则表达式用于linux三剑客(awk, sed, grep) 那,有哪些通配符? * 所有字符    五星 ls *.txt # 列举目 ...

  6. python_如何通过twisted实现数据库异步插入?

    如何通过twisted实现数据库异步插入? 1. 导入adbapi 2. 生成数据库连接池 3. 执行数据数据库插入操作 4. 打印错误信息,并排错 #!/usr/bin/python3 __auth ...

  7. Linux指令--route

    Linux系统的route命令用于显示和操作IP路由表(show / manipulate the IP routing table).要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或 ...

  8. Servlet--继承HttpServlet写自己的Servlet

    前面2篇关注的都是Servlet接口,在实际编码中一般不直接实现这个接口,而是继承HttpServlet类.因为j2e的包里面写好了GenericServlet和HttpServlet类来让我们简化编 ...

  9. ORACLE 博客文章目录(2015

    从接触ORACLE到深入学习,已有好几年了,虽然写的博客不多,质量也参差不齐,但是,它却是成长的历程的点点滴滴的一个见证,见证了我在这条路上的寻寻觅觅,朝圣的心路历程,现在将ORACLE方面的博客整理 ...

  10. 2. getline()和get()

    1.面向行输入:getline() ---其实还可以接受第三个参数. getline()函数读取整行,调用该方法 使用cin.getline().该函数有两个参数, 第一个参数是是用来存储输入行的数组 ...