String类中方法详细讲解

news/2025/1/21 10:09:48/

学习目标:

String类方法详细讲解

学习内容:

1、value属性

了解String类的value属性:
private final char value[] ; //String类的不可变特性就是在这里体现的。
私有的 不可更改的char类型的数组。

2.String类的构造方法

掌握String类的构造方法,用于创建对象。

String str = "abc";	//该方式创建的对象存在于字符串常量池中
String str1 = new String("abc");//参数是String类型的	//该方式创建的对象存在于堆内存中,开辟了对象空间,对象的value数组中存储着a,b,c三个字符。
char[] charArray = {'a','b','c','d','e','f'};
String str2 = new String(charArray);-	//参数是字符类型数组	//该方式是将字符数组中的字符都存储在新对象的value数组中。
String string1 = new String(charArray,2,5);  //三个参数,第一个是给定数组,第二个是从那个索引位置开始,拿几个
System.out.println(s6);
byte[] byteArray = {1,2,3,4,5,6};
String string2 = new String(byteArray,2,4);-	//参数是byte类型数组	//该方式是将byte数组中的数字都存储在新对象的value数组中。
String s2 = new String(charArray,2,5);  //三个参数,第一个是给定数组,第二个是从那个索引位置开始,拿几个
System.out.println(s6);
String str4 = "";	//创建空字符串
String str5 = new String("");//创建空字符串
StringBuffer sbr = new StringBuffer();String str6 = new String(sbr);	//参数是StringBuffer类型的,如果看不懂这个可以跳过,等String类学完之后学习StringBuffer自然明白。
StringBuilder sbr1 = new StringBuilder();
String str7 = new String(sbr1);	//参数是StringBuffer类型的,如果看不懂这个可以跳过,等String类学完之后学习StringBuffer自然明白。

3、indexOf()

掌握String类的indexOf()方法,该方法存在方法重载,返回值为int类型。

        String str = "abcdabcd";System.out.println(str.indexOf('b'));   //从索引为0的位置开始找b字符    //1System.out.println(str.indexOf("bc"));  //从索引为0的位置开始找bc字符串    //1System.out.println(str.indexOf("b",str.indexOf("b")+1));//从索引为0的位置开始找b字符串,然后以b字符串的索引加1的位置开始找第二个b字符串    //5System.out.println(str.indexOf('b',str.indexOf('b')+1));//从索引为0的位置开始找b字符,然后以b字符串的索引加1的位置开始找第二个b字符    //5

4、LastIndexOf()

掌握String类的LastIndexOf()方法,该方法存在方法重载,返回值为int类型。

        System.out.println(str.lastIndexOf('b'));//从索引为str.length-1的位置开始从尾到头找b字符,找到后返回其索引    //5System.out.println(str.lastIndexOf("bc"));//从索引为str.length-1的位置开始从尾到头找bc字符串,找到后返回其索引    //5System.out.println(str.lastIndexOf("b",str.lastIndexOf("b")-1));//从索引为str.length-1的位置开始从尾到头找b字符串,然后用其索引-1的位置开始继续从尾到头找第二个b字符串    //1System.out.println(str.lastIndexOf('b',str.lastIndexOf('b')-1));//从索引为str.length-1的位置开始从尾到头找b字符,然后用其索引-1的位置开始继续从尾到头找第二个b字符    //1

5.startsWith()

掌握String类的startsWith() //是否以某字符串开头 //返回值为boolean类型。

String str = "abcdabcd";
System.out.println(str.startsWith("abcd"));     //true
System.out.println(str.startsWith("dcba"));     //false

6.endsWith()

掌握String类的endsWith() //是否以某字符串开头 //返回值为boolean类型。

String str = "abcdabcd";
System.out.println(str.endsWith("abcd"));       //true
System.out.println(str.endsWith(".java"));      //false

7.contains()

掌握String类的contains() //是否存在某参数字符串存在于给定字符串中 //返回值为boolean类型

String str = "abcdabcd";
System.out.println(str.contains("bc"));     //true
System.out.println(str.contains("da"));     //true
System.out.println(str.contains("gg"));     //false

8.substring()

掌握String类的substring() //截取字符串 存在方法重载 有返回值,返回的是截取的字符串。

