0%

Java(19)StringBuilder类、装箱与拆箱

StringBuilder类

java.lang.StringBuilder类: 字符串缓冲区,可以提高字符串的效率

根据StringBuilder的API文档,常用构造方法有2个:

  1. public StringBuilder():构造一个空的StringBuilder容器。初始容量为16个字符
  2. public StringBuilder(String str):构造一个StringBuilder容器,并将字符串添加进去。

常用方法:

  1. public StringBuilder append(…):添加任意类型数据的字符串形式,并返回当前对象自身。
  2. public String toString():将当前StringBuilder对象转换为String对象。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.tipdm.Demo03;

/**
* java.lang.StringBuilder类: 字符串缓冲区,可以提高字符串的效率
* 根据StringBuilder的API文档,常用构造方法有2个:
*
* public StringBuilder():构造一个空的StringBuilder容器。初始容量为16个字符
* public StringBuilder(String str):构造一个StringBuilder容器,并将字符串添加进去。
*
* 常用方法:
* public StringBuilder append(...):添加任意类型数据的字符串形式,并返回当前对象自身。
* public String toString():将当前StringBuilder对象转换为String对象。
*/
public class Demo02StringBuilder {
public static void main(String[] args) {
// 空参数构造方法
StringBuilder bu1 = new StringBuilder();
System.out.println("bu1:" + bu1); // bu1:""

// 带字符串的构造方法
StringBuilder bu2 = new StringBuilder("abc");
System.out.println("bu2:" + bu2); // bu2:"abc"

// append方法
bu2.append(123); // 不用接收返回值
System.out.println(bu2);

/**
* 链式编程:方法返回值是一个对象,可以继续调用方法
*/
bu2.append("ad").append(213).append(true).append("今天星期四明天星期五");
System.out.println(bu2);

// toString 方法
// String -> StringBuilder
StringBuilder bu3 = new StringBuilder("今天星期四!");
// 添加一条数据
bu3.append("明天星期五");
// StringBuilder -> String
String str1 = bu3.toString();
System.out.println(str1);
}
}
1
2
3
4
5
6
7
bu1:
bu2:abc
abc123
abc123ad213true今天星期四明天星期五
今天星期四!明天星期五

进程已结束,退出代码0

装箱与拆箱

装箱、拆箱

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package com.tipdm.Demo03;

/**
* 装箱:把基本类型的数据,包装到包装类中(基本类型的数据->包装类)
* 构造方法:
* Integer(int value)
* 构造一个新分配的 Integer 对象,它表示指定的 int 值。
* Integer(String s)
* 构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。
* 传递的字符串,必须是基本类型的字符串,否则会抛出异常 ”100“——正确 ”a"——错误
* 静态方法:
* static Integer valueOf(int i)
* 返回一个表示指定的 int 值的 Integer 实例。
* static Integer valueOf(String s)
* 返回保存指定的 String 的值的 Integer 对象。
* 拆箱:从包装类对象转换为对应的基本类型。(包装类 -> 基本类型的数据)
* 成员方法:
* intValue()
* 以 int 类型返回该 Integer 的值。
*/
public class Demo03Integer {
public static void main(String[] args) {
// 装箱:把基本类型的数据,包装到包装类中(基本类型的数据->包装类)
// 构造方法:
Integer int1 = new Integer(1);
System.out.println(int1); // 1

Integer int2 = new Integer("2");
System.out.println(int2);// 2

// 静态方法
Integer int3 = Integer.valueOf(3);
System.out.println(int3); // 3
Integer int4 = Integer.valueOf("4");
System.out.println(int4); // 4
// Integer int5 = Integer.valueOf("a");
// System.out.println(int5); // NumberFormatException 数字格式化异常

// 拆箱:从包装类对象转换为对应的基本类型。(包装类 -> 基本类型的数据)
System.out.println("========");
int i = int4.intValue();
System.out.println(i); // 4
}
}
1
2
3
4
5
6
7
8
1
2
3
4
========
4

进程已结束,退出代码0

自动装箱与自动拆箱

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.tipdm.Demo03;

import java.util.ArrayList;

/**
* 自动装箱与自动拆箱:基本类型的数据和包装类之间可以自动的相互转换
* JDK1.5之后出现的新特性
*/
public class Demo04Integer {
public static void main(String[] args) {
/**
* 自动装箱:直接把int类型的整数赋值包装类
* Integer int1 = 1; 就相当于 Integer int1 = new Integer(1);
*/
Integer int1 = 1;

/**
* 自动拆箱:int1是包装类,无法直接参与运算,可以自动转换为基础数据类型,在进行计算
* int1+2;就相当于 int1.intValue() + 2
* i = int1.intValue() + 2 = 3 又是一个自动装箱
*/
int i = int1 + 2;
ArrayList<Integer> list = new ArrayList<>();
/**
* ArrayList集合无法直接存储整数,可以存储Integer包装类
*/
list.add(1); // 自动装箱 list.add(new Integer(1));
int a = list.get(0); // 自动拆箱 list.get(0).intValue();
System.out.println(a);
}
}
1
2
3
1

进程已结束,退出代码0

基本类型与字符串类型之间的相互转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package com.tipdm.Demo03;

/**
* 基本类型与字符串类型之间的相互转换
* 基本类型 -> 字符串(String)
* 1. 基本类型的值+空字符串""(工作中常用)
* 2. 包装类的静态方法toString(参数) 不是Object类的toString() 重载
* static String toString(int i) 返回一个表示指定整数的 String 对象。
* 3. String类的静态方法valueOf()
* static String valueOf(int i) 返回 int 参数的字符串表示形式。
* 字符串(String) -> 基本类型
* 使用包装类的静态方法parseXXX("数值类型的字符串")
* Integer类:static int parseInt(String s)
* Double类:static double parseDouble(String s)
*/
public class Demo05Integer {
public static void main(String[] args) {
// 基本类型 -> 字符串
int int1 = 100;
String str1 = int1 + "";
System.out.println(str1 + 200); // 100200

String str2 = Integer.toString(110);
System.out.println(str2 + 200); // 110200

String str3 = String.valueOf(120);
System.out.println(str3 + 200); // 120200

System.out.println("=============");
// 字符串(String) -> 基本类型
int i = Integer.parseInt(str1);
System.out.println(i - 90); // 10
// int a = Integer.parseInt("a"); // 类型转换错误
// System.out.println(a);
}
}
1
2
3
4
5
6
7
100200
110200
120200
=============
10

进程已结束,退出代码0
-------------本文结束感谢您的阅读-------------