200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 字符串常见方法总结:方法的作用 参数 返回值(构造方法可省略)1. 构造方法2. 静

字符串常见方法总结:方法的作用 参数 返回值(构造方法可省略)1. 构造方法2. 静

时间:2023-05-12 14:27:32

相关推荐

字符串常见方法总结:方法的作用 参数 返回值(构造方法可省略)1. 构造方法2. 静

1. 构造方法

String str1= "123abc";String str2=new String("123abc");

(1)采用方式1为string类型的引用赋值,是在方法区的字符串常量池中开辟内存空间(注意:若字符串内容相同,则两个引用指向字符串常量池中同一个地址值)

(2)采用方式2为string类型的引用赋值,实际上是在堆空间中开辟内存空间,每“new”一次都会调用一次构造器,在堆空间中开辟一个内存空间(注意:即便字符串内容相同,两个引用仍然指向堆空间中不同的地址值))

结果如下代码所示:

String str1= "123abc";String str2= "123abc";System.out.println(str1==str2);System.out.println(str1.equals(str2));String str3=new String("123abc");String str4=new String("123abc");System.out.println(str3==str4);System.out.println(str3.equals(str4));

truetruefalsetrue

(3)调用String类构造器创建字符串的应用

char[] ch= {'1','2','3','a','b','c'};String str3=new String(new char[] {'1','2','3','a','b','c'});System.out.println(str3);str3=new String(ch,2,3);System.out.println(str3);

(3.1)方式1:可以在构造器中直接传入要创建的字符串。

(3.2)方式2:可以在构造器中传入char类数组,创建字符串。(注意:char类数组也可以为匿名数组对象)

(3.3)方式3:在调用String类构造器传入char类数组创建字符串时,还可以指定数组下标和字符串的字符个数。

解析:字符串在内存中实际上是以char类型的数组存储的:private final char[] value

该value数组使用private权限修饰符修饰,不允许在string类的外部被访问到,并且使用final关键字修饰,确保该数组不能重新实例化(即char类型的value引用不能重新指向新的地址值)

(4)char类型数组和字符串的相互转化

//char[]-->Stringchar[] ch= {'a','s','d'};String str=new String(ch);System.out.println(str);

asd

(4.1)char类型数组转化为字符串的详细代码如上图所示,原理已在(3.2)(3.3)中说明,此处不在赘述。

//String-->char[]String str= "asdfghjkl";char[] charArray = str.toCharArray();System.out.println(charArray);

asdfghjkl

(4.2)字符串转化为char类型数组详细代码如上图所示,使用到了string类中的toCharArray()方法。(注意:在println方法中直接传入char类型数组可以直接遍历输出内容。原因:传入char类型数组调用的是形参为char[]的println方法<方法重载>,此方法可以直接遍历输出char类型数组的元素)。

2.静态方法 < valueOf() format() join()>

//valueOf()方法的使用int num1=123;Integer num2=12;String value1 = String.valueOf(num1);String value2 = String.valueOf(num2);System.out.println(value1);System.out.println(value2);

12312

(1)使用string类中的静态方法valueOf()可以将任意类型变量转化为字符串类型

说明:(1.1)该方法为string类的静态方法,直接通过类名调用;

(1.2)该方法为string类重载的方法,对于基本数据类型调用的是形参为对应基本数据类型的valueOf()方法; 对于基本数据类型的包装类,调用的是形参为Object类型的valueOf()方法。<此处也是方法重载和多态的很好体现>

应用:

int num = 123456;// 任意类型与空字符串拼接(不推荐)// String str1=num+"";Integer num1 = 123;// 使用string类重载的valueOf()方法String str1 = String.valueOf(num);String str2 = String.valueOf(num1);if (str2.indexOf('9') >= 0) {System.out.println("包含9");} else {System.out.println("不包含9");}

String str3 = "1243";String str4 = "1243.98";String str=str4;if (str.contains(".")) {double result = Double.parseDouble(str);System.out.println(++result);} else {int result = Integer.parseInt(str);System.out.println(--result);}

