String类
字符串类常用方法
「方法汇总:」
❝ 「注:字符串是一个不可变的类型(final类),几乎所有的字符串操作都会返回一个新字符串而不是在原有基础上进行修改。」 ❞
【示例代码】
public class Test { public static void main(String[] args) { String s = "我的名字叫李华"; s.concat("hhh"); // 在字符串s上拼接,拼接hhh System.out.println(s);// 我的名字叫李华 //字符串是不可变的数据类型 //几乎所有的字符串操作都会返回一个新字符串 String s1 = s.concat("hhh"); // 在字符串s上拼接,拼接hhh System.out.println(s1);//我的名字叫李华hhh String str1 = "李华喜欢看罗老师的视频"; str1.replace("李华","张三"); System.out.println(str3); //李华喜欢看罗老师的视频 并没有替换 字符串是不变的str1还是str1 String str2 = str1.replace("李华","张三");//几乎所有的字符串操作都会返回一个新字符串 新串要用新变量接 System.out.println(str2);//张三喜欢看罗老师的视频 } } package String; import java.util.Scanner; public class Test { public static void main(String[] args) { String s = "我的名字叫李华"; System.out.println(s.charAt(0)); // 获取第0个位置的字符 s.concat("hhh"); System.out.println(s);// 我的名字叫李华 //字符串是不可变的数据类型 //几乎所有的字符串操作都会返回一个新字符串 String s1 = s.concat("hhh"); // 在字符串s上拼接,拼接hhh System.out.println(s1);//我的名字叫李华hhh System.out.println(s.contains("李华")); //true System.out.println(s.contains("牛津")); //false System.out.println("邀请李华来参加英语沙龙活动".endsWith("活动"));//true 判断是否以xxx为结尾 System.out.println("邀请李华来参加英语沙龙活动".startsWith("李华"));//false 判断是否以xxx开头 // equals字符串内容是否相同 // 接受邀请参加活动的李华到现场后要输入验证码 // String yanZhengMa = "AAkm"; // // Scanner sc = new Scanner(System.in); // // System.out.println("请输入验证码("+yanZhengMa+")"); // // String userInput = sc.nextLine(); // // if(yanZhengMa.equalsIgnoreCase("aakm")){ // 忽略大小写判断两边的内容是否一样 // System.out.println("欢迎参加英语沙龙活动!"); // }else{ // System.out.println("您未受到邀请,请现场报名!"); // } // String str = "李华玩得很开心!"; // System.out.println(str.indexOf("开心"));// 5 计算给出字符串第一个出现的位置 String str2 = "李华成绩很好"; System.out.println(str2.length()); // 6 计算字符串的长度 String str3 = "李华喜欢看罗老师的视频"; str3.replace("李华","张三"); System.out.println(str3); //李华喜欢看罗老师的视频 并没有替换 字符串是不变的str3还是str3 String str4 = str3.replace("李华","张三");//几乎所有的字符串操作都会返回一个新字符串 新串要用新变量接 System.out.println(str4);//张三喜欢看罗老师的视频 String str5 = "哈哈_呵呵_嘻嘻_噢no"; String[] ss = str5.split("_");//切割 System.out.println(ss[0]);//哈哈 System.out.println(ss[1]);//哈哈 System.out.println(ss[2]);//嘻嘻 System.out.println(ss[3]);//噢no String str6 = "今天天气不错"; System.out.println(str6.substring(2,4));//天气 字符串截取 [ ) 左闭右开,右边取不到 String str7 =" 哈 哈 "; System.out.println(str7.trim());// 去掉左右两边的空格 int i = 10; System.out.println(String.valueOf(i)); // 基本数据类型转为字符串 System.out.println(i+""); // 野路子 } }
String Builder和StringBuffer
「String类的缺点:」
String 是一个不可变的数据类型,每每拼接都会产生一个新的字符串,那么内存迟早会被这些拼接的字符串塞满。
「String类和StringBuilder和StringBuffer类的区别:」
StringBuilder和StringBuffer:「可变的字符串,不产生新对象,比较省内存」 ,当进行大量的字符串拼接时建议使用StringBuffer和StringBuilder,但它们两个一些方法的实现几乎跟String一样。
「StringBuffer和StringBuilder类:」
【相似点】
两者用法一模一样,可以认为是一个类
【区别】
StringBuffer线程安全,StringBuilder非线程安全。
StringBuilder相比于StringBuffer有速度优势,「多数情况下建议使用StringBuilder类,但当被要求线程安全时必须使用StringBuilder类」
❝ 字符串拼接方法:append()方法 StringBuffer和StringBuilder 转成String类 : StringBuilder sb = new StringBuilder("猫喜欢吃鱼"); String s = sb.toString(); ❞
【参考代码】
package String; public class TestStringBuilder { public static void main(String[] args) { StringBuilder sb = new StringBuilder();// 一个空的字符串"" StringBuilder sb2 = new StringBuilder("猫喜欢吃鱼"); System.out.println(sb2);// 猫喜欢吃鱼 sb2.append(",狗也喜欢吃鱼"); System.out.println(sb2);// 追加 猫喜欢吃鱼,狗也喜欢吃鱼 sb2.insert(1,"哈哈哈"); System.out.println(sb2); //猫哈哈哈喜欢吃鱼,狗也喜欢吃鱼 // 上述的操作huan'c // 把StringBuilder转化成String String s = sb2.toString(); System.out.println(s); //猫哈哈哈喜欢吃鱼,狗也喜欢吃鱼 // 上述操作都可以将StringBuilder换成StringBuffer,结果一样 } }
DecimalFormat
DecimalFormat:对小数进行格式化,保留几位小数。与格式化时间联想记。
❝ . 表示小数点 0和# 表示数位,保留几位就几个0或者# ❞
【参考代码】
import java.text.DecimalFormat; import java.util.Scanner; public class Test { public static void main(String[] args) { double d= 10/3.0; System.out.println(d);//3.3333333333333335 // . 表示小数点 // 0和#表示数字 // 保留两位小数 格式 DecimalFormat df = new DecimalFormat(".00"); // 或者.## String s = df.format(d); // 把 d 转成上面设置的格式 System.out.println(s);//3.33 } }