String str = "abcdabcd";
String str1 = "emo01.java";
System.out.println(str.substring(0));   //截取字符串,从索引为0开始截取到完
System.out.println(str1.substring(5));      //截取字符串,从索引为5开始截取到完
System.out.println(str1.substring(0,6));    //截取字符串,从索引为0开是截取到到给定的第二个参数减1的位置为止,即[0,6),左闭右开区间//看懂上面的不妨自己解读一下下面的命令执行步骤是什么样子的,会输出什么结果。
System.out.println(str.startsWith(str.substring(str.indexOf('a'),str.indexOf('a',str.indexOf('a') + 1))));
System.out.println(str.endsWith(str.substring(str.indexOf('a'),str.indexOf('a',str.indexOf('a') + 1))));

9.trim()

掌握String类的trim();//去掉字符串首部和尾部的空白字符 有返回值,返回的是除掉首部和尾部的空白字符的字符串

String str = "abcdabcd";
String line =" \t\n\r  a b\tc ";    //\r是回车 \t制表符,\n换行
System.out.println(line);
System.out.println(str.length());
line = line.trim();
System.out.println(line+"字符串长度为:"+line.length());

10.isEmpty()

掌握String类的isEmpty() //判断字符串是否为空 返回值是布尔类型

String str2 = null;     //尚未开辟对象空间
String str3 = "";       //空字符串
String str4 = "abc";
//System.out.println(str2.equals(""));    //这里会出现NullPointerException 空指针异常,对象为空,还拿来用
System.out.println(str3.equals(""));    //true//建议使用下面的这种方式去比较(避免产生空指针异常)
System.out.println("".equals(str2));    //false
System.out.println("".equals(str3));    //true
System.out.println(str4.isEmpty()); //false

11.replace()

掌握String类的replace() //替换字符或者字符串,存在方法重载,有返回值,返回值为替换后的新字符串

String str5 = "唧唧复唧唧,木兰当户织";
System.out.println(str5.replace("唧唧","叽叽"));    //参数列表为(旧字符串,新字符串) 原字符串中出现给定的旧字符串全部替换成了新字符串。
System.out.println(str5.replace('唧','叽'));  //参数里表为(旧字符,新字符)原字符串中出现给定的旧字符串全部替换成了新字符串。
System.out.println(str5);   //str5的引用地址并没有改变

12.replaceAll()

掌握String类的replaceAll() //替换所有满足规则的子字符串,参数为(String regex, String replacement),用给定的替换规则与给定的 替换元素匹配的此字符串的每个符合规则的被替换子字符串。

String str6 = "abcd\"e1.fghi?j2klm,n3o4p5q6rs7tuvwx8yz";
System.out.println(str6.replaceAll("[0-9&?\",.]+",""));
String str7 = "\"You\" (or \"Your\") sha1ll mean; an individu2al,or Legal En4tity exercisin9g. permissions granted by this License.";
System.out.println(str7.replaceAll("[0-9&?\",.;]",""));

13.replaceFirst()

掌握String类的replaceFirst() //替换满足规则的第一个子字符串,参数为(String regex, String replacement)

String str6 = "abcd\"e1.fghi?j2klm,n3o4p5q6rs7tuvwx8yz";
String str7 = "\"You\" (or \"Your\") sha1ll mean; an individu2al,or Legal En4tity exercisin9g. permissions granted by this License.";
System.out.println(str6.replaceFirst("[0-9&?\",.]+",""));   //abcde1.fghi?j2klm,n3o4p5q6rs7tuvwx8yz
System.out.println(str7.replaceFirst("[0-9&?\",.;]",""));   //You" (or "Your") sha1ll mean; an individu2al,or Legal En4tity exercisin9g. permissions granted by this License.

14.split()

掌握String类的split() 切割字符串,按照给定的规则进行切割

String str8 = "熔岩巨兽-暗夜猎手-赏金猎人-暴走萝莉";
String[] result = str8.split("-");    //
for (String hero : result) {System.out.println(hero);
}
System.out.println("Arrays.toString(result)")
String str9 = "熔岩巨兽#+暗夜猎手#+赏金猎人#+暴走萝莉";
String[] result = str8.split("#\\+");    //
for (String hero : result) {System.out.println(hero);
}
/*
熔岩巨兽
暗夜猎手
赏金猎人
暴走萝莉
*/
System.out.println("Arrays.toString(result)")	//[熔岩巨兽, 暗夜猎手, 赏金猎人, 暴走萝莉]