(2)使用string类中的静态方法format()返回格式化的字符串(注意:可以传入多个字符串,也可以传入一个字符串数组)

//format()方法的使用String str1="北京",str2="上海",str3="杭州";String result= String.format("城市1:%s\n城市2:%s\n城市3:%s\n", str1,str2,str3);System.out.println(result);System.out.println();String[] str4= {"北京","上海","杭州"};String result1= String.format("城市1:%s\n城市2:%s\n城市3:%s\n", str4);System.out.println(result1);

城市1:北京城市2:上海城市3:杭州城市1:北京城市2:上海城市3:杭州

(3)使用string类中的静态方法join():用指定字符(非正则表达式)拼接字符串或字符串数组中的元素

//join方法的使用String str1="北京",str2="上海",str3="杭州";String result=String.join("*", str1,str2,str3);System.out.println(result);String[] str4= {"北京","上海","杭州"};String result1=String.join("@", str4);System.out.println(result1);

北京*上海*杭州北京@上海@杭州

3.其他方法

(1)charAt()方法:给定下标找字符

//charAt()方法的使用String str= "qwetw134rety";char ch = str.charAt(2);System.out.println(ch);

e

(2)indexOf()方法:

(2.1)用法1:给定字符或字符串返回下标,不存在返回-1(查找方法)

//indexOf()方法的使用String str= "qwetw134rety";int index1 = str.indexOf('w');System.out.println(index1);int index2 = str.indexOf('o');System.out.println(index2);int index3 = str.indexOf("tw");System.out.println(index3);

1-13

(2.2)用法2:给定字符或字符串返回下次出现该字符或字符串的下标

String str= "qwetw134rety";int index1 = str.indexOf('w');//System.out.println(index1);//int index2 = str.indexOf('o');//System.out.println(index2);//int index3 = str.indexOf("tw");//System.out.println(index3);int index4 = str.indexOf("w",index1+1);System.out.println(index4);

(3)lastIndexOf()方法:给定字符或字符串返回最后一次出现该字符或字符串的下标

//lastIndexOf()方法的使用String str= "qwetw134rety";int index1 = str.lastIndexOf("t");System.out.println(index1);int index2 = str.lastIndexOf('t');System.out.println(index2);

(4)subString()方法:截取字符串

(4.1)方式1:只给定启使下标,则从该下标开始截取至尾下标;

(4.2)方式2:给定启使下标和结尾下标,从启使下标开始截取到尾下标(注意:不包含尾下标)

//subString()方法的使用String str= "qwetw134rety";String result1 = str.substring(2);System.out.println(result1);String result2 = str.substring(2,5);System.out.println(result2);

//subString()和indexOf()方法的综合应用String str= "jvisualvm.java";System.out.println(str.substring(str.indexOf('.')));

.java

(5)trim()方法:去除字符串两边的空格或空白字符

//trim()方法的使用String str1=" rty ";System.out.println(str1);System.out.println(str1.length());str1=str1.trim();System.out.println(str1);System.out.println(str1.length());String str2="\t\t\nqe\n";System.out.println(str2);System.out.println(str2.length());str2=str2.trim();System.out.println(str2);System.out.println(str2.length());

rty 7rty3qe6qe2

(6)equals()方法:string类重写了继承于Object类中的equals()方法,不在比较对象的地址值,而是比较字符串对象的实体内容是否相等。==用于引用数据类型,比较的是地址值,和Object类中的equals()方法作用相同。

//equals方法的使用String str1="123";String str2="123";System.out.println(str1==str2);System.out.println(str1.equals(str2));String str3=new String("123");String str4=new String("123");System.out.println(str3==str4);System.out.println(str3.equals(str4));

//判断是否等于nullSystem.out.println(str3 == null);System.out.println(str4 == null);//判断是否为空串//System.out.println(str3.equals(""));//引发空指针异常//避免空指针System.out.println(str3!=null && str3.equals(""));System.out.println("".equals(str3));System.out.println(str4.length()==0);System.out.println(str4.isEmpty());

(7)isEmpty()方法的使用:判断字符串是否为空串,返回布尔值

