API常用类之String类

String类概述

字符串是由多个字符组成的一串数据(字符序列)的字符串常量,java中所有字符串都是String类的实例.

有两种创建形式:

第一种:

String s1="abc";

先在栈中创建一个对String类的对象引用变量s,然后去字符串常量池中查找有没有"abc", 如果没有则在常量池中添加”abc”, s引用变量指向常量池中的”abc”,如果常量池中有,则直接指向改地址即可,不用重新创建.

class Demo{
public static void mian(String[] args){
       String s3="abc";
        String s30="abc";
    //s3和s30比较的是同一地址,因此返回的是true
        System.out.println(s3==s30);
        s3+="def";
        s3+="123";
    //s3每次进行加的操作都是指向了一个新的地址,而前一次的s3会随着时间被系统回收释放。
        System.out.println(s3);
}
}

第二种:

一概在堆中创建新对象,值存储在堆内存的对象中。String s = new String("abc");

class Demo{
      public static void main(String [] args){
 /*
            new +构造方法
            凡是new 出来的,在内存空间中是独一无二的.
          */
         String s3 = new String("abc");
         String s4 = new String("abc");
         System.out.println(s3==s4);//地址并不相同
        System.out.println(s3.equals(s4));//String类中已经把equals方法重写过了
        }
 }

 

 简化的创建方式

 先去字符串常量池中查找,有没有abc,如果没有就在字符串常量中创建一个对象(abc)                            

 如果字符串常量中已经存在abc,那么直接指向已有的对象即可 

 

构造方法

public String()

public String(String str)

public String(byte[] bytes)

public String(char[] value)

判断功能

boolean equals(Object obj) //判断对象中的内容是否相等(若直接调用Object中的方法比较的则是地址)

boolean equalsIgnoreCase(String str) //比较字符内容是否相同,不区分大小写,A-Z与a-z结果相同,都返回true 

--------------------------------------------------------------------------------------------------

        String s1="abcdefg";
        String ss="ABCDEFG";
        System.out.println(s1.equalsIgnoreCase(ss));//返回值为true

--------------------------------------------------------------------------------------------------------

boolean contains(String str) //判断字符串中是否有指定的char值序列

----------------------------------------------------------------------------------------------------------------

        String s1="abcdefg";
        String ss="abc";
        System.out.println(s1.contains(ss));//返回值为true

----------------------------------------------------------------------------------------------------------------

boolean isEmpty() //判断字符串是否为空

-------------------------------------------------------------------------------------------------------------------

        String s1="abcdefg";
        String ss="";
        System.out.println(s1.isEmpty());//返回值为false
        System.out.println(ss.isEmpty());//返回值为true

-----------------------------------------------------------------------------------------------------------------

boolean startsWith(String prefix) //判断开始的字符串是否为输入的字符串

boolean endsWith(String suffix)//判断结尾的字符串是否为输入的字符串

----------------------------------------------------------------------------------------------------------

        String s1="abcdefg";
        System.out.println(s1.startsWith("abcd"));//返回值为true
        System.out.println(s1.endsWith("fg"));//返回值为true

----------------------------------------------------------------------------------------------------------

int compareTo(String str)//字符串比大小

--------------------------------------------------------------------------------------------------------

public class Demo{
   public static void main(String[] args){
       String s3 = "abc";
        String s4 = "efg";
        System.out.println(s3.compareTo(s4));返回值为-4
   }
}

------------------------------------------------------------------------------------------------------------

获取功能

int length() //获取字符串的长度(字符串本来就是有字符类型的数组组成的)

char charAt(int index) //获取当前字符串输入位置的字符

String substring(int start,int end)//获取输入位置范围的字符串

------------------------------------------------------------------------------------------------------------------

     String s1="abcdefg";
     String s2="abcddefgfe";

        //找到部分范围内的字符串,再在部分范围内中输出0位置的那个
     System.out.println(s1.substring(2,3).charAt(0));//返回值为c
       //charAt返回的为字符(char类型),subString不管有几个返回的都是字符串(String类型)compareTo方法需要用String类型比较
     System.out.println(s2.substring(0,1).compareTo(s1.substring(0,1)));//返回值为0
    //compareTo()方法是用相减的方式,返回值也为两数相减值

