1.equals()

==:

  a)对于原生数据类型来说,比较的是左右两边的值是否相等。

  b)对于引用类型来说,比较左右两边的引用是否指向同一个对象,或者说左右两边的引用地址是否相同。

equals()方法,该方法定义在Object类当中,因此Java中的每个类都具有该方法,对于Object类的equals()方法来说,它是判断调用equals()方法的引用与传进来的引用是否一

致,即这两个引用是否指向的是同一个对象。对于Object类的 equals()方法来、说,它等价于==。

对于 String 类的 equals()方法来说,它是判断当前字符串与传进来的字符串的内容是否一致。对于 String 对象的相等性判断来说,请使用 equals()方法,而不要使用==。

String 是常量,其对象一旦创建完毕就无法改变。

当使用+拼接字符串时,会生成新的 String 对象,而不是向原有的 String 对象追加内容。

String s = aaa;(采用字面值方式赋值)

  查找 String Pool 中是否存在“aaa”这个对象,如果不存在,则在 String Pool 中创建一个aaa对象,然后将 String Pool中的这个“aaa”对象的地址返回来,赋给引用变量 s,

这样s 会指String Pool 中的这个aaa字符串对象如果存在,则不创建任何对象,直接将 String Pool 中的这个aaa对象地址返回来,赋给 s 引用。

String s = new String(“aaa”);

  a)首先在 String Pool 中查找有没有“aaa”这个字符串对象,如果有,则不在 String Pool中再去创建aaa这个对象了,直接在堆中(heap)中创建一个aaa字符串对象,然后

将堆中的这个“aaa”对象的地址返回来,赋给 s 引用,导致 s 指向了堆中创建的这个aaa字符串对象。

  b)如果没有,则首先在 String Pool 中创建一个“aaa“对象,然后再在堆中(heap)创建一个aaa对象,然后将堆中的这个aaa对象的地址返回来,赋给 s 引用,导致 s 指向了

堆中所创建的这个”aaa“对象。

public class ObjectTest2
{
public static void main(String[] args)
{
Object object = new Object();
Object object2 = new Object(); System.out.println(object == object2); System.out.println("----------------"); String str = new String("aaa");
String str2 = new String("aaa"); System.out.println(str == str2); System.out.println("----------------"); String str3 = "bbb";
String str4 = "bbb"; System.out.println(str3 == str4); System.out.println("----------------"); String str5 = new String("ccc");
String str6 = "ccc"; System.out.println(str5 == str6); System.out.println("----------------"); String s = "hello";
String s1 = "hel";
String s2 = "lo"; System.out.println(s == s1 + s2); System.out.println("----------------"); System.out.println(s == "hel" + "lo"); }
}
结果为:
false
----------------
false
----------------
true
----------------
false
----------------
false
----------------
true

2.StringBuffer

StringBuffer可以创建一个动态的String,而不是一个常量。

 package com.li;

 public class StringBufferTest
{
public static void main(String[] args)
{
StringBuffer buffer = new StringBuffer(); buffer.append("hello").append(" world").append(" welcome").append(100).append(false);
String result = buffer.toString(); System.out.println(result); System.out.println("----------------------------------------"); buffer = buffer.append("hello");
buffer.append(" world");
buffer.append(" welcome");
String result1 = buffer.toString(); System.out.println(result1);
}
}
hello world welcome100false
----------------------------------------
hello world welcome100falsehello world welcome

