喜欢的点赞支持一下~
String类public final class String
extends Object
implements Serializable, Comparable, CharSequence
因为有final修饰,所以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();
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
下图是注释一些常用的方法
学习、共勉,喜欢的点赞支持一下