15. “+拼接字符串”

掌握String类的特性://+号拼接字符串

String st = "123";
System.out.println(st+"中国我爱你");
System.out.println(5+3+""+4+3);	//明白和字符串用+是拼接变为字符串//857

16.length()

掌握String类的length()方法//获取字符串的长度

String str1 = "abc";
String str2 = "abcdefg";
System.out.println(str1.length());        //3
System.out.println(str2.length());        //7
System.out.println(String.valueOf(Runtime.getRuntime()).length());   //26

17.将String类型转换为其他类型

将String类型转换为其他类型

String num = "123.456";
System.out.println(Integer.parseInt(num));  //如果执行这一句,会出现NumberFormatException数字格式化异常
System.out.println(Double.parseDouble(num));    //123.456
String s2 = "true";
System.out.println(Boolean.parseBoolean(s2));//true
String s3 = "false";
System.out.println(Boolean.parseBoolean(s3));//false

18.charAt()

掌握String类charAt(),获取指定索引位置的字符,返回值是char类型
索引因该是大于等于0,小于等于length()-1的数。

String s7 = "abc";
System.out.println(s7.charAt(2));
System.out.println(s7.charAt(3));   //StringIndexOutOfBoundsException: String index out of range: 3

19.codePointAt()

掌握String类codePointAt(),获取指定索引位置的字符对应的Unicode码,返回值是byte类型
索引因该是大于等于0,小于等于length()-1的数。
这里需要注意的是byte类型只能装下-128 - 127的数字,大于127的数字存储进来会产生乱码。

String s7 = "abc";
System.out.println(s7.codePointAt(2));
System.out.println(s7.codePointAt(3));   //StringIndexOutOfBoundsException: String index out of range: 3

20.toCharArray()

掌握String类的toCharArray() 方法 //将字符串转化为字符数组

String s7 = "巴山楚水凄凉地";
char[] charArray = s4.toCharArray();
System.out.println(charArray);  //只有字符数组可以这样输出,整型浮点型数组包括其他自创的引用类型数组都不可以。

21.getBytes()

掌握String类的getBytes()方法 //将字符串转化为byte数组,eclipse编辑器默认该方法使用的是Unicode编码。

String st = new String("abcdefg");
byte[] array = st.getBytes(StandardCharsets.UTF_8);
System.out.println(Arrays.toString(array));	//[97, 98, 99, 100, 101, 102, 103]
String st1 = new String("中国我爱你");
byte[] array1 = st1.getBytes(StandardCharsets.UTF_8);   //UTF_8认为中文是三个字节
System.out.println(Arrays.toString(array1));	//[-28, -72, -83, -27, -101, -67, -26, -120, -111, -25, -120, -79, -28, -67, -96]//产生这个结果是因为byte数组只能存下-128 - 127的数字。

22.toUpperCase()

掌握String类的toUpperCase()方法,将字符串中所有的小写字母转换成大写字母。

String s8 = "abc";
System.out.println(s8.toUpperCase());	//ABC

23.toLowerCase()

掌握String类的toLowerCase()方法,将字符串中所有的大写字母转换成小写字母。

String s9 = "ABC";
System.out.println(s9.toLowerCase());	//abc

24.concat()

掌握String类的concat()方法,用于字符串的拼接,参数是String类型。

String st9 = "abc";
System.out.println(st9.concat(st9));	//abcabcSystem.out.println(st9.concat("+").concat(st9));	//abc+abc

25.valueOf()

掌握String类的valueOf()静态方法,它将其他类型转换成String类型 存在很多方法重载

System.out.println(String.valueOf(5));  //将int类型转换为String类型
System.out.println(String.valueOf(Runtime.getRuntime()));   //Runtime.getRuntime()是创建了一个Runtime类型的对象,然后将该对象转换成Stringl类型

26.format()

掌握String类的format()静态方法 //作用用于格式化连接字符串

String[] valueArray  = {"圣枪游侠","复仇之矛","赏金猎人","暗夜猎手","荣耀行刑官","厄非琉斯"};
System.out.println(String.format("射手1:%s 射手2:%s 射手3:%s 射手4:%s 射手5:%s 射手6:%s ",valueArray));
System.out.println(String.format("射手1:%s 射手2:%s 射手3:%s 射手4:%s ",valueArray));