String类 and StringBuffer类的更多相关文章

  1. String类和StringBuffer类的区别

    首先,String和StringBuffer主要有2个区别: (1)String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringB ...

  2. String类,StringBuffer类转字符数组

    String不可变类型和StringBuffer可变类型 String类和StringBuffer类都是字符串表示类,区别在于String对象引用变量是不可变的,而StringBuffer类对象引用变 ...

  3. Java 常用类String类、StringBuffer类

    常用类 String类.StringBuffer类 String代表不可变的字符序列 "xxxxxxx"为该类的对象 举例(1) public class Test { publi ...

  4. 【学习笔记】String进阶:StringBuffer类(线程安全)和StringBuilder类

    一.除了使用String类存储字符串之外,还可以使用StringBuffer类存储字符串.而且它是比String类更高效的存储字符串的一种引用数据类型. 优点: 对字符串进行连接操作时,使用Strin ...

  5. 一大波Java来袭(四)String类、StringBuilder类、StringBuffer类对照

    本文主要介绍String类.StringBuffer类.StringBuilder类的差别  : 一.概述 (一)String 字符串常量.可是它具有不可变性,就是一旦创建,对它进行的不论什么改动操作 ...

  6. String类与StringBuffer类

    String类与StringBuffer类   一.String类和StringBuffer类的区别 String类是不可变类,新建的对象为不可变对象(String类的内容和长度是固定的),一旦被创建 ...

  7. (1)StringBuilder类和StringBuffer类 (2)日期相关的类 (3)集合框架 (4)List集合

    1.StringBuilder类和StringBuffer类(查手册会用即可)1.1 基本概念 由于String类描述的字符串内容无法更改,若程序中出现大量类似的字符串时需要申请独立的内存空间单独保存 ...

  8. String类和StringBuffer类的方法

    一.String类的方法 public char charAt(int index)          返回字符串index个字符 public int length()         返回字符串长 ...

  9. 【java】String类和StringBuffer类常用操作

    String类是字符串常量,是不可更改的常量.而StringBuffer是字符串变量,它的对象是可以扩充和修改的.StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于Stri ...

  10. java中String类、StringBuilder类和StringBuffer类详解

    本位转载自http://www.cnblogs.com/dolphin0520/p/3778589.html  版权声明如下: 作者:海子 出处:http://www.cnblogs.com/dolp ...

随机推荐

  1. asp 文件上传(ASPUpload组件上传)

    要实现该功能,就要利用一些特制的文件上传组件.文件上传组件网页非常多,这里介绍国际上非常有名的ASPUpload组件 1 下载和安装ASPUpload   要实现该功能,就要利用一些特制的文件上传组件 ...

  2. CSRF防范策略研究

    目录 0x1:检查网页的来源 0x2:检查内置的隐藏变量 0x3:用POST不用GET 检查网页的来源应该怎么做呢?首先我们应该检查$_SERVER[“HTTP_REFERER”]的值与来源网页的网址 ...

  3. WPF 视图分组排序

    视图分组排序 效果: 实现步骤: 第一步:为分组做一个标题头,就是效果图中的浅蓝色部分: <DataGrid.GroupStyle>标签部分: <DataGrid x:Name=&q ...

  4. IDFA问题,苹果上传问题。improper Advertising identifier [IDFA] Usage.

    原地址: 报告 improper Advertising identifier [IDFA] Usage. Your app contains the Advertising Identifier [ ...

  5. 网站404,500错误页面的处理,及500异常写入errorLog日志

    1.web.xml 配置 <error-page> <error-code>404</error-code> <location>/404.jsp< ...

  6. java基本对象Integer,String比较相等及equal案例说明

    Integer i = new Integer(100); Integer i2 = new Integer(100); if(i == i2){ System.out.println("A ...

  7. Chp3: Stacks and Queue

    1. 说明如何用两个队列来实现一个栈,并分析有关栈操作的运行时间. 解法:1.有两个队列q1和q2,先往q1内插入a,b,c,这做的都是栈的push操作.2.现在要做pop操作,即要得到c,这时可以将 ...

  8. MAT使用总结

    最近在做项目的时候遇到一个内存泄漏,最后通过MAT定位了问题, 先介绍一下MAT的一些基本概念: Shallow Heap:对象本身占用内存的大小,不包含对其他对象的引用,也就是对象头加成员变量(不是 ...

  9. java 串口通信 代码

    下面是我自己实现的串口接收的类,串口发送比较简单,就直接发送就可以了.下面的这个类可以直接使用. package com.boomdts.weather_monitor.util; import ja ...

  10. ANDROID_MARS学习笔记_S01_004dpi、dp(dip)及计算

    一.dpi.dp介绍 sp会随着用户在手机中设置字体大小而改变,而dp不会 二.1.dpsp_layout.xml <?xml version="1.0" encoding= ...