一、String常用方法
二、正则表达式
1.基本 2.常用 3.高级
三、StringBuilder和StringBuffer类
1.区别 2.常用方法 3.继承结构图
四、Math和Random类
1.Math 的常用方法 2.Random 的常用方法
五、日期类
1.Date类 2.Calender类 3.SimpleDateFormat类
六、数字类
1.BigDecimal类 2.BigInteger类 3.DecimalFormat类
一、String常用方法
功能 | 代码 |
---|---|
长度 | .length() |
拼接 | .concat() (相比于用+号拼接,该方法使用数组更加有效率) |
格式化 | 方式一(常用):.printf(“大家好,我的名字叫:%s,我今年:%d岁了”,“曹操”,18);方式二:.format(参数同方法一) (区别在于是直接用String类名调用) |
返回指定索引出的字符 | .charAt() (如果没找到会报错) |
返回指定字符串在此字符串中第一次出现处的索引 | .indexOf() (如果没找到返回-1) |
比较两份字符串 | .compareTo() (返回的是两个字符串首个不同字符的编码的差,若都相同则返回长度的差) (.compareToIgnoreCase() 忽略大小写) |
比较值是否相等 | .equals() (.equalsIgnoreCase() 忽略大小写 ) |
转换为字节数组 | .getBytes() (I/O流中会用到) (utf-8字符集,一个汉字对应3个字节,24个二进制位) |
转换为字符数组 | .toCharArray() |
截取 | .subString( , ) (前闭后开) |
大小写转换 | .toLowerCase()/.toUpperCase() |
去掉前后空白 | .trim() |
替换 | .replace() |
分割 | .split() |
正则匹配 | .matches(String reg) |
二、正则表达式
1.基本
表达式 | 功能 |
---|---|
“abc123-” | 对应字符匹配 |
[ ] | 匹配括号中任意字符 “[A-z0-9]” 匹配所有数字或字母 |
- | 在中括号里表示谁到谁的范围,在中括号外表示自己 |
$ | 表示以谁结尾 |
2.常用
表达式 | 功能 |
---|---|
. | 表示匹配任意字符 |
\\d \\D | 表示数字/非数字 |
\\w \\W | 表示(非)字母/数字/下划线 |
[\u4e00-\u9fa5] | 匹配汉字 |
3.高级
表达式 | 功能 |
---|---|
?: | 表示出现 0次 或 1次 |
+ | 表示出现 1次 或 多次 |
* | 表示出现任意次 (包括0/1/多次) |
{n} | 表示出现n次 |
{n,m} | 表示出现 n~m次 |
{n, } | 表示出现 n次 及以上 |
(?![A-z]{5,11}$) | 表示排除后面出现该匹配的情况 |
三、StringBuilder和StringBuffer类
两者的用法基本一样。
1.区别
- String 是不可变对象,每次进行修改都等同于生成了新的String对象,然后将指针指向新的String对象,效率低下,浪费大量有限的内存空间,故经常改变内容的最好不要使用String。
- StringBuffer和StringBuilder的对象能被多次修改且不产生新的未使用对象。
- StringBuilder类在Java5中提出,之与StringBuffer最大的区别是,前者速度更快但线程不安全,后者速度一般但线程安全。所以常用前者。
2.常用方法
(1)追加 .append()
StringBuilder s = new StringBuilder("hel哈喽low");
s.append("你好"); // 追加
System.out.println(s); // hel哈喽low你好
(2)插入 .insert()
s.insert(6,"kitty"); // 插入(要插入的下标,要插入的内容)
System.out.println(s); // hel哈喽lkittyow你好
(3)倒置 .reverse()
s.reverse();// 倒置
System.out.println(s); // 好你woyttikl喽哈leh
3.继承结构图
四、Math和Random类
1.Math 的常用方法
方法 | 功能 |
---|---|
.ceil()/.floor()/.round() | 向上/向下/四舍五入取整 |
.abs() | 绝对值 |
.random() | 随机数 范围:[0,1) 的小数 |
.pow( , ) / .sqrt() | 幂/平方根 |
2.Random 的常用方法
(1)无参构造生成随机数
Random r = new Random();
(2)有参构造生成随机数
Random r2 = new Random(9);//根据参数种子来创建伪随机数
(3)XX范围的伪随机数
r3.nextXX();//XX范围的伪随机数
// 比如:
r3.nextInt();//返回int范围随机整数,若加参数则前闭后包
五、日期类
1.Date类
(1)创建当前时间的Date对象
Date d = new Date();
(2)创建指定时间的Date对象
Date d = new Date(2020-1900,10-1,31);
(3)一系列get/set方法
.getMonth()、getDate()、setMinutes( )等
2.Calender类
(1)介绍
Calendar类的功能要比Date类强大很多,考虑了时区等问题。
它是一个抽象类,提供了getInstance方法用来创建对象。
(2)创建当前日期对象
Calendar c = Calendar.getInstance();
(3)创建指定日期对象
创建当前日期对象后使用set
c.set(2020, 10 - 1, 31);
c.set(Calendar.YEAR,2020);
(4)一系列get/set方法
c.get(Calendar.YEAR)、c1.get(Calendar.DATE)等
(5)和Date关联
.setTime(new Date());
3.SimpleDateFormat类(日期格式化类)
(1)创建格式化对象
SimpleDateFormat f = new SimpleDateFormat("yy年MM月dd日 HH:mm:ss");
(2)format方法
f.format(date); // 将Date数据按格式转化为字符串
(3)String方法
f.parse("2020年10月31日 16:23:59"); // 将符合格式的字符串转化为Date数据
六、数字类
double相减会转换为二进制,因它的有效位数16会出现存储小数位不够的情况,就会出现误差,不满足某些对数字要求比较高的程序的需求,比如金融类。所以出现了数字类来解决这些问题。
1.BigDecimal类
用于小数的精确计算。
参数必须为字符串,否则仍然会有精度问题。
常用方法:
方法 | 操作 |
---|---|
.add(b) | 加 |
.subtract(b) | 减 |
.multiply(b) | 乘 |
.divide(b) | 除 |
2.BigInteger类
(1)超长整数的创建与计算
BigInteger in1=new BigInteger("9999999999999999");//创建
in1.add(in2):// 计算
(2)进制转换
方法 | 代码 |
---|---|
十进制转二进制 | .intValue() (会直接改变原对象的值) |
二进制转其他进制 | .toString(10) (不会改变原对象的值) |
3.DecimalFormat类
按 某格式 四舍五入 精确 (不足部分用0填补)
System.out.println(new DecimalFormat("0.000").format(3.1415926)); // 3.142 "0.000"
System.out.println(new DecimalFormat("#").format(3.1415926)); // 3 "#"(取整)
System.out.println(new DecimalFormat("#.###%").format(3.1415926)); // 314.159% "#.##%"(百分比格式)
System.out.println(new DecimalFormat("#.###E0").format(299792458)); // 2.998E8 "#.###E0"(科学计数法)
System.out.println(new DecimalFormat(",###").format(299792458)); // 299,792,458 (每三位以逗号进行分隔)
System.out.println(new DecimalFormat("光速大小为每秒,###米。").format(299792458)); // 按格式嵌入文本