- StringBuffer
- String是无法被改变的,StringBuffer是可以改变的
public static void main(String[] args) {
StringBuffer buf = new StringBuffer();
buf.append("Hello").append(" World")
change(buf);
System.out.println(buf); //buf的值经方法调用后改变了
}
public static void change(StringBuffer temp) {
temp.append(" !!!")
}
- StringBuffer类转String类
public static void main(String[] args) {
StringBuffer buf = new StringBuffer();
buf.append("hello");
String str = buf.toString();
}
- 可以用contentEquals方法来比较StringBuffer类和String类
- reverse方法实现字符串反转
- insert(int index, String buf) / delete(int start, int end)
buf.insert(0,"nihao");
- StringBuilder和StringBuffer类基本相似,StringBuffer是同步方法,具有多线程安全性,StringBuilder是异步方法,不具有多线程安全性。
- Runtime类
//调用方法:
Runtime run = Runtime.getRuntime();
run.maxMemory()
run.totalMemory();
run.freeMemory();
run.gc() //释放垃圾空间
-
System类
System.currentTimeMillies(); 获取当前时间 -
Math类
注意四舍五入round()方法对于负数的四舍五入不太一样。比如round(-15.5)是15而不是16. -
BigInteger / BigDecimal类
BigDecimal要四舍五入可以借助divide方法除1,并利用BigDecimal.ROUND_HALF_UP。 -
Date类
Date date = new Date();
System.out.println(date); //即输出当前时间
- Date与long之间的转换
long curTime = System.currentTimeMillies();
Date date = new Date(cur); //long to Date
long longdate = date.getTime(); //Date to long
- SimpleDateFormat 日期格式化;可以将Date型转成String型。
- 年(yyyy),月(MM),日(dd),时(HH),分(mm),秒(ss),毫秒(SSS)
- 构造方法: public SimpleDateFormat(String pattern);
- Date转String:public final String format(Date date);
- String转Date:public Date parse(String source) throws parseException;
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
String strTime = sdf.format(date);
System.out.println(strTime); //返回构造方法中的格式化日期
//String转Date
String str = "2020-04-01 10:23:38:111";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
Date date = sdf.parse(str);
- Calendar类
可直接加减计算年月日等
Calendar cal = Calendar.getInstance();
cal.get(Calendar.YEAR);
cal.get(Calendar.MONTH)+1; //month从0月开始算,所以需要+1
cal.get(Calendar.DAY_OF_MONTH);
cal.get(Calendar.HOUR_OF_DAY);
- Comparable接口 / Comparator接口
- 在不能更改类定义的情况下,即不能使用Comparable接口,我们可以使用Comparator接口来挽救比较的需求。
- Comparable借助Arrays.sort()完成排序;Comparator借助重载后的sort方法排序:Arrays.sort(books, new bookComparator());
- 大多数时候使用comparable。
- 正则表达式
-
字符集
[abc]: 匹配字母a、b、c中任意一位
[ ^abc]: 不是abc中的字母
[a-z]: 所有小写字母
[a-zA-Z]:所有字母不分大小写
[0-9]: 任意数字 -
简化的字符集表达式
.:任意的一位字符
\d: 简化的[0-9]表达式
\D: 简化的“[^0-9]”,表示非数字类
\s: 表示任意的空白字符; \t,\n都属于空白字符
\S: 表示任意的非空白字符
\w: 等价与[a-zA-Z_0-9], 表示由任意数字字母下划线组成
\W:任意的非数字非字母非下划线 -
数量表达式
正则?: 表示该正则可以出现0次或1次
正则+: 表示该正则可以出现1次或1次以上
正则*: 表示可以出现0、1或多次
正则{n}: 表示正好出现n次
正则{n,}: 表示正好出现n次以上
正则{n,m}: 表示正好出现n次到m次
String str = "1";
str.matches("\\d?"); //return true or false
- 逻辑运算
正则1正则2: 先判断正则1然后判断正则2
正则1|正则2: 正则1或正则2有一组满足即可
(正则): 多个正则为一组,然后添加次数判断
- 文件操作类
字符流输出
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
path = "e:" + File.separator + "demo" + File.separator + "hello" + File.separator + "test.txt";
File file = new File(path);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs(); //创建所有父目录
}
if (file.exists()) {
file.delete();
} else {
System.out.print(file.createNewFile()); //创建文件返回true
}
OutputStream output = new FileOutputStream(file,true); //true是追加模式,不加true则为覆写模式
String str = "sjdlkahsflkahf! \r\n"; //\r\n换行
byte[] data = str.getBytes();
output.write(data);
output.close();
字符流输入
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
path = "e:" + File.separator + "demo" + File.separator + "hello" + File.separator + "test.txt";
File file = new File(path);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs(); //创建所有父目录
}
if (file.exists()) {
InputStream input = new FileInputStream(file);
byte[] data = new byte[1024];
int foot = 0;
int temp = 0;
while ((temp = input.read()) != -1) {
data[foot++] = (byte) temp;
}
input.close();
System.out.println("[" + new String(data,0,foot) + "]")
}
字节流
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.io.FileReader;
import java.io.Reader;
//输出
Writer out = new FileWriter(file);
String str = "sjdlkahsflkahf! \r\n"; //\r\n换行
out.write(str);
out.close();
//输入
Reader in = new FileReader(file);
char[] data = new char[1024];
int len = in.read(data);
in.close();
System.out.println("["+new String(data,0,len) + "]")
字符流处理中文内容;字节流可以处理图片、音乐、电影、文字等。大多数情况使用字节流。