07-Java常用类

来源: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基础入门第二版

猜你喜欢

转载自blog.csdn.net/qq_42899028/article/details/117809012