来源:http://wegocoding.top/article/java-09/
String类与StringBuffer类
String类
String类的初始化
String s1 = null;
String s2 = "";
String s3 = "123";
String str1 = new String(); // Create an empty string
String str2 = new String("abc"); // Create an string "abc"
// Create a string with an array of characters
char[] charArr = new char[] {'A', 'B','C'};
String str3 = new String(charArr); // ABC
字符串的基本操作
/* 1. 字符串的基本操作 */
String str = "abcabcabc";
System.out.println("字符串的长度:" + str.length());
System.out.println("字符串中的第一个字符:" + str.charAt(0));
System.out.println("字符c第一次出现的位置:" + str.indexOf('c'));
System.out.println("字符c最后一次出现的位置:" + str.lastIndexOf('c'));
System.out.println("子字符串ab第一次出现的位置:" + str.indexOf("ab"));
System.out.println("子字符串ab最后一次出现的位置:" + str.lastIndexOf("ab"));
字符串的转换操作
/* 2. 字符串的转换操作 */
String str1 = "java";
char[] charArr = str1.toCharArray(); // 将字符串转换为字符数组
System.out.print("遍历字符数组charArr: ");
for (int i = 0; i < charArr.length; i++) {
if (i != charArr.length - 1) System.out.print(charArr[i] + ",");
else System.out.println(charArr[i]); // 数组最后一个元素不加逗号
}
System.out.println("将int类型的值转换为字符串:" + str1.valueOf(666));
System.out.println("转大写字母:" + str1.toUpperCase());
字符串的替换和去除空格操作
/* 3. 字符串的替换和去除空格操作 */
String url = " http:// wegoco di ng.top ";
System.out.println("去除字符串两端空格:" + url.trim());
System.out.println("去除字符串中所有空格:" + url.replace(" ", ""));
字符串的判断操作
/* 4. 字符串的判断操作 */
String s1 = " Starter";
String s2 = "St";
System.out.println("判断是否以字符串St开头:" + s1.startsWith("St"));
System.out.println("判断是否以字符串er结尾:" + s1.endsWith("er"));
System.out.println("判断是否包含字符串ar:" + s1.contains("ar"));
System.out.println("判断字符串是否为空:" + s2.isEmpty());
System.out.println("判断两个字符串是否相等:" + s1.equals(s2));
String s3 = new String("666");
String s4 = new String("666");
System.out.println(s3==s4); // 比较字符串的内存地址,false
System.out.println(s3.equals(s4)); // 比较字符串的字符值,true
字符串的截取和分割操作
/* 5. 字符串的截取和分割操作 */
String date = "2021-06-04";
System.out.println("从第5位到末尾:" + date.substring(5));
System.out.println("从第5位到第7位:" + date.substring(5, 7));
System.out.println("分割字符串得到一个字符串数组:");
String[] strArr = date.split("-");
System.out.println("分割后得到的字符串数组:" + Arrays.toString(strArr));
StringBuffer类
JDK中提供了一个StringBuffer
类(字符串缓冲区)来操作字符串。String
类和StringBuffer
类最大区别是SB的内容和长度可以改变,SB类似一个字符容器,可以添加删除字符,不会产生新的对象。
String
定义的字符串是常量,内容和长度无法修改,StringBuffer
类相反。String
类重写了Object类的equals()
方法,比较的是内容;StringBuffer
没有重写,比较的是内存地址,等价于==
String
类对象可以用+拼接,SB
不行
关于
StringBuilder
和
StringBuffer
功能相似,区别是StringBuffer
是线程安全的,StringBuilder
则不是,因此性能略高。
System类和Runtime类
System类
System类定义了一些与系统相关的属性和方法,都是静态的。
getProperties() 方法
getProperties()
方法用于获取当前系统的全部属性,返回一个Properties
对象,其中封装了系统所有属性(键值对形式存在)。
// 获取当前系统属性
Properties properties = System.getProperties();
System.out.println(properties);
// 获取所有系统属性的key,返回一个Set对象
Set<String> keys = properties.stringPropertyNames();
// 获取key对应的value
for(String key: keys) {
String value = System.getProperty(key);
System.out.println(key + "->" + value);
}
currentTimeMillis()
返回一个long类型的值,该值表示一个时间戳。System.currentTimeMillis()
arraycopy(src, srcPos, dest, destPos, length)
将一个数组中的元素快速复制到另一个数组。两个数组类型要一致,目标数组必须有足够空间存放拷贝的元素!参数列表:
- src:源数组
- dest:目标数组
- srcPos:src中拷贝元素起始位置
- destPos:拷贝到dest的起始位置
- length:拷贝的个数
int[] srcArr = {1,2,3,4,5};
int[] destArr = {11,22,33,44,55};
System.arraycopy(srcArr, 2, destArr, 0, 3);
Runtime类
Runtime类用于表示JVM运行时的状态,用于封装JVM进程。每次使用java命令启动JVM时都会对应一个Runtime实例(有且仅有一个)。
获取Runtime对象:Runtime rt = Runtime.getRuntime();
Runtime rt = Runtime.getRuntime(); // 获取Java程序关联的运行时对象
System.out.println("处理器个数:" + rt.availableProcessors() + "个");
System.out.println("空闲内存大小:" + rt.freeMemory()/1024/1024 + "M");
System.out.println("最大可用内存大小:" + rt.maxMemory()/1024/1024 + "M");
Process process = rt.exec("notepad.exe"); // 执行一个dos命令,打开记事本
Thread.sleep(3000); // 睡眠3秒
process.destroy(); // 关闭进程
包装类
Java的8种基本数据类型不支持面向对象的编程机制(没有属性和方法),然而很多类的方法需要接收引用类型的对象,此时基本数据类型就不能传入。JDK中提供的包装类,可以将基本数据类型的值包装为引用数据类型的对象。
自动装箱与拆箱
int a = 666;
// 自动装箱: 把基本数据类型赋给包装类变量
Integer b = a;
// 自动拆箱: 反之
int c = b;
基本数据类型、包装类及字符串间的转换
int num = 123;
// 1.通过String.valueOf()将基本数据类型转换为字符串
String s = String.valueOf(num);
// 2.通过包装类的valueOf()将基本类型转换为包装类
String s1 = "666";
Integer integer = Integer.valueOf(s1);
Integer integer1 = Integer.valueOf(num);
// 3.通过包装类的有参构造方法将基本类型转为包装类
Integer integer2 = new Integer(num);
// 4.通过包装类的parseXxx()将字符串转为基本类型
int i = Integer.parseInt(s1);
// 通过包装类的toString()将包装类转为字符串
String s2 = integer.toString();
String s3 = integer2.toString();
小结
- 掌握String类和StringBuffer类的使用
- 了解System类和Runtime类中的常用方法
- 熟悉Math类和Random类的常用方法
- 掌握包装类和日期类的使用
- 掌握日期、时间格式器的使用
参考书籍:Java基础入门第二版