--------------------------------------------------------------------------------------------------------------------------

int indexOf(String str) //返回字符串中想要找的字符的位置(数组的位置)

------------------------------------------------------------------------------------------------------------------

String s1="abcdefg";
 char c='b';
//从前向后找只出现首次出现的位置
 System.out.println(s1.indexOf(c));//返回值为1

-----------------------------------------------------------------------------------------------------------------

int indexOf(String str,int fromIndex) //寻找指定字符串中指定位置之后出现的指定字符的位置,若在指定位置后未出现则返回-1,找到就返回位置

-----------------------------------------------------------------------------------------------------------

String s = "abcdefgd";
int index1 = s.indexOf("d",index+1);//从前向后找 从指定位置开始
System.out.println(index1);//返回值为7

---------------------------------------------------------------------------------------------------------

int lastindexof(String str) //返回从后搜索第一个想要找的字符的位置

--------------------------------------------------------------------------------------------------------

String s1="abcdcefg";
char c='c';
System.out.println(s1.lastindexOf(c));//返回值为4

------------------------------------------------------------------------------------------------------

String substring(int start) //从输入的数开始返回字符串中的字符串

------------------------------------------------------------------------------------------------------

String s1="abcdefg";

System.out.println(s1.substring(2));//返回值为cdefg

-----------------------------------------------------------------------------------------------------

byte[] getBytes()

将String类型字符串转换为byte类型数组

以下是编码再解码的过程

String s = "你好";
//默认是utf-8编码  在utf-8编码中,一个汉字占3个字节 [-28, -67, -96, -27, -91, -67]

        byte[] b = s.getBytes("UTF-8");//编码
        System.out.println(Arrays.toString(b));
     //输出  你好
String s1 =  new String(b,"UTF-8");//解码
        System.out.println(s1);//输出   你好

char[] toCharArray() //将字符串类型转换为数组

String s = "abcd";
        char[] chars =  s.toCharArray(); //将字符串转换为一个新的char数组
        System.out.println(Arrays.toString(chars));
        String s1 =  new String(chars); //将char数组 转为字符串
        System.out.println(s1);

static String valueOf(char[] chs) //将数组转换为字符串

String s = "abcd";
        char[] chars =  s.toCharArray(); //将字符串转换为一个新的char数组
String s2 =  String.valueOf(chars);
        System.out.println(s2);

String toLowerCase() //将大写字母转换为小写字母

tring toUpperCase() //将小写字母转换为大写字母

String s3 = "abcdEFG一";
        System.out.println(s3.toUpperCase());//转大写
        System.out.println(s3.toLowerCase());//转小写

String concat(String str) //在字符串后加字符串类型内容,返回连接后的字符串

String s3 = "abcdEFG一";
String s4 = s3.concat("11");  // + 可以连接其他类型
        System.out.println(s4);//abcdEFG一11

Stirng[] split(分割符)//以输入的内容(可以为正则表达式,字符串)为分隔符,返回类型为字符串类型数组

String s6="abcdedf";
        String[] arr=s6.split("d");
        System.out.println(Arrays.toString(arr));

替换功能

String replace(char old,char new) //以想要替换的字符串替代指定的字符串(替换的内容是一个字符)

String replace(String old,String new)

 String s = "ab2cd6ef3cg";
        String sn = s.replace('c', 'C');//将c换成C
        System.out.println(s);//ab2cd6ef3cg
        System.out.println(sn);//ab2Cd6efCg

replaceAll(String regex, String replacement) //replaceAll("正则表达式 是一种模式匹配",“新的字符串”) 符合正则表达式的全部进行替换

replaceFirst(String regex, String replacement) //代替第一个符合规则regex的字符串并进行替换

 String sn1 = s.replaceAll("\\d","D");
        System.out.println(sn1);//abDcdDefDcg
 String sn2 = s.replaceFirst("\\d", "D");
        System.out.println(sn2);//abDcd6ef3cg

去除字符串两空格

String trim()

String s1 = " abc d ";
        System.out.println(s1.length());
        System.out.println(s1.trim().length()); //只能去除字符串两端的空格,中间的不能去除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值