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));    }}

这里写图片描述

原创粉丝点击