4.1 基本类型的封装类
java
// 字符串转int
Integer obj = new Intreger("10");
int n = new Integer("10");
int num = Integer.parseInt("10");
// 字符串转float
float fl = loat.parseFloat("10.0");
float f2 = new Float("10.0");
// int转字符串
String n = "" + 10;
String n = Integer.toString(10);
String n = String.valueOf(10);
4.2 装箱和拆箱
装箱是将栈中的数据封装成类的对象存储到堆中。拆箱是将对象转换成基本类型数据值,放到栈中。
4.3 Object 类
Object类是顶级父类,所有类都直接或间接继承了Object类,故而所有类都可调用其中的方法,都可以赋值给Object。
方法 | 功能描述 |
---|---|
protected clone() | copy |
public equals(object) | 比较二者内容是否相等 |
protected finalize() | 清理资源 |
public final getClass() | 返回运行时对象类型 |
public hashCode() | 返回哈希代码值 |
public String toString() | 返回其字符串表示 |
- 注意"=="比较的是两个对象的地址是否相同,而equals比较内容是否相同,然而如果一个类没有重写equals方法,那么二者运行结果相同。
- toString()如果没有被重写,默认返回:类名@哈希代码值。
4.4 字符串类
- String创建的字符串是不可变的。
- StringBuffer创建的字符串是可变的,最终可以通过toString()的方式转换成一个String对象。
- StringBuilder也是可以创建可变字符串,然而它并不像StringBuffer一样是线程安全的(多线程并发的时候,对数据进行保护,防止同时对数据进行操作,数据是安全了,但是相对的运行速度会变慢),所以不涉及线程安全、同步方面的问题,应优先考虑ta。
4.4.1 String类
方法 | 功能描述 |
---|---|
String(参数) | 构造函数,参数可以无、字符数组、字符串、StringBuffer、StringBuilder |
charAt(int) | 获取指定下标字符 |
compareTo(String) | 比较字符串大小,返回不等字符编码值的差 |
endsWith(String) | 是否以某字符串结尾 |
equals(Object) | 比较字符串内容是否相等 |
indexOf(String s) | 找出指定子字符串在字符串中出现的第一次位置 |
lastIndexOf(String s) | 找出指定子字符串在字符串中出现的最后一次位置 |
length() | 长度 |
subString(int begin, int end) | 截取字符串 |
valueOf(X x) | 将其他类型转换成字符串类型 |
toUpperCase() | 字符串转大写 |
[String类的常用方法] |
"+"连接字符串
- 加号前面是字符串的时候,会将后面的类型自动转换成字符串,于是如果放一个语句是不能执行后再将结果转换成字符串的
- 但是如果将语句放在加号前面,就可先执行语句再将结果转换成字符串类型,然后再实现连接
4.2.2 StringBuffer类
方法 | 功能描述 |
---|---|
append(String s) | 末尾追加字符串 |
capacity() | 返回返回缓冲区容量 |
delete(int start, int end) | 删除指定位置区间子字符串 |
insert(int offset, String s) | 指定位置插入字符串 |
setCharAt(int index, char ch) | 设置指定下标字符 |
setLength(int newLength) | 设置长度 |
replace(int start, int end, String s) | 替换 |
reverse() | 反转字符串 |
toString() | 输出缓冲区字符串 |
4.4.3 StringBuilder类
除去线程安全,至于方法都一致。
4.5 Scanner类
方法 | 功能描述 |
---|---|
hasNext(Pattern pattern) | 判断输入的数据是否符合指定的正则标准 |
next() | 接受输入的内容并以字符串形式返回 |
next(Pattern pattern) | 接受输入的内容,并进行正则验证 |
nextInt() | 接受输入整数 |
useDelimiter(String pattern) | 设置读取的分隔符 |
java
// Java中本身的next()方法就相当于C++中的cin
// 而如果特意设置useDelimitet("\n"),就相当于getline()方法
Scanner sc = new Scanner(System.in);
sc.useDelimiter("\n"); // 设置读取的分隔符为回车
String s = sc.next();
4.6 Math类
方法名 | 描述 |
---|---|
abs(double) | 绝对值 |
ceil(double) floor(double) | 得到不大于/小于的最小/大整数 |
round(double) | 四舍五入返回int或long |
sqrt(double) | 开方 |
pow(double, double) | 第一个参数的第二个参数次幂 |
random() | 返回在区间[0.0, 1.0)内的数 |
Random示例------
java
// 定义一个字符型数组
char[] pardStore = new char[62];
// 把所有的大写字母放进去 把所有的小写字母放进去 把0到9放进去
/********* Begin *********/
int size = 0;
for(char i = 'A'; i <= 'Z'; i++) {
pardStore[size++] = i;
}
for(char i = 'a'; i <= 'z'; i++) pardStore[size++] = i;
for(char i = '0'; i <= '9'; i++) pardStore[size++] = i;
/********* End *********/
// 分别以1、2、3作为种子数 生成6位随机密码
Scanner sc = new Scanner(System.in);
int seed = sc.nextInt();
/********* Begin *********/
Random random = new Random(seed);
for(int i = 0; i < 6; i++)
System.out.print(pardStore[random.nextInt(62)]);
/********* End *********/
4.7 Date类
Date示例------
java
// 键盘录入你的出生年月日 格式为yyyy-MM-dd
// 把该字符串转换为一个日期
// 通过该日期得到一个毫秒值
// 获取2020年10月1日的毫秒值
// 两者想减得到一个毫秒值
// 把该毫秒值转换为天 打印输出
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
/********* Begin *********/
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
Date d = ft.parse(line);
long n = d.getTime();
Date d2 = ft.parse("2020-10-01");
long now = d2.getTime();
long gap = now - n;
System.out.print("你的出生日期距离2020年10月1日:");
System.out.println(gap / 86400000 + "天");
/********* End *********/