1、 System类
- System类代表当前Java程序的运行平台,程序不能创建System类的对象,System类提供了一些类变量和类方法,允许直接通过System类来调用这些类变量和类方法。
修饰符 | 返回值类型 | 方法 | 说明 |
---|---|---|---|
static | long | currentTimeMillis() | 返回以毫秒为单位的当前时间 |
static | void | exit(int status) | 终止当前正在运行的Java虚拟机 |
static | void | gc() | 运行垃圾回收器 |
static | Map | getenv() | 返回一个不能修改的当前系统环境的字符串映射视图 |
static | String | getenv(String name) | 获取指定的环境变量值 |
static | Properties | getProperties() | 确认当前系统属性 |
static | String | getProperty(String key) | 获取指定键指示的系统属性 |
static | String | getProperty(String key,String def) | 获取用指定键描述的系统属性 |
static | int | identityHashCode(Objectx) | 返回给定对象的哈希吗,该代码与默认的方法hashCode()返回的代码一样,无论给定对象的类是否重写hashCode() |
static | long | nanoTime() | 返回最准确的可用系统计时器的当前值,以毫微秒为单位 |
2、 Runtime类
- Runtime类代表Java程序的运行时环境,可以访问Java的相关信息,每个Java程序都有一个与之对应的Runtime实例,应用程序通过该对象与其运行时环境相连。应用程序不能创建自己的Runtime实例,但可以通过getRuntime()方法获取与之关联的Runtime类。
- Runtime类是饿汉式单例类。
修饰符 | 返回值类型 | 方法 | 说明 |
---|---|---|---|
static | Runtime | getRuntime() | 返回与当前Java应用程序相关的运行时对象 |
static | int | availableProcesssors() | 向Java虚拟机返回可用处理器的数目 |
static | long | totalMemory() | 返回Java虚拟机中的内存总量 |
static | long | freeMemory() | 返回Java虚拟机中的空闲内存量 |
static | long | maxMemory() | 返回Java虚拟机试图使用的最大内存量 |
static | Process | exec(String ommand) | 在单独的进程中执行指定的字符串命令 |
static | void | gc() | 运行垃圾回收器 |
static | void | exit(int status) | 通过启动虚拟机的关闭序列,终止当前正在运行的Java虚拟机 |
static | void | halt(int status) | 强行终止目前正在运行的Java虚拟机 |
3、 String类
3.1、String类常用的构造器
构造器 | 说明 |
---|---|
String() | 初始化一个新创建的String对象,使其表示一个空字符串序列。 |
String(byte[ ] bytes) | 通过使用平台的默认字符集码指定的byte数组,构造一个新的String。 |
String(byte[ ] bytes,Charset charset) | 通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。 |
String(byte[ ] bytes,String charsetName) | 通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。 |
String(byte[ ] bytes,int offset,int length) | 通过使用平台的默认字符集码指定的byte子数组,构造一个新的String。 |
String(byte[ ] bytes, int offset,int length,Charset charset) | 通过使用指定的 charset 解码指定的 byte 子数组,构造一个新的 String。 |
String(byte[ ] bytes, int offset,int length, String charsetName) | 通过使用指定的字符集码指定的byte子数组,构造一个新的String。 |
String (char[ ] value) | 分配一个新的String,使其表示字符数组参数中当前包含的字符序列。 |
String (char[ ] value,int offset,int count) | 分配一个新的String,它包含取自字符数组参数一个子数组的字符。 |
String (String original) | 初始化一个新创建的String对象,使其表示一个与参数相同的字符序列;新创建的字符串是该参数字符串的副本。 |
String(StringBuffer buffer) | 分配一个新的字符串,它包含字符串缓冲区参数中当前包含的字符序列。 |
String(StringBuffer builder) | 分配一个新的字符串,它包含字符串缓冲区参数中当前包含的字符序列。 |
3.2、String常用判断方法
返回值类型 | 方法名称 | 说明 |
---|---|---|
boolean | equals(Object obj) | 比较字符串的内容是否相同,区分大小写 |
boolean | equalslgnoreCase(String str) | 比较字符串的内存是否相同,忽略大小写 |
boolean | contains(String str) | 判断大字符串中是否包含小字符串 |
boolean | startsWith(String str) | 判断字符串是否以某个指定的字符串开头 |
boolean | endsWith(String str) | 判断字符串是否以某个指定的字符串结尾 |
boolean | isEmpty() | 判断字符串是否为空 |
3.3、String类常用的获取方法
返回值类型 | 方法名称 | 说明 |
---|---|---|
int | length() | 获取字符串的长度。 |
char | charAt(int index) | 获取指定索引位置的字符。 |
int | indexOf(int ch) | 返回指定字符在此字符串中第一次出现处的索引。 |
int | indexOf(int ch,int formindex) | 返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。 |
int | indexOf(String str) | 返回指定子字符串在此字符串中第一次出现处的索引。 |
int | indexOf(String str,int fromindex) | 返回指定字符串在此字符串中第一次出现处的索引,从指定的索引开始。 |
int | lastIndexOf(int ch) | 返回指定字符在此字符串中最后一次出现处的索引。 |
int | lastIndexOf(int ch,int fromIndex) | 返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。 |
int | lastIndexOf(String str) | 返回指定字符串在此字符串中最右边出现处的索引。 |
int | lastIndexOf(String str,int fromIndex) | 返回指定字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。 |
String | substring(int start) | 从指定位置开始截取字符串,默认到末尾。 |
String | substring(int start,int end) | 从指定位置开始到指定位置结束截取字符串。 |
3.4、String的常用转换方法
返回值类型 | 方法名称 | 说明 |
---|---|---|
byte[ ] | getBytes() | 把字符串转换为字节数组。 |
char[ ] | toCharArray() | 把字符串转换为字符数组。 |
static | String ValueOf() | 把传入的变量转成字符串。 |
String | toLowerCase() | 把字符串转成小写。 |
String | toUpperCase() | 把字符串转成大写。 |
String | concat(String str) | 把字符串拼接。 |
例子:
//getBytes把字符串转换为字节数组。
String str = "你好,肥怡";
byte[] bs;
try {
bs=str.getBytes("gbk");
System.out.print("你好,肥怡的gbk 编码:[");
for (byte b : bs) {
System.out.print(b+",");
}
System.out.print("]");
System.out.println();
System.out.print("\nutf-8 编码:[");
bs=str.getBytes();
for (byte b : bs) {
System.out.print(b+",");
}
System.out.print("]");
System.out.println();
String newStr = new String(bs);
System.out.println(newStr);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
//toCharArray把字符串转换为字符数组。
String str1 = "超级大肥嘟";
char[] arr = str1.toCharArray(); // 将字符串转换为字符数组
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + ",");
}
System.out.println();
//valueOf把字符数组转成字符串
String str2 = "String.valueOf(arr):将字符数组转换成对应的字符串-->"+String.valueOf(arr);
System.out.println(str2);
//toLowerCase将所有的字符转换成小写;toUpperCase将所有的字符转换成大写
String str4 = "abcDEFgh";
System.out.println("toLowerCase:将所有的字符转换成小写"+str4.toLowerCase());
System.out.println("toUpperCase:将所有的字符转换成大写"+str4.toUpperCase());
//concat将两个字符串连接
String str5 = "abc"; String str6 = "def";
String str7 = "str5.concat(str6):将两个字符串连接-->"+str5.concat(str6);
System.out.println(str7);
输出结果:
你好,肥怡的gbk 编码:[-60,-29,-70,-61,-93,-84,-73,-54,-30,-7,]
utf-8 编码:[-60,-29,-70,-61,-93,-84,-73,-54,-30,-7,]
你好,肥怡
超,级,大,肥,嘟,
String.valueOf(arr):将字符数组转换成对应的字符串-->超级大肥嘟
toLowerCase:将所有的字符转换成小写abcdefgh
toUpperCase:将所有的字符转换成大写ABCDEFGH
str5.concat(str6):将两个字符串连接-->abcdef
3.5、String类其他常用方法
返回值类型 | 方法名称 | 说明 |
---|---|---|
String | replace(char old,char new) | 返回一个新的字符串,它是通过用newChar替换此字符串中出现的所有oldChar得到的。 |
String | replace(String old,String new) | 使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。 |
String | trim() | 返回字符串的副本,忽略前导空白和尾部空白。 |
int | compareTo(String str) | 按字典顺序比较两个字符串。 |
int | compareTolgnoreCase(String str) | 按字典顺序比较两个字符串。不考虑大小写。 |
String[ ] | split(String regex) | 根据给定正则表达式的匹配拆分此字符串。 |
String[ ] | split(String regex,int limit) | 根据匹配给定的正则表达式来拆分此字符串。 |
例子:
public static void main(String[] args) {
//replace
String str1 = "abcdefg";
String str3 = str1.replace("fg", "ooo");
System.out.println("replace:替换,返回替换后的字符串;如果没有被替换的字符,返回原字符串-->"+str3);
//trim
String str4 = " abcdefg ";
String str5 = str4.trim(); // 去除前后空格
System.out.println("trim:去除前后空格-->"+str5);
//compareTo;compareToIgnoreCase
String str6 = "aaa"; String str7 = "acc";
int inta = str6.compareTo(str7); // 按照码表值比较两个字符串的大小
System.out.println("str6.compareTo(str7):按照码表值比较两个字符串的大小-->"+inta);
inta = str6.compareToIgnoreCase(str7); // 按照码表值比较两个字符串的大小
System.out.println("str6.compareToIgnoreCase(str7):按照码表值比较两个字符串的大小-->"+inta);
//split
String str8 = "asdgjkl;sadfg;fasdfg;rtscvb;rewe;d;;fg;hrew;5623;";
String[] strings = str8.split(";");//默认为0
for (String string : strings) {
System.out.print("\"" + string + "\",");
}
System.out.println();
//如果 n > 0,模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入
//如果 n < 0,模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将保留。
//如果 n = 0,模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。
String[] strings2 = str8.split(";",3);
for (String string : strings2) {
System.out.print("\"" + string + "\",");
}
}
输出结果:
replace:替换,返回替换后的字符串;如果没有被替换的字符,返回原字符串-->abcdeooo
trim:去除前后空格-->abcdefg
str6.compareTo(str7):按照码表值比较两个字符串的大小-->-2
str6.compareToIgnoreCase(str7):按照码表值比较两个字符串的大小-->-2
"asdgjkl","sadfg","fasdfg","rtscvb","rewe","d","","fg","hrew","5623",
"asdgjkl","sadfg","fasdfg;rtscvb;rewe;d;;fg;hrew;5623;",
3.6、String、StringBuffer和StringBuilder
- String类对象不可变,一旦修改String的值就是隐形的重建了一个新的对象,释放了原String对象。
- StringBuffer和StringBuilder类是可以通过append()、insert()、reverse()…等方法来修改值。创建的对象是可变。
- StringBuffer:线程安全的; StringBuilder:线程非安全的
- 字符串连接 String 的 + 比 StringBuffer(StringBuilder) 的 Append() 性能差了很多
- 三者在执行速度方面的比较:StringBuilder > StringBuffer > String