标签:方法 ase 正则表达式 git inf 整数 text color sign
开始讲解之前,先列出本章的提纲,如下图所示:
String str;
String str1 = new String("student"); System.out.println(str1); char a[] = {‘s‘, ‘t‘, ‘u‘, ‘d‘, ‘e‘, ‘n‘, ‘t‘}; String str2 = new String(a); System.out.println(str2); char b[] = {‘s‘, ‘t‘, ‘u‘, ‘d‘, ‘e‘, ‘n‘, ‘t‘}; String str3 = new String(b, 2, 4); System.out.println(str3); // 字符串常量 String str4 = "We are students"; String str5 = "We are students"; System.out.println(str4 == str5); // str4与str5引用相同的内存地址
输出结果如下图所示:
String str1 = new String("hello"); String str2 = new String("world"); String str = str1 + " " + str2; System.out.println(str); // 输出hello world
注意事项:Java中一句相连的字符串不能分开在两行中写,如下图所示
可以看出,这种写法是错误,无法编译通过,如果一个字符串过长,为了便于阅读,想将这个字符串分在两行上书写,此时可以使用“+”将两个字符串连接起来,之后在加号处换行,如下面语句所示:
System.out.println("I like " + "Java");
int booktime = 4; float practice = 2.5f; System.out.println("我每天花费" + booktime + "小时看书;" + practice + "小时上机练习");
输出结果如下图所示:
String str = "We are students"; int size = str.length(); System.out.println(size); // 输出15
indexOf():返回搜索的字符或者字符串在字符串中首次出现的位置,如果没有检索到,则返回-1。
lastIndexOf():返回搜索的字符或者字符串在字符串中最后一次出现的位置,如果没有检索到,则返回-1。
String str = "We are students"; int size = str.indexOf("a"); System.out.println(size); // 输出3 size = str.indexOf("o"); System.out.println(size); // 输出-1 size = str.indexOf(""); System.out.println(size); // 输出0
String str = "We are students"; int size = str.lastIndexOf("s"); System.out.println(size); // 输出14 size = str.lastIndexOf("o"); System.out.println(size); // 输出-1 size = str.lastIndexOf(""); System.out.println(size); // 输出15
注意事项:如果lastIndexOf()方法中的参数是空字符串""(注意没有空格),则返回的结果与调用该字符串的length()方法的返回结果相同。
String str = "hello world"; char myChar = str.charAt(6); System.out.println("字符串str中索引位置是6的字符为:" + myChar);
输出结果如下图所示:
String str = "hello world"; String substr = str.substring(3); // lo world System.out.println(substr); substr = str.substring(0, 3); System.out.println(substr); // hel,不包括endIndex
注意事项:在字符串中空格占用一个索引位置。
String str = " Java class "; System.out.println("字符串原来的长度:" + str.length()); // 去掉str的前导和尾部的空格 System.out.println("去掉空格后的长度:" + str.trim().length());
输出结果如下图所示:
String str = "address"; String newStr = str.replace("a", "A"); System.out.println(newStr); // 输出Address
说明:
1.如果要替换的字符在字符串中没有出现,则将原字符串返回
2.如果要替换的字符在字符串中重复出现多次,会将要替换的字符全部替换为新字符
3.要替换的字符的大小写要与原字符串中字符的大小写保持一致,否则不能成功的替换
String str = "address"; String newStr = str.replace("b", "B"); System.out.println(newStr); // 输出address newStr = str.replace("d", "D"); System.out.println(newStr); // 输出aDDress newStr = str.replace("A", "B"); System.out.println(newStr); // 输出address
String num1 = "22045612"; String num2 = "21304578"; boolean b1 = num1.startsWith("22"); boolean b2 = num1.endsWith("78"); boolean b3 = num2.startsWith("22"); boolean b4 = num2.endsWith("78"); System.out.println("字符串num1是以‘22‘开始的吗?" + b1); System.out.println("字符串num1是以‘78‘结束的吗?" + b2); System.out.println("字符串num2是以‘22‘开始的吗?" + b3); System.out.println("字符串num2是以‘78‘结束的吗?" + b4);
输出结果如下图所示:
对字符串对象进行比较不能简单地使用比较运算符"==",因为比较运算符比较的是两个字符串的地址是否相同。即使两个字符串的内容相同,两个对象的内存地址也可能是不同的,使用比较运算符仍然会返回false。
因此,要比较两个字符串内容是否相等,应使用equals()方法和equalsIgnoreCase()方法。
String s1 = new String("abc"); String s2 = new String("ABC"); String s3 = new String("abc"); String s4 = "abc"; String s5 = "abc"; boolean b1 = s1.equals(s2); boolean b2 = s1.equalsIgnoreCase(s2); boolean b3 = s1.equals(s3); boolean b4 = s1 == s3; boolean b5 = s4 == s5; System.out.println(s1 + " equals " + s2 + ":" + b1); System.out.println(s1 + " equalsIgnoreCase " + s2 + ":" + b2); System.out.println(s1 + " equals " + s3 + ":" + b3); System.out.println(s1 + " == " + s3 + ":" + b4); System.out.println(s4 + " == " + s5 + ":" + b5);
输出结果如下图所示:
compareTo()方法为按字典顺序比较两个字符串,该比较基于字符串中各个字符的Unicode值,按字典顺序将此String对象表示的字符序列与参数字符串所表示的字符序列进行比较。
如果按字典顺序此String对象位于参数字符串之前,则比较结果为一个负整数。
如果按字典顺序此String对象位于参数字符串之后,则比较结果为一个正整数。
如果这两个字符串相等,则比较结果为0。
String str = new String("b"); String str2 = new String("a"); String str3 = new String("c"); String str4 = new String("b"); System.out.println(str + " compareTo " + str2 + ":" + str.compareTo(str2)); System.out.println(str + " compareTo " + str3 + ":" + str.compareTo(str3)); System.out.println(str + " compareTo " + str4 + ":" + str.compareTo(str4));
输出结果如下图所示:
说明:compareTo()方法只有在equals(Object)方法返回true时才返回0。
String str = new String("abc DEF"); String newStr = str.toLowerCase(); String newStr2 = str.toUpperCase(); System.out.println(newStr); // abc def System.out.println(newStr2); // ABC DEF
说明:使用toLowerCase()方法和toUpperCase()方法进行大小写转换时,数字或非字符不受影响。
String str = "192.168.0.1"; String[] firstArray = str.split("\\."); String[] secondArray = str.split("\\.", 2); System.out.println("str的原值为:[" + str + "]"); System.out.println("全部分割的结果:"); for (String a : firstArray) { System.out.print("[" + a + "]"); } System.out.println(); System.out.println("分割两次的结果:"); for (String a : secondArray) { System.out.print("[" + a + "]"); } System.out.println();
输出结果如下图所示:
Date date = new Date(); String year = String.format("%tY", date); String month = String.format("%tB", date); String day = String.format("%td", date); String hour = String.format("%tH", date); String minute = String.format("%tM", date); String second = String.format("%tS", date); String form = String.format("%tF", date); System.out.println("今年是:" + year + "年"); System.out.println("现在是:" + month); System.out.println("今天是:" + day + "号"); System.out.println("现在是:" + hour + "时" + minute + "分" + second + "秒"); System.out.println("年-月-日格式:" + form);
输出结果如下图所示:
String str = String.format("%d", 400 / 2); String str2 = String.format("%b", 3 > 5); String str3 = String.format("%x", 200); System.out.println("400的一半是:" + str); System.out.println("3 > 5正确吗:" + str2); System.out.println("200的十六进制数是:" + str3);
输出结果如下图所示:
正则表达式通常被用于判断语句中,用来检查某一字符串是否满足某一格式,正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符。
以下表格为常用的元字符:
元字符 | 正则表达式中的写法 | 意义 |
. | . | 代表任意一个字符 |
\d | \\d | 代表0~9的任何一个数字 |
\D | \\D | 代表任何一个非数字字符 |
\s | \\s | 代表空白字符,如‘\t‘,‘\n‘ |
\S | \\S | 代表非空白字符 |
\w | \\w | 代表可用作标识符的字符,但不包括"$" |
\W | \\W | 代表不可用于标识符的字符 |
\p{Lower} | \\p{Lower} | 代表小写字母a~z |
\p{Upper} | \\p{Upper} | 代表大写字母A~Z |
\p{ASCII} | \\p{ASCII} | ASCII字符 |
\p{Digit} | \\p{Digit} | 十进制数字,即0~9 |
\p{Blank} | \\p{Blank} | 空格或制表符\t |
说明:在正则表达式中"."代表任何一个字符,因此在正则表达式中如果想使用普通意义的点字符".",必须使用转义字符"\" 。
在正则表达式中可以使用方括号括起若干个字符来表示一个元字符,该元字符可代表方括号中的任何一个字符。
例如,[abc]4,字符串a4,b4,c4都是匹配的字符串。方括号元字符还可以为其他格式,如:
[^456]:代表4、5、6之外的任何字符。
[a-r]:代表a~r中的任何一个字母。
[a-zA-Z]:代表任意一个英文字母。
在正则表达式中,允许使用限定修饰符来限定元字符出现的次数。
限定修饰符的用法如下表所示:
限定修饰符 | 意义 | 示例 |
? | 0次或1次 | A? |
* | 0次或多次 | A* |
+ | 1次或多次 | A+ |
{n} | 正好出现n次 | A{2} |
{n,} | 至少出现n次 | A{3,} |
{n,m} | 出现n~m次 | A{2,6} |
String regex = "\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}"; String str1 = "aaa@"; String str2 = "aaaaa"; String str3 = "1111@111ffyu.dfg.com"; if (str1.matches(regex)) { System.out.println(str1 + "是一个合法的E-mail地址格式"); } if (str2.matches(regex)) { System.out.println(str2 + "是一个合法的E-mail地址格式"); } if (str3.matches(regex)) { System.out.println(str3 + "是一个合法的E-mail地址格式"); }
运行结果如下图所示:
String str = ""; long startTime = System.currentTimeMillis(); for (int i = 0; i < 10000; i++) { str = str + i; } long endTime = System.currentTimeMillis(); long time = endTime - startTime; System.out.println("String消耗时间:" + time); StringBuilder builder = new StringBuilder(""); startTime = System.currentTimeMillis(); for (int j = 0; j < 10000; j++) { builder.append(j); } endTime = System.currentTimeMillis(); time = endTime - startTime; System.out.println("StringBuilder消耗时间:" + time);
运行结果如下图所示:
通过运行的耗时可以看出,如果在程序中需要频繁的附加字符串,建议使用StringBuilder。
StringBuilder bf = new StringBuilder("hello"); bf.insert(5, "world"); System.out.println(bf.toString()); // 输出helloworld bf = new StringBuilder("StringBuilder"); bf.delete(5, 10); System.out.println(bf.toString()); // 输出Strinder
标签:方法 ase 正则表达式 git inf 整数 text color sign
原文地址:https://www.cnblogs.com/zwwhnly/p/10034156.html