String类型
String concat(String str) 字符串拼接
boolean contains(CharSequence s) 一个字符串包含另一个字符串
boolean endsWith(String suffix) 以…字符串结尾
boolean equalsIgnoreCase(String anotherString) 比较两个字符串是否相同
int indexOf(int ch) 求下标
int indexOf(int ch, int fromIndex)
int indexOf(String str)
int indexOf(String str, int fromIndex)
boolean isEmpty() 分配了空间内存
int lastIndexOf(int ch) 最后一次出现的下标
int lastIndexOf(int ch, int fromIndex)
int lastIndexOf(String str)
int lastIndexOf(String str, int fromIndex)
String replace(char oldChar, char newChar) 替换
boolean startsWith(String prefix) 以…字符串开头
boolean startsWith(String prefix, int toffset)
String substring(int beginIndex) 截取
String substring(int beginIndex, int endIndex) 从下标开始截取到下标结束
char[] toCharArray() 将字符串转换为新的字符数组
String toLowerCase() 全变小写
String toUpperCase() 全变大写
String trim() 去除两边空格
String toString() 返回String类型
@Test
public void test01() {
// 1.调用String方法API
// 创建String对象
String str = “hello”;
String s1 = new String(); // “”
String s2 = new String(“hello”); // “hello”
String s3 = new String(“hello”);
String str1 = “hello”;
System.out.println(s1 == s2);
System.out.println(str == s2);
System.out.println(s3 == s2);
// String类将equals重写过了
System.out.println(s3.equals(s2));
System.out.println(s3.equals(str));
// JDK提供了一个字符串的常量池
System.out.println(str == str1);
}
@Test
public void test02() {
String str = "hello"; // 常量池
// 字符串字面量 拼接 -> 常量池
String s1 = "he" + "llo";
String s2 = "he";
// 变量 + 字面量 -> new 对象
String s3 = s2 + "llo";
System.out.println(str == s1);
System.out.println(str == s3);
// 结论:字符串在特定场合下面可以用 == 比较
// 但是不建议使用==,建议使用equals
}
@Test
public void test03() {
String s1 = "hello";
// 字符串拼接
s1 = s1.concat("hi");
System.out.println(s1);
// 获得输入的邮箱对应的用户名 wrerwer@163.com
String email = "324wewearyyu@163.com";
// 字符串截取 - 从指定下标开始,截取到结束
String user = email.substring(5);
System.out.println(user);
// 字符串截取 - 从指定下标开始,到指定下标结束(前包含、后不包含)
user = email.substring(0, 7);
System.out.println(user);
// 获得@第一次出现所在的下标位置
int index = email.indexOf("@");
user = email.substring(0, index);
System.out.println(user);
// 获得@最后一次出现的下标位置
index = email.lastIndexOf('@');
user = email.substring(0, index);
System.out.println(user);
}
@Test
public void test04() {
String str = "qnmlg b, 你真的是个大sb";
str = str.replace("qnmlgb", "**");
System.out.println(str);
String q1="helloworld";
String q2="HelloWorld";
System.out.println(q1.equalsIgnoreCase(q2));
String qq=" hello wlorld ";
// 去除左右两边空格 ' ' \n \t \r
System.out.println(qq.trim());
String w="EdcEE";
// 都变大写 都变小写 忽略大小写比较
System.out.println(w.toLowerCase());
System.out.println(w.toUpperCase());
}
正则表达式
@Test
public void test05() {
String email = "ere334@163.com";
// ^[a-zA-Z]\w{5,17}@163\.com$
String regex = "^[a-zA-Z]\\w{5,17}@163\\.com$";
System.out.println(regex);
boolean ismatches = email.matches(regex);
System.out.println(ismatches);
}
@Test
public void test06() {
String str = "qnmlgb, 你真的是个大sbsb, 真是nc";
// (qn)?(mlgb|sb|nc)*
String regex = "(qn)?(mlgb|sb|nc)+";
str = str.replaceAll(regex, "**");
System.out.println(str);
}
@Test
public void test07() {
String ip = "192.168.6.66";
// 获得每一段的数字
String regex = "\\.";
String[] ss = ip.split(regex);
System.out.println(Arrays.toString(ss));
String word = "hello hi, .how are you? I'm fine!";
// . , ! 空格 ""
// [ ,\.!\?]+
regex = "[ ,\\.!\\?]+";
String[] words =word.split(regex);
System.out.println(Arrays.toString(words));
System.out.println(words.length);
// ftp->temp->resource->api->正则表达式.zip
}
@Test
public void test08() throws UnsupportedEncodingException {
char c = 'c';
c = (char) 97;
c = '\u4e2d'; // Unicode编码/字符集 - Java-JVM
System.out.println(c);
// byte -128~127
// char 0~2^16-1 = 65535
// \u0000~\uffff
String str = "哈哈";
// 字符串转变成字节数组 - 系统级编码(GBK/UTF-8)
byte[] bs = str.getBytes(); // - 系统默认编码
System.out.println(Arrays.toString(bs));
bs = str.getBytes("UTF-8"); // 根据指定的gbk字符集来拆解字符串
System.out.println(Arrays.toString(bs));
}
@Test
public void test09() throws UnsupportedEncodingException {
byte[] bs = {-27, -109, -120, -27, -109, -120};
// 编码:将字节数组转换成字符串
String str = new String(bs,"utf-8"); // 默认系统编码 - GBK
System.out.println(str);
// 根据指定的字符集来编码
String str1 = new String(bs, "gbk");
System.out.println(str1);
// 解决str1的乱码问题 先解码 -> 再编码
str1 = new String(str1.getBytes("gbk"), "utf-8");
System.out.println(str1);
}