//isEmpty()方法的使用String str1="";String str2="123";System.out.println(str1.isEmpty());System.out.println(str2.isEmpty());

truefalse

(8)replace()方法的使用:给定旧字符和新字符,用新字符替换旧字符

//replace()方法的使用String str1 ="渭城朝雨浥轻尘,客舍青青柳色新";str1=str1.replace('雨', '霞');System.out.println(str1);str1=str1.replace('青', '绿');System.out.println(str1);str1=str1.replace('雨', '霞').replace('青', '绿');System.out.println(str1);

渭城朝霞浥轻尘,客舍青青柳色新渭城朝霞浥轻尘,客舍绿绿柳色新渭城朝霞浥轻尘,客舍绿绿柳色新

注意:也可以替换字符串

str1=str1.replace("渭城", "渭城区");System.out.println(str1);

渭城区朝霞浥轻尘,客舍绿绿柳色新

(9)replaceAll()方法的使用:格式化替换(正则表达式)

//replaceAll()方法的使用String str2 = "\"You\" (or \"Your\") sha1ll mean; an individu2al,or Legal En4tity exercisin9g. permissions granted by this License.";//格式化替换,替换双引号用一个\str2=str2.replaceAll("[\"\\,\\.\\;]", "").replaceAll("[0-9]", "");

You (or Your) shall mean an individualor Legal Entity exercising permissions granted by this License

(10)replaceFirst()方法的使用:只对一个正则表达式起作用而且只替换第一次出现的

//replaceFirst()方法的使用str2=str2.replaceFirst("[\"\\,\\.\\;]", "").replaceFirst("[0-9]", "");System.out.println(str2);

You" (or "Your") shall mean; an individu2al,or Legal En4tity exercisin9g. permissions granted by this License.

(11)split()方法的使用:格式化分割,返回string类型字符串

//split()方法的使用:格式化分割,返回string类型字符串String str1="北京,天津,上海,深圳,广州";String[] retultArray=str1.split("\\,");for(String s :retultArray) {System.out.println(s);}

北京天津上海深圳广州

(12)toCharArray()方法:将字符串转化为char类型数组(在1.(4.2)中已经详细讲过)

String s="巴山楚水凄凉地";//将字符串转换成字符数组char[] array =s.toCharArray();System.out.println(array);

巴山楚水凄凉地

(13)contains()方法的使用:判断字符串中是否含有某个子字符串,返回布尔值(注意:不能为字符)

//contains()方法的使用String str="eryeuri";System.out.println(str.contains("e"));System.out.println(str.contains("o"));

truefalse

(14)startsWith()方法:判断一个字符串是否以指定子字符串开头,返回布尔值

//startsWith()方法的使用String str="eryeuri";System.out.println(str.startsWith("er"));

(15)endsWith()方法:判断一个字符串是否以指定子字符串结尾,返回布尔值

//endsWith()方法的使用String str="gjhlklkj";System.out.println(str.endsWith("kj"));

true

(16)getByte()方法:返回字符串的字符编码集(byte类型数组)(注意;若没有传入参数,返回默认编码集,传入参数返回指定的编码集)

String s="中";byte[] array1=s.getBytes();System.out.println(Arrays.toString(array1));byte[] array2=s.getBytes("utf-8");System.out.println(Arrays.toString(array2));byte[] array3=s.getBytes(StandardCharsets.UTF_8);System.out.println(Arrays.toString(array3));byte[] array4=s.getBytes("gb2312");System.out.println(Arrays.toString(array4));

(17)创建字符串的几种方式:

//创建字符串String s1="中";String s2=new String("中");String s3=new String(new char[] {'中'});//按照编码值(字节值)创建字符串byte[] b1= {-28,-72,-83};String s4=new String(b1,StandardCharsets.UTF_8);System.out.println(s4);byte[] b2= {-42,-48};String s5=new String(b2,"gb2312");System.out.println(s5);

字符串常见方法总结:方法的作用 参数 返回值(构造方法可省略)1. 构造方法2. 静态方法3. 其它方法

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。