package com.d; public class Test_object01 { /** * ==的比较: * 比较基础数据类型,比较的是基础数据类型的值是否相等 * 比较引用数据类型,比较的是引用的地址是否相等 * * 比较对象是否相等的方法: * Object中的equals(Object s)方法,重写此方法进行比较,生成即可。 */ @Override public boolean equals(Object obj) { return super.equals(obj); } }
package com.e; public class Test_Stringbuilder { /** * String和Stringbulider的区别: * String每次创建都在方法区的常量池开辟一个新的空间去存储字符串,效率太低 * String s = "hello"; * s += "world"; * 这个操作开辟了3个字符串空间 hello,world,helloworld; * * Stringbuilder是一个可变的字符串类。 * Stringbulider s = "hello": * s += "world"; * 这个操作只开辟一个字符串空间,hello再拼接world。 * * Stringbuilder只能通过new对象来创建; * * Stringbuilder的添加和反转: * 添加:不管添加什么类型,输出都是字符串 * 链式编程:append返回的是一个对象 * 反转:reverse() * * String和Stringbuilder相互转换: * Stirng转成Stringbuilder用,带参构造方法; * Stringbuilder转成String用,Stringbuilder的to_String方法。 * * 把数组拼接成字符串: * 对数组便利,用appand追加到Stringbuilder里。 * 原因:用String拼接效率太低,使用Stringbuilder拼接后再变成字符串提高效率 * * 字符串的反转: * 入参s String * return new Stringbuilder(s).reverse().to_String;//此处也体现了链式编程 */ public static void main(String[] args) { // StringBuilder s = new StringBuilder("hello"); // s.append("world"); // StringBuilder s = new StringBuilder("hello"); // s.append("1"); // s.append(true); // s.append(100); // System.out.println(s); //链式编程 // StringBuilder s = new StringBuilder("hello"); // s.append("world").append("123").append("asdtg"); // System.out.println(s); StringBuilder s = new StringBuilder("hello"); s.reverse(); System.out.println(s); } }
String字符串内存图
StringBuilder内存图