java.lang.String类学习
概念
在Java编程中广泛使用的字符串是一系列字符。在Java编程语言中,字符串被视为对象。 Java平台提供String类来创建和操作字符串。
字符串定义和创建的几种方式:
- String s1 = “abc”; 直接将一个字符串常量赋值给String类型的变量
- String s2 = new String(“abc”); 使用new关键字创建String对象
- char[] s = [‘a’,‘b’,‘c’,‘d’,‘e’];
String s3 = new String(s); 使用字符数组创建一个字符串
String s4 = new String(s,1,3); 从索引1开始,提取3个字符创建字符串
注意点
- String str = null;和String str = “”;是不同的。前者是空对象,没有指向任何地址,会有NPE,后者是一个空白的字符串,是分配了内存空间的。
- 字符串变量是一个对象
- 字符串String是一个final类
- ==和equals的区别
- stack和heap的概念
常用方法
- String s3 = s1.concat(s2);
- int size = s.length();
- char ch = s.charAt(2);
- int index = s.indexOf(“a”);
- int lastIndex = s.lastInexOf(“.”);
- boolean flag = s.startsWith(“Java”);
- boolean flag = s.endsWith(“.jpg”);
- char[] chars = s.toCharArray();
- boolean flag = s.contains(“abc”);
- int c = s1.compareTo(s2);
- String subStr = s.substring(3,6);
- String newStr = s.replace(“java”,“Java”);
- String[] stringArray = s.split(“,”);
- String newStr = s.toLowerCase();
- String newStr = s.toUpperCase();
- String newStr = s.trim();
- boolean flag = s.equals(str);
- boolean flag = s.matches(“”);
课堂练习
照片文件名的重命名问题
String origionName = "11.jpg";
String s1 = origionName.substring(0,origionName.indexOf("."));
String s2 = origionName.substring(origionName.indexOf("."));
System.out.println(s1);
System.out.println(s2);
String finalName = UUID.randomUUID().toString().concat(s2);
System.out.println(finalName);
在一串字符中分割单词
String str = "Java is cool";
String[] strArray = str.split(" ");
for (String s:strArray) {
System.out.println(s);
}
如何按文件类型统计或过滤?
String[] fileNames = {"1.jpg", "2.png", "3.doc", "4.doc", "5.jpg", "6.png", "7.exe", "8.pdf"};
int imgCount = 0;
int docCount = 0;
for (String fileName : fileNames) {
if (fileName.endsWith(".jpg") || fileName.endsWith(".png")) {
imgCount++;
}
if (fileName.endsWith(".doc") || fileName.endsWith(".pdf")) {
docCount++;
}
if (fileName.endsWith(".exe")) {
System.out.println("非法文件类型!");
}
}
System.out.println("图片" + imgCount + "张,文档" + docCount + "个");
禁词过滤
String content = "在青山绿水之间,我想牵着你的手,走过这座桥。桥上是绿叶,桥下是流水,桥的那头是青丝,桥的这头是白发";
String finalStr = content.replaceAll("桥","**");
System.out.println(finalStr);
使用正则表达式验证密码
String password = "Xu1841Java";
//6-12位数字和字母组成
String regex = "[0-9a-zA-Z]{6,12}";
boolean flag = password.matches(regex);
System.out.println(flag);