System:系统相关的数据和方法
方法: 1 static long currentTimeMillis() 获取当前时间的毫秒值
相对于1970-1-1 0:0:0(历元)
// long a=System.currentTimeMillis(); //1647488470408
2 static void exit(int status) 终止虚拟机
0为正常终止 非0表示异常终止
System.out.println("开始");
System.exit(0);
System.out.println("结束");
//开始
static void gc() :启动垃圾回收器对象属性:
1 static PrintStream err :标准错误输出流
2 static InputStream in :标准输入流
3 static PrintStream out :标准输出流
错误输出流和标准输出流不是同一个线程: 打印顺序未知
System.out.println("out11");
System.err.println("error 111");
System.out.println("out12");
System.err.println("error 112");
Scanner:扫描器
构造方法:Scanner(InputStream in)
普通方法: 1 String next(); 获取一个字符串
2 int nextInt(); 获取一个int
// int a=sc.nextInt()+2;
3 String nextLine(); 获取一行数据
注意:nextLine不要与next、nextInt混合使用
System.out.print("输入:");
Scanner sc=new Scanner(System.in);
int a=sc.nextInt()+2;
System.out.println("输出:"+a);
sc.close();
//输入:1
//输出:3
2 String
char[] c={'q','a','z'};
String s=new String(c);
//-------------or
String s=new String(new char[]{'q','a','z'});
构造方法:
1 String() :创建一个空序列的字符串:等价于""
// String st=new String();
2 根据int数组、char数组、byte数组 创建一个字符串对象
2.1 String(byte[] bytes) : 通过默认编码表把参数数组转化为字符串
// byte[] c={97,98,99}; String s=new String©; 结果:abc
2.2 String(byte[] bytes, String charsetName) :通过指定编码表把参数数组转化为字符串
import java.io.UnsupportedEncodingException;
public class Demo {
public static void main(String[] args) throws UnsupportedEncodingException {
String s1=new String(new byte[] {49,48,55,69,71,99,100,101},"UTF-8");
}
}
2.3 String(byte[] bytes, int offset, int length) :一部分转化为字符串
String s1=new String(new byte[] {49,48,55,69,71,99},1,3); //07E
2.4 String(char[] value, int offset, int count)
2.5 tring(int[] codePoints, int offset, int count)
3 String(String original) :创建一个与参数字符串对象相同序列的副本对象
String s2=new String("123abc");//2个字符串对象: 先通过""在内存中创建一个"123abc"字符串对象
// 再通过构造方法 创建一个"123abc"的相同序列的副本对象
System.out.println(s1);
//注意4:(只有)通过双引号创建的字符串对象 存储在内存的字符串常量池中
// 通过new创建的对象不在字符串常量池中
// 字符串常量池:相同序列使用的是同一个对象
String s11="123abc";
String s12="123abc";
String s21=new String("123abc");
String s22=new String("123abc");
System.out.println(s11==s12);//true //对于基本数据类型 ==是进行数值的比较
//对于引用数据类型 ==是进行地址值的比较
System.out.println(s11==s21);//false
System.out.println(s21==s22);//false
System.out.println(s11.equals(s12));//true
System.out.println(s11.equals(s22));//true //String的equals方法判断的是 字符序列是否相同
注意
//注意1:创建字符串两种方式
String s1="123abc"; //通过""创建字符串对象
String s2=new String("123abc"); //通过构造方法创建字符串对象
//注意2:字符串是常量(字符串对象一旦创建 字符序列不能更改)
s1+="ABC";
System.out.println(s1);//123abcABC
String s3="123"+"abc"+"ABC"+1;//6个字符串对象
//注意3:空字符:null表示引用没有指向任何对象
// "" 表示字符串对象 但没有字符
// " "表示字符串对象 有一个字符 ' '
普通方法
1 判断:
boolean equals(Object anObject) 比较字符串序列
boolean equalsIgnoreCase(String anotherString) 忽略大小写
// 对于基本数据类型 ==是进行数值的比较
// 对于引用数据类型 ==是进行地址值的比较
// String的equals方法判断的是 字符序列是否相同
int compareTo(String anotherString) 逐个字符按编码表比较:当前字符大返回正数 当前字符小返回负数 相同返回0
int compareToIgnoreCase(String str)
boolean endsWith(String suffix) 是否以参数字符串结尾
boolean startsWith(String prefix) 是否以参数字符串开头
boolean contains(String s) 是否包含参数子串
boolean isEmpty() 是否字符序列为""
2 获取: 2.1 int length() 获取字符串的长度(字符个数)
2.2 char charAt(int index) 获取指定索引处的单个字符
2.3 int indexOf(int ch) 获取参数字符第一次出现的位置::如果没有返回-1
int indexOf(int ch, int fromIndex) 从fromIndex下标处开始 获取参数字符第一次出现的位置::如果没有返回-1
int indexOf(String str)
int indexOf(String str, int fromIndex)
String s1="qqqaaazzz"; int a=s1.indexOf("qa"); //2
int lastIndexOf(int ch) : 倒着找 获取参数字符第一次出现的位置::如果没有 返回-1
int lastIndexOf(int ch, int fromIndex)
int lastIndexOf(String str)
int lastIndexOf(String str, int fromIndex)
2.4 String substring(int beginIndex) 截取bi到末尾处的字符
String substring(int beginIndex, int endIndex) 截取bi到ei-1位置处的字符
[ beginIndex , endIndex)
String s1="qqqaaazzzqa"; String s2=s1.substring(6,8); //zz
2.5 char[] toCharArray() :获取当前字符串对应的字符数组
String s1="abcdefg"; char[] cs=s1.toCharArray(); System.out.println(cs[2]); //c
2.6 byte[] getBytes() :获取字节数组 使用默认编码集
byte[] getBytes(String charsetName) :获取字节数组 使用指定编码集
String s1="abcd";
byte[] b=s1.getBytes();
for (int i = 0; i < b.length; i++) {
System.out.print(b[i]+",");
}
//97,98,99,100,
2.7 String[] **split**(String regex) 使用参数字符切割当前字符串
split方法的参数其实是一个“正则表达式”
如果按照英文句号"."进行切分,必须写 \. (两个反斜杠)
String s1="abc,d,ef1,23";
String[] arr=s1.split(",");
System.out.println(arr[2]);
//ef1
3 转换:
String concat (String str) 拼接 完全等价于+
String s3=s1.concat(s2);
String s4=s1+s2;
String replace (char oldc, char newc) 使用newc替换所有的oldc
String s1="你好呀,早上好"; String s2=s1.replace("你好", "*");
String toLowerCase () 把所有的字母 转化为小写
String toUpperCase () 把所有的字母 转化为大写
String trim () 去除两边的空格
s1=" abc 123 "; s2=s1.trim();



