java基础之String类

String

  • String类的两种实例化方法
  • String类字符串常量与StringBuffer的区别
  • String类对正则的支持

1.1字符串:

   一串字符组成字符串,CharSequence是字符串的最高的父接口,常用的实现类有两个:

         ·String

         ·StringBuffer

不管是String对象还是StringBuffer的对象,都叫做字符串对象,简称字符串。

1.2类对象的实例化方式

两种实例化方式:

  •          ·通过直接赋值完成
  •          ·通过new关键字调用String的构造方法

     String s1 = "张三";//直接使用赋值形式完成字符串对象实例化

       String s2 = new String("张三");//通过new关键字实例化字符串对象

在开发中,我们一般只会使用第一种方式完成字符串的实例化,使用直接赋值的形式,会先去堆内存空间查找是否有相同内容的空间,如果有则直接指向此空间,如果没有则开辟新的空间并且赋值。

String类提供了length()方法用于取得字符串的长度。

package com.wanczy.stringDemo;

public class StringDemo01 {
    public static void main(String[] args) {
        String s1 = "张三";//直接使用赋值形式完成字符串对象实例化
        String s2 = new String("张三");//通过new关键字实例化字符串对象
        System.out.println(s1.length());//取得字符串的长度
    }
}

注意:

    对于字符串的比较,因为是对象,所以不能使用==来比较,必须使用equal()方法比较内容是否相同。

package com.wanczy.stringDemo;

public class StringDemo01 {
    public static void main(String[] args) {
        String s1 = "张三";//直接使用赋值形式完成字符串对象实例化
        String s2 = new String("张三");//通过new关键字实例化字符串对象
        System.out.println(s1);
        System.out.println(s2);
        
        System.out.println(s1 == s2);//比较堆内存空间的地址是否相同
        System.out.println(s1.equals(s2));//比较字符串内容是否相同
      "".equals(s1);//使用""围起来的就是字符串对象
    }
}

注意:字符串一旦申明,则无法改变,指的是堆内存空间的内容无法改变。

        /*for (int i = 0; i < 100; i++) {
            s1 = s1+i;//效率非常低
        }*/
        StringBuffer sb = new StringBuffer(s1);
        for (int i = 0; i < 100; i++) {
            sb.append(i);//追加
        }
            System.out.println(sb);
    }
    

String类的常用的操作方法有很多:

·构造方法

         ·public String(byte[] bytes):实例化字符串对象,参数是字节数组

         ·public String(byte[] bytes,  Charset charset):以指定的编码格式将字节数组转换成字符串

         ·public String(byte[] bytes,   int offset,   int length):将字节数组的一部分转换成字符串

         ·public String(char[] value):将字符数组转换成字符串

         ·public String(char[] value,  int offset,  int count):将字符数组的一部分转换成字符串

·普通方法

         ·public String concat(String str) 和+号效果相同。

         ·public boolean endsWith(String suffix):是否以指定的字符串结尾,不支持正则

         ·public boolean equals(Object anObject):判断内容是否相同

         ·public byte[] getBytes():将字符串转化成字节数组

         ·public byte[] getBytes(Charset charset):转换成指定编码格式的字节数组

         ·public int indexOf(String str):是否存在指定的字符串,存在返回下标,不存在返回-1

         ·public boolean isEmpty():判断是否为空

         ·public int lastIndexOf(String str):返回最后一次出现的下标,不存在返回-1

         ·public int length():返回字符串长度

         ·public boolean matches(String regex):字符串匹配方法,支持正则

         ·public String replace(char oldChar, char newChar):进行单个字符替换

         ·public String replace(CharSequence target,  CharSequence replacement):字符串替换

         ·public String replaceAll(String regex,  String replacement):替换全部匹配的字符串

         ·public String replaceFirst(String regex,  String replacement):替换第一个匹配的字符串

         ·public String[] split(String regex):字符串分割,支持正则分割

         ·public boolean startsWith(String prefix):判断是否以指定的字符串开始

         ·public String substring(int beginIndex,  int endIndex):字符串截取,从beginIndex开始,到endIndex -1 结束

         ·public char[] toCharArray():转换成字符数组

         ·public String toLowerCase():所有的大写变小写

         ·public String toUpperCase():所有的小写变大写

         ·public String trim():去掉字符串前后空格

         ·public static String valueOf(基本数据类型):将基本数据类型转换成字符串

2.String类对正则的支持,主要是体现在支持正则的方法上面:

         ·匹配

         ·替换所有

         ·替换第一次匹配

         ·分割

package com.wanczy.stringDemo;

public class StringDemo03 {
    public static void main(String[] args) {
//        String s = "12341a2432143";
//        if(s.matches("\d+")){
//            System.out.println("全部由数字组成");
//        }else{
//            System.out.println("不全部是由数字组成");
//        }
        
//        String s = "asd2323asdf444sadf34";
//        s = s.replaceAll("\d+", "大家好才是真的好");//替换全部匹配内容
//        System.out.println(s);
//        String s = "asd2323asdf444sadf34";
//        s = s.replaceAll("a", "大家好才是真的好");
//        System.out.println(s);
//        String s = "asd2323asdf444sadf34";
//        s = s.replaceFirst("\d+", "大家好才是真的好");//替换第一次匹配内容
//        System.out.println(s);
        
        String s = "asd2 323a sdf 44 4s,adf 3,4";
        String sa[] = s.split(" ");
        for (int i = 0; i < sa.length; i++) {
            System.out.println(sa[i]);
        }
    }
}

3.总结

·String类对象的实例化

       ·要去理解String类的一些构造方法(byte数组转换成指定编码的字符串,char数组转换成字符串)

       ·将StringBuffer对象转换成String类对象(toString()方法,还有就是new String(StringBuffer sb))

       ·学会使用String类中的方法。

原文地址:https://www.cnblogs.com/wusha/p/7158157.html