String类常用操作及常用方法

String类

String:字符串,使用一对""号表示

  1. String声明为final的,不可以被继承
  2. String实现了Serializable接口,表示String支持序列化
  3. Comparable接口,String可以比较大小
  4. String内部定义了final char value[]用于存储字符串数据
  5. String:代表不可变的字符序列,简称不可变性
  6. 通过字面量定义方式给一个字符串赋值,此时字符串值声明在字符串常量池中
  7. 字符串常量池中不会存储相同内容的字符串的
public class Test2 {
    public static void main(String[] args) {
        //字面式定义
        //体现:String时不可变性的三中方式
        //当对字符串重新赋值时,会创建新的内存地址指向新的内存地址,不会改变原来内存地址的值
        String s1="abc"; //字面量定义方式
        String s2="abc";
        s1="hello";
        System.out.println(s1);
        System.out.println(s2);
        //当对现有的字符串进行拼接操作时,会创建新的内存地址指向新的内存地址,不会改变原来内存地址的值
        String s3="abc";
        s3+="def";
        System.out.println(s3);
        //当对现有的进行替换,会创建新的内存地址指向新的内存地址,不会改变原来内存地址的值
        String s4="abc";
        String replace = s4.replace("a", "c");
        System.out.println(replace);
        System.out.println(s4);
    }
}
public class Test3 {
    public static void main(String[] args) {
        //new+构造器创建
        //字面式定义,声明在方法区常量池中
        String s1="hello";
        String s2="hello";
        //new+构造器定义是在堆中开辟空间以后对应的地址值
        String s3 = new String("hello");
        String s4 = new String("hello");
        System.out.println(s1 == s2);//true
        System.out.println(s1 == s3);//false
        System.out.println(s3 == s4);//false
        //面试题
        //String s3 = new String("hello");在内存中创建了几个对象
        //两个,一个是堆空间new结构,一个是char[] 常量池中的数据"hello"
    }
}

不同拼接操作的比较

public class Test4 {
    public static void main(String[] args) {
        String s1="javase";
        String s2="javaee";
        String s3="javasejavaee";
        String s4="javase"+"javaee";
        String s5=s1+"javaee";
        String s6="javase"+s2;
        String s7=s1+s2;
        //在比较是常量的时候,拼接的结果是相同的
        System.out.println(s3 == s4);//true
        //拼接的时候有变量,拼接的结果是不不相同的
        System.out.println(s3 == s5);//false
        System.out.println(s3 == s6);//false
        System.out.println(s3 == s7);//false
        //如果想要它在常量池中,就可以使用intern()方法,返回值放在常量池中
        String intern = s5.intern();
        System.out.println(intern==s3);
    }
}

String类的常用方法

  1. 查看字符串的长度

  2. 取出指定下标的字符

  3. 判断字符串是否为空

  4. 把字符串变成小写

  5. 把字符串变成大写

  6. 返回字符串的副本,忽略前导空白与尾部空白

  7. 比较字符串的内容是否相同

  8. 比较字符串的内容是否相同 忽略大小写

  9. 把s2的内容拼接到s1后面,等价于+

  10. 比较两个字符串的大小

  11. 字符串截取从哪个位置开始

  12. 字符串截取从哪个位置开始到哪个位置结束,不包括最后那个位置

  13. 测试字符串是否可以使用指定的前缀

  14. 测试字符串是否可以使用指定的后缀

  15. 测试字符串是否可以使用指定的前缀,从那个下标开始

  16. 判断字符串是否包含括号里的字符串

  17. 返回括号里第一次出现字符串的下标

  18. 下标从哪个位置开始,第一次出现的str字符串

  19. 返回指定字符串在最右边出现的下标

  20. 返回指定下标开始,从右往左,最后出现的字符串的下标

  21. indexOf()和lastIndexOf()找不到指定的字符串的下标会返回-1

  22. 把指定的字符串替换成新的字符串

  23. 把指定的字符替换成新的字符

  24. 根据正则表达式来替换字符串

  25. 先把数字替换成逗号,在把前缀逗号和后缀逗号替换成空字符

  26. 根据正则表达式判断字符串是否全是数字组

  27. 根据正则表达式判断字符串是否是一个杭州固定电话

public class Test4 {
    public static void main(String[] args) {
        String s1="HelloWorld";
        //查看字符串的长度
        System.out.println(s1.length());
        //取出指定下标的字符
        System.out.println(s1.charAt(0));
        //判断字符串是否为空
        System.out.println(s1.isEmpty());
        //把字符串变成小写
        System.out.println(s1.toLowerCase());
        //把字符串变成大写
        System.out.println(s1.toUpperCase());
        String s2="   Hello   World    ";
        //返回字符串的副本,忽略前导空白与尾部空白
        System.out.println(s2.trim());
        //比较字符串的内容是否相同
        System.out.println(s1.equals(s2));
        //比较字符串的内容是否相同 忽略大小写
        System.out.println(s1.equalsIgnoreCase(s2));
        //把s2的内容拼接到s1后面,等价于+
        System.out.println(s1.concat(s2));
        //比较两个字符串的大小
        System.out.println(s2.compareTo(s1));
        //字符串截取从哪个位置开始
        System.out.println(s1.substring(4));
        //字符串截取从哪个位置开始到哪个位置结束,不包括最后那个位置
        System.out.println(s1.substring(2, 5));
        String s3="helloworld";
        //测试字符串是否可以使用指定的前缀
        System.out.println(s3.startsWith("he"));
        //测试字符串是否可以使用指定的后缀
        System.out.println(s3.endsWith("ld"));
        //测试字符串是否可以使用指定的前缀,从那个下标开始
        System.out.println(s3.startsWith("wo", 5));
        //判断字符串是否包含括号里的字符串
        System.out.println(s3.contains("lo"));
        //返回括号里第一次出现字符串的下标
        System.out.println(s3.indexOf("ll"));
        //下标从哪个位置开始,第一次出现的str字符串
        System.out.println(s3.indexOf("wo", 4));
        //返回指定字符串在最右边出现的下标
        System.out.println(s3.lastIndexOf("ld"));
        //返回指定下标开始,从右往左,最后出现的字符串的下标
        //indexOf()和lastIndexOf()找不到指定的字符串的下标会返回-1
        System.out.println(s3.lastIndexOf("r", 8));
        String s4="好好学习,天天向上";
        //把指定的字符串替换成新的字符串
        System.out.println(s4.replace("好好", "认真"));
        //把指定的字符替换成新的字符
        System.out.println(s4.replace('学', '复'));
        String str ="12hello034world5java7891mysql456";
        //根据正则表达式来替换字符串
        //先把数字替换成逗号,在把前缀逗号和后缀逗号替换成空字符
        System.out.println(str.replaceAll("\\d+", ",").replaceAll("^,|,$",""));
        str="1234567";
        //根据正则表达式判断字符串是否全是数字组成
        System.out.println(str.matches("\\d+"));
        str="0571-4534289";
        //根据正则表达式判断字符串是否是一个杭州固定电话
        System.out.println(str.matches("0571-\\d{7,8}"));
    }
}

String类型的转换

 		String number="123456";
        //String-->基本数据类型,包装类通过parsexxx();
        int i = Integer.parseInt(number);
        System.out.println(i);
        //基本数据类型,包装类-->String通过String.valueOf()
        System.out.println(String.valueOf(i));

posted @ 2020-12-21 09:50  博客帅帅  阅读(296)  评论(0)    收藏  举报
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css