Java String类常用方法解释+用法大全

更新时间:2021-10-13 15:28:27点击次数:206次
String类
public final class String
extends Object
implements Serializable, Comparable, CharSequence
因为有final修饰,所以String类不能有子类,用户不能扩展String类。

构造String对象
String对象也叫字符串对象
①常量对象
String常量也是对象,用英文双引号括起来的字符序列,如"hi",“12.48”,"你好"等。
Java把用户程序中的String常量放入常量池中


String a1="hi";
String a4="hi";
System.out.println(a1==a4); //true

②String对象
可以使用String类声明对象并创建对象。

String s=new String("hi");
String t=new String("hi");
System.out.println(s==t); //false  比较地址
System.out.println(s.equals(t));//true  比较内容

创建对象s的过程,new运算符首先分配内存空间并在内存空间放入字符序列,然后计算引用,将引用赋值给字符串对象s。凡是new运算符构造出的对象都不在常量池


当String t="你好"时,会把String常量”你好“的引用赋值给 t对象。


可以使用String常量的时候尽量不要使用new String对象,这样赋值可以省下内存空间。

String类中两个常用的构造方法。
(1)String( char[] c) 用一个字符数组a创建一个String对象,

char[] c={'J','a','v','a'};
String str=new String(c);

相当于:String str = new String(“Java”);
(2)String(char[] a , int startIndex, int count) 提取字符数组a中的一部分字符创建一个String对象,参数startIndex和count分别指定在a中提取字符的起始位置和从该位置开始截取的字符个数,如下:

char[] c={'J','a','v','a'};
String s=new String (c,1,3);
System.out.println(s); //输出 ava

字符串的并置
String对象可以用“+”进行并置,首尾相接得到一个新的String对象。如

String a1="hi";
String a9="h";
String a10="i";
String a11=a9+"i";
String a12="h"+"i";
System.out.println(a1==a11); //false
System.out.println(a1==a12); //true
System.out.println(a1.equals(a11)); //true
System.out.println(a1.equals(a12)); //true

注意:参加并置运算的String对象只要有一个是变量,那么Java就会在动态区所得到的新String对象的实体和引用。如果都是常量进行并置运算,那么得到的仍然是常量,如果常量池没有这个常量就放入常量池,如果有就得到常量池的已存在的引用。

String类的常用方法
①长度
public int length()
含义:是获取一个String对象的字符序列的长度,如下:

String s="java 你好";
String t="hallo";
System.out.println(s.length());  //输出:7

②相等
public boolean equals(String v)
含义:String对象调用equals(String v)方法比较当前String对象的字符序列是否与参数v指定的String对象的字符序列相同,如下:

String s="java 你好";
String t="hallo";
System.out.println(s.equals(t));  //输出:false

③前缀
public boolean startsWith(String v),public boolean endsWith(String v)
startsWith(String v)含义:判断当前String对象的字符序列前缀是否是参数指定的String对象v的字符序列。
startsWith(String v)含义:判断当前String对象的字符序列后缀是否是参数指定的String对象v的字符序列。

String s="java 你好";
System.out.println(s.startsWith("java")); //true
System.out.println(s.startsWith("你",5)); //true
System.out.println(s.endsWith("你好")); //true
System.out.println(s.endsWith("你")); //false

④比较
public int compareTo(String s)
含义:按字典序和参数字符比较,大返回整数,相等为零,小返回负数。
public int compareToIgnoreCase(String s)
含义:按字典序和参数字符比较,忽略大小写

String str ="a";
String str2="A";
System.out.println(str.compareTo(str2)); //输出:32
System.out.println(str.compareToIgnoreCase(str2)); //输出:0 

⑤包含
public boolean contains(String s)
含义:当且仅当此字符串包含指定的char值序列时才返回true

String str ="aAAA";
String str2="A";
System.out.println(str.contains(str2)) //输出:true

⑥出现的位置
public int indexOf(String s)
含义:只有字符参数时,从0开始,第一次出现参数字符串的位置;
两个参数时,从索引值开始,第一次出现参数字符串的位置。
public int lastIndexOf(String s)
含义:从0开始,最后一次出现参数字符串的位置

String str ="aA  AA";
String str2="A";
System.out.println(str.indexOf(str2)); //输出: 1
System.out.println(str.indexOf(str2,2)); //输出:4
System.out.println(str.lastIndexOf(str2)); //输出:5

⑦子串
public String substring(int startpoint)
含义:返回从参数索引位置开始到最后位置上的字符所得到的字符序列。
public String substring(int start,int end)
含义:返回从start位置开始到end-1位置上的字符所得到的字符序列。

String str3="Hello Java";
System.out.println(str3.substring(6)); //输出:Java
System.out.println(str3.substring(0,5)); //输出:Hello

⑧去前后空格
public String trim()
含义:返回当前String对象的字符序列去掉前后空格的字符序列。

String str4=" he llo ";
System.out.println(str4.trim()); //输出:he llo

⑨返回索引处的值
public char charAt(int index)
含义:返回指定索引处的值

System.out.println(str4.charAt(1)); //输出:h
⑩连接
public String concat(String str)
含义:将指定的字符串连接到该字符串的末尾

String str3="Hello Java";
String str4=" he llo ";
System.out.println(str3.concat(str4)); //输出:Hello Java he llo 

11 、复制字符串到字符数组
public char[] toCharArray()
含义:将此字符串转换为新的字符数组。

String str4="hello";
char[] c2=str4.toCharArray();
System.out.println(c2); //输出:hello

public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
含义:将此字符串中的字符复制到目标字符数组中。char[] dst目标字符数组, dstBegin字符数组索引值(注意:确保目标字符数组可以容纳复制i的字符数)

String str3="Hello Java";
char[] chars= new char[]{'0','5','3','2','2','7'};
str3.getChars(0,5,chars,0);
System.out.println(chars); 输出:Hello7

12 、替换
public String replace(StringoldChar, String newChar)
含义:后一个参数字符串替换此字符串中出现的前一个参数字符串
replaceAll()和replace()效果类似;
replaceFirst()替换第一次出现的字符
replaceAll()和replaceFirst()可以使用正则表达式,replace()不可以

String string="AaAaA";
System.out.println(string.replace("Aa","B"));//输出: BBA
System.out.println(string.replaceFirst("A","B"));//输出:BaAaA
System.out.println(string.replaceAll("A","B"));//输出:BaBaB
System.out.println(string.replaceFirst("[a]","你"));//输出:A你AaA
System.out.println(string.replaceAll("[a]","你"));//输出:A你A你A

13、分割
public String[] split (String regex),参数为分割符
含义:将此字符串分割为字符串数组

String string="AabbffAaAaAaAaAa";
for(String s1:string.split("a")){
   System.out.print(s1);  //输出:AbbffAAAAA
}

System.out.println();
/*当有2个参数时,需要注意,如下第二个参数为割到第5个分割符(不割5),
*参数大于或小于分隔符的数量时都是分割全部分割符*/
for(String s1:string.split("a",5)){ 
   System.out.print(s1); //输出:AbbffAAAAaAa
}

14、 大写转换

String string="AabbffAaAaAaAaAa";
System.out.println(string.toLowerCase()); //输出:aabbffaaaaaaaaaa
System.out.println(string.toUpperCase());//输出:AABBFFAAAAAAAAAA

15、 字符串与基本数据的相互转化

byte b=2;
short sh=23;
int i=100;
float f=123.2f;
double d=22.22;
long l=12345678l;
System.out.println(String.valueOf(b)+88);//输出:288
System.out.println(String.valueOf(sh)+88);//输出:2388
System.out.println(String.valueOf(i)+88);//输出:10088
System.out.println(String.valueOf(f)+88);//输出:123.288
System.out.println(String.valueOf(d)+88);//输出:22.2288
System.out.println(String.valueOf(l)+88);//输出:1234567888
String st2="36";
String st="36513.234";
String st3="36234234234242342";
System.out.println(Byte.parseByte(st2)+1);//输出:37
System.out.println(Short.parseShort(st2)+1);//输出:37
System.out.println(Integer.parseInt(st2)+1);//输出:37
System.out.println(Float.parseFloat(st)+1);//输出:36514.234
System.out.println(Double.parseDouble(st)+1);//输出:36514.234
System.out.println(Long.parseLong(st3)+1);//输出:36234234234242343

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息