Digdata Development Java__Study_05(String,回顾)
来源:互联网 发布:全球语音翻译软件 编辑:程序博客网 时间:2024/05/22 03:05
public class Demo { public static void main(String[] args) { String t1 = "ABCDEFG"; String t2 = new String("ABCDEFG"); // 0x001 String t3 = new String("ABCDEFG"); // 0x002 if (t2 == t3) { // 引用类型 == 比较的是保存的地址,相同则相等,否则不相等 // 基本类型 == 比较的是值 // 都是比较 栈 上保存的内容 System.out.println("t2 == t3"); } }}public class Demo1 { public static void main(String[] args) { String t1 = "ABCDEFG"; // 字符串是比较特殊的数据类型,它的值保存在方法区的字符串常量池中 // 去字符串常量池中查找,是否有常量 ABCDEFG // 如果有,直接把地址赋值给变量保存 // 如果没有,先创建常量,在赋值给变量保存 String t4 = "ABCDEFG"; if (t1 == t4) { System.out.println("t1 == t4"); } String t2 = new String("ABCDEFG"); // 1. 堆上开辟内存 0x001 // 2. 0x001 中分配出一块区域保存 0x003 String t3 = new String("ABCDEFG"); // 1. 堆上开辟内存 0x002 // 2. 0x002 中分配出一块区域保存 0x003 // 字符串比较禁止使用 ==,必须使用 equals 方法 // == 比较是地址,equals 比较的是值 // 字符串比较一般都是比较内容(值),所以要用 equals if (t2 != t3) { System.out.println("t2 和 t3 的地址不相等"); } if (t3.equals(t3)) { System.out.println("t2 和 t3 的值相等"); } // 会创建几个对象?第一次使用会创建 2 个 // 1. 常量池开辟空间保存 123456 // 2. 堆上开辟空间指向常量池中的 123456 String text = new String("123456"); }}public class Demo2 { public static void main(String[] args) { String t1 = "ABCDEFG"; // 使用 引用类型 变量,用的是 根据保存的地址,找到数据 String t2 = new String(t1); // new String("ABCDEFG"); System.out.println(t2); System.out.println("t1 == t2:" + (t1 == t2)); t1 = "123456"; System.out.println(t2); }}public class Demo3 { public static void main(String[] args) { String t1 = "ab"; String t2 = "cd"; String t3 = "abcd"; // 分配在常量池 String t4 = "ab" + "cd"; // 编译的时候会优化为 abcd 和 t3 一样在常量池 // 每次使用 + 链接字符串的时候都是创建了一个新的对象 String t5 = t1 + t2; // new String("abcd"); 分配到堆上 System.out.println("t3 == t4:" + (t3 == t4)); System.out.println("t3 == t5:" + (t3 == t5)); String t6 = t1 + t2 + t3 + t4; // 会产生 3 个对象 // StringBuilder 和 StringBuffer 类拼接多个字符串,效率会高一点 StringBuilder s1 = new StringBuilder(); s1.append(t1); // 追加新内容 s1.append(t2); s1.append(t3); s1.append(t4); String t7 = s1.toString(); // 把 StringBuilder 转换为 String StringBuffer s2 = new StringBuffer(); s2.append(t1); // 追加新内容 s2.append(t2); s2.append(t3); s2.append(t4); String t8 = s2.toString(); // 把 StringBuffer 转换为 String System.out.println(t7); System.out.println(t8); }}
String 用法
public class Demo4 { public static void main(String[] args) { String t1 = "abcd你好"; // 长度 = 字符的个数 System.out.println("获得字符串的长度:" + t1.length()); // 大小写也要保持一致 System.out.println("比较字符串是否相同:" + t1.equals("ABCD你好")); // 忽略大小写 System.out.println("比较字符串是否相同:" + t1.equalsIgnoreCase("ABCD你好")); // 如果是拿对象和字符串比较,通常会使用 字符串去调用 equals 方法 String password = null; // "123456" // 推荐字符串在前,对象在后,防止出现 password = null 的情况,导致程序崩溃 boolean f1 = "123456".equals(password); // false // null 对象调用任何 属性和方法 都会产生 NullPointerException // boolean f2 = password.equals("123456"); // 程序崩溃 System.out.println("是否以 abcd 开始:" + t1.startsWith("abcd")); System.out.println("是否以 你好 结束:" + t1.endsWith("你好")); System.out.println("是否包含字符串 abc:" + t1.contains("abc")); String t2 = t1.concat("123"); // + "123" // new String("abcd你好123") System.out.println(t2); // 从指定位置开始截取字符串,位置从 0 开始,知道字符串结束 String t3 = t1.substring(2); System.out.println(t3); // 包含起点,不包含终点 String t4 = t1.substring(1, 3); System.out.println(t4); // 替换指定的字符 String t5 = t1.replace('a', 'F'); System.out.println(t5); // 去除前后的空格 String t6 = " sljdf lsk jdf ".trim(); System.out.println(t6); // 去除全部的空格,replaceAll(" ", ""),替换全部的符合条件的字符串 String t7 = " sljdf lsk jdf ".replaceAll(" ", ""); System.out.println(t7); // 获取指定位置的字符,从 0 开始 char c = t1.charAt(2); System.out.println(c); // 获得字符串对应的 char 数组 char[] cs = t1.toCharArray(); System.out.println(Arrays.toString(cs)); // 如果包含指定的字符串,第一个字符在原字符串中的索引 int i = t1.indexOf("bc"); System.out.println(i); // 如果不包含,返回 -1,如果包含多个,返回第一次出现的时候的索引 int j = t1.indexOf("bm"); System.out.println(j); // 最后一次出现的时候的索引,如果不包含返回 -1 int k = t1.lastIndexOf("cd"); System.out.println(k); // 大写 String t9 = t1.toUpperCase(); // 小写 String t8 = t9.toLowerCase(); System.out.println(t9); System.out.println(t8); char[] cs2 = {'c', 'd', 'b', 'a', '1', '2'}; // 拼接全部字符 String t10 = new String(cs2); System.out.println(t10); // 从 2 开始的 3 个字符拼接为一个字符串 String t11 = new String(cs2, 2, 3); System.out.println(t11); String t12 = "1,2,3,4,5,6"; // 按照特殊标记分割字符串,得到字符串数组 String[] s3 = t12.split(","); System.out.println(Arrays.toString(s3)); }}
阅读全文
1 0
- Digdata Development Java__Study_05(String,回顾)
- Digdata Development Java__Study_10(buffer缓冲区,字符流)
- Digdata Development Java__Study_11(字符字节流 对象序列化 properties)
- Digdata Development Java__Study_12(Java实现服务器与客户端)
- Digdata Development Java__Study_13(Java中线程Thread,线程池ExecutorService)
- 知识回顾、String类
- String和Integer回顾。
- String类的回顾
- 回顾<string.h>中API
- Development
- development
- Java基础小技巧回顾--浅析String
- java零基础知识回顾(String)
- Java基础回顾 : String、StringBuffer和StringBuilder
- 小回顾-关于String的运用
- 回顾
- 回顾
- 回顾
- 扩展阅读 两个优秀的论坛(吾爱破解/看雪)
- 【Selenium】2访问某网地址(driver.navigate().to()和driver.get()使用的区别)
- 关于中缀表达式转后缀表达式
- 一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中。要求效率尽可能的高。
- STM32——GPIO设置:快速点亮第一个LED灯
- Digdata Development Java__Study_05(String,回顾)
- Struts2常用标签
- linux网络编程
- D
- RecylerView实现多种复杂条目类型布局
- 秒杀系统架构分析与实战
- 截图存储到SD卡
- STL的二级空间配置器和malloc
- 直方图内最大矩形问题