27.join()

掌握String类的join()静态方法 拼接字符串 参数列表(CharSequence delimiter, CharSequence… elements) 存在方法重载
//join()更适合统一的分隔字符,指定的字符串

System.out.println(String.join("-",result));    //第一个参数是拼接分隔符,第二个是CharSequence类型的动态参数列表
System.out.println(String.join("+",result));    //第一个参数是拼接分隔符,第二个是CharSequence类型的动态参数列表
System.out.println(String.join(".",result));    //第一个参数是拼接分隔符,第二个是CharSequence类型的动态参数列表

28equals()

.掌握String类重写自Object类中的equals()方法。String类重写的equals方法是先比较两个对象的地址是否相同,如果不同,再比较传进来的参数对象是否是String类型,如果是,再比较两对象的value属性数组的长度是否相同,如果相同再一一对比value数组中存储的字符是否都相等,如果相等返回true,否则返回直接比较两个字符串的字面值

public boolean equals(Object anObject) {if (this == anObject) {return true;}if (anObject instanceof String) {String anotherString = (String)anObject;int n = value.length;if (n == anotherString.value.length) {char v1[] = value;char v2[] = anotherString.value;int i = 0;while (n-- != 0) {if (v1[i] != v2[i])return false;i++;}return true;}}return false;}

剩余方法不知道为啥不显示,请再下一篇继续阅读。感谢浏览,创作不易,一键三连哦。


http://www.ppmy.cn/news/891471.html

相关文章

Python组合数据类型

组合数据类型的英文是Composite Data type, 其中composite的意思是复合,组合的意思.这就是组合数据类型名字的由来. 1. 列表 list 下面介绍一些列表的常用操作 1.1 append 在列表末尾加入一个元素 heros list() heros heros.append("小鱼人") print(heros)输出…

unity制作幽灵猎手射击游戏

文章目录 介绍人物向着鼠标点击的位置跑动、旋转lerp函数让摄像机平滑跟随敌人导航敌人攻击发射子弹攻击敌人玩家健康敌人健康分数显示刷怪笼游戏结束动画 介绍 玩家鼠标控制人物转向 玩家鼠标点击控制光线发射的终点 玩家受到伤害屏幕闪红 有三个怪物生成点 玩家射杀敌人获得分…

Python中print练习

文章目录 1、题目 代码 print("\t\t英雄联盟商城登录界面") print(英雄联盟商城登录界面~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~1. 用户登录2. 新用户注册3. 退出系统~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~) choiceint(inp…

Hive解析json数组

示例JSON数组如下所示: [{"website":"baidu.com","name":"百度"},{"website":"google.com","name":"谷歌"}]或者 [{"name":"麦林炮手","feature"…

代理猎手使用方法

转载于: http://apps.hi.baidu.com/share/detail/33470649 代理猎手是集代理服务器的搜索和验证于一身的工具,★最大的特点是搜索速度快,最快可以在十几分钟内搜完整个B类地址的65536个地址; 代理猎手的下载安装   虽然目前代理…

SQL 常用语句INSERT INTO,UPDATE,DELETE

MYSQL简介和语法 MYSQL常用语句-SELECT SQL运算符,关键字 SQL INSERT INTO 语句 INSERT INTO 语句用于向表中插入新记录。 SQL INSERT INTO 语句 INSERT INTO 语句用于向表中插入新记录。 SQL INSERT INTO 语法 INSERT INTO 语句可以有两种编写形式。 第一种形…

CF单机版终极猎手30人版安装教程

本游戏是CF的单机版本,内含终极猎手30人版,可变身四种终极猎手。 这个版本只有这一种模式,没有其他的幽灵模式、生化模式、爆破模式、团队模式等等,如果想玩上述的模式,你可以在其他地方找。 值得注意的是这个版本在分…

JS ES6中扩展运算符(...)的作用

扩展运算符(spread)是三个点(…),该运算符主要用于函数调用。但是也还有其他一些特别实用的功能。 数组传参 function add(x ,y){console.log("你" x ",我" y);}let arr ["艾希","奶妈"];add(...arr); //输出为你艾希…