可变字符串: StringBuffer
不可变字符串:String
StringBuffer类:
public class StringBufferTest {
public static void main(String[] args) {
//1.创建可变字符串
StringBuffer strBuffer = new StringBuffer();
System.out.println(strBuffer);
//2.拼接字符串
strBuffer.append("少年啊!");
System.out.println(strBuffer);
strBuffer.append("你好帅啊!");
//3.按照下标插入字符串
strBuffer.insert(0, "啊哈!");
System.out.println(strBuffer);
//4.替换字符串
strBuffer.replace(9, 10, "傻乎乎");
System.out.println(strBuffer);
//5.删除字符串
strBuffer.delete(9, 12);
System.out.println(strBuffer);
//6.字符串反转
strBuffer.reverse();
System.out.println(strBuffer);
/*
* 面试题:String和StringBuffer的区别?
* String:不可变字符串,对其做的任何替换,查找,修改等操作都是
* 拷贝了原字符串,对拷贝的副本进行操作并返回!
* StringBuffer:可变字符串,对其做的增删改查操作都是直接修改
* 了原字符串!当然也可以接受返回值,是修改后的结果!
*/
String s3 = "hahaha";
String s4 = s3.toUpperCase();
System.out.println(s3);
System.out.println(s4);
//所以! 可变字符串---->不可变字符换
//方式1
String s1 = new String(strBuffer);
System.out.println(s1);
//方式2
String s2 = strBuffer.toString();
System.out.println(s2);
}
}
String 类:
public class text {
public static void main(String[] args) {
//String 是系统类!所以建文件名字需要注意!
//1.字符创的创建
//方式1:直接赋值
String str1 = "hello world";
//方式2:通过字符数组创建字符串
char[] data = {'y', 'o', 'u'};
String str2 = new String(data);
System.out.println(str2);
//方式3:通过字符数组的某一部分创建字符串
char[] charArray = {'l', 'o', 'v', 'e'};
String str3 = new String(charArray, 2, 1);
//参数2:是从哪个字符开始 参数3:是截取几个(长度)
System.out.println(str3);
//方式4:通过字符创建另一个字符串
String str4 = new String(str1);//注意经常用于可变转不可变字符串
System.out.println(str4);
//2.字符串比较
//方式1: == 比较的是字符串的地址
String str5 = "haha"; //常量区
String str6 = new String("haha");// 堆区
System.out.println(str5 == str6); //false
String str7 = "haha";
System.out.println(str5 == str7); //true
//方式2: equals 只比较值
System.out.println(str5.equals(str6));// true
System.out.println(str5.equals(str7));// true
//方式3:equalsIgnoreCase 忽略大小写
str6 = "HaHa";
System.out.println(str5.equalsIgnoreCase(str6));
//3.判断字符串的前缀和后缀
//endWith: 判断字符串以..结尾
String str8 = "变形金刚.avi";
System.out.println(str8.endsWith("vi"));
//startWith: 判断字符串以..开头
String str9 = "前车之鉴,后车之师";
System.out.println(str9.startsWith("前车"));
//compareTo: 字符串比较,是逐个字符进行比较,返回值是ASCII值
str8 = "ABC";
str9 = "ABc";
System.out.println(str8.compareTo(str9));
//compareToIgnoreCase 忽略大小写
System.out.println(str8.compareToIgnoreCase(str9));
//4.字符串的长度 length
String str10 = "you are beautiful";
System.out.println(str10.length());
str10 = "好好学习哇!";
System.out.println(str10.length());
//5.判断字符串是否为空
String str11 = null;
String str12 = "";
//禁止 null调用任何对象的方法
if(str11 != null && str11.length() != 0) {
System.out.println(str11 + "不是空字符串");
}else {
System.out.println(str11 + "是空字符串");
}
//isEmpty() 判断是否为空 如果为空则为true
System.out.println(str12.isEmpty());//true
//另一种方式 判断空串
if(str12 != null && !str12.isEmpty()) {
System.out.println("不是空字符串");
}else {
System.out.println("是空字符串");
}
//6.字符串转换
String str13 = "lucky dog";
//大写toUpperCase()
System.out.println(str13.toUpperCase());
System.out.println(str13);//原字符串没有变换
//小写 toLowerCase()
str13 = "Lucky Dog";
String lowerStr = str13.toLowerCase();
System.out.println(lowerStr);
System.out.println(str13);
//字符串转数组
char[] charArr = str13.toCharArray();
for(int i = 0; i < charArr.length; i++) {
System.out.println(charArr[i]);
}
//转其他类型
int a = 5566;
//方式1:拼接空字符串
String s1 = a + "";
System.out.println(s1);
//方式2: String.valueOf(数据)
String s2 = String.valueOf(a);
//valueOf(此处基本数据类型皆可转换)
//字符串转其他类型
String s3 = "2020520";
//方式1:其他数据类型.valueOf(字符串) 即可转换
int b = Integer.valueOf(s3);
double c = Double.valueOf(s3);
float d = Float.valueOf(s3);
//方式2: 其他类型.parse其他类型(字符串)
long e = Long.parseLong(s3);
String s4 = "true";
boolean f = Boolean.parseBoolean(s4);
/*int float long 等属于基本数据类型(参照C语言)
* Integer Double Float Boolean 它们是Java中的包装类型!
* 是为了封装一些方法而定义的类!
*/
//7.字符串拼接
String s5 = "you see see you! ";
String s6 = "one day day!";
//方式1: +
System.out.println(s5 + s6);
//方式2: concat
String s7 = s5.concat(s6);
System.out.println(s7);
//8.字符串查找
String s8 = "大学生活好啊!好吗?你说好就好!";
//方式1:indexOf()正向查找,返回第一次出现的位置,找不到就返回-1
System.out.println(s8.indexOf("好呀"));
System.out.println(s8.lastIndexOf("好"));//最后一次出现的位置
System.out.println(s8.indexOf("好", 5));
//方式2:contains 是否包含 boolean类型返回值
System.out.println(s8.contains("生活好"));
//9.获取字符串的一部分
String str = "矮是什么感觉?就是所有人看见我都抬不起头";
//方式1: charAt() 通过下标 获取某个字符
System.out.println(str.charAt(2));
//方式2: substring()
System.out.println(str.substring(7));
System.out.println(str.substring(10, 15));
//10.替换字符串
String s9 = "瘦,走路是什么感觉?应该就是走路都得扶着电线杆";
//方式1:replace() 就是把字符串中所有匹配到的字符串进行替换
System.out.println(s9.replace("走路", "刮风"));
//方式2:replaceFirst() 只替换第一个
System.out.println(s9.replaceFirst("走路", "放屁"));
//11.分割字符串 就是按照某一个字符 将字符串切成数组
// \\转义字符
String s10 = "www|cctv|com";
String[] strArray = s10.split("\\|");
for(int i = 0; i < strArray.length; i++) {
System.out.println(strArray[i]);
}
s10 = "www.cctv|com";
// split(" | ") 单竖杠 是或者! 所以才需要添加\\转义
strArray = s10.split("\\.|\\|");
for(int i = 0; i < strArray.length; i++) {
System.out.println(strArray[i]);
}
//12. 去除收尾空格 trim
String s11 = " 哈哈";
System.out.println(s11);
System.out.println(s11.trim());
//练习: "财色兼收" 截个'财' 截个'色'
String s12 = "财色兼收";
System.out.println(s12.charAt(0) + " " + s12.charAt(1));
System.out.println(s12.substring(0,1) + " " + s12.substring(1, 2));
//练习:定义一段英文字符串, 使用以上所学将这
//一段英文改为每个单词首字母大写
String s = "you see see you! one day day";
String[] sArray = s.split(" ");
String newStr = "";
for(int i = 0; i < sArray.length; i++) {
String firstChar = String.valueOf(sArray[i].charAt(0));
// System.out.println(firstChar);
String upperStr = firstChar.toUpperCase();
System.out.println(upperStr);
//替换
String firstUppercase = sArray[i].replace(firstChar, upperStr);
newStr = newStr + firstUppercase + " ";
}
System.out.println(newStr);
}
}