StringBuilder类和String类的转换
1. String --> StringBuilder:可以使用StringBuilder的构造方法
(1)StringBuilder(String str) 构造一个字符串生成器,并初始化为指定的字符串内容
例如: String str = "Hello";
StringBuilder bu = new StringBuilder(str);
2. StringBuilder --> String:可以使用StringBuilder中的toString方法
(2)public String toString():将当前StringBuilder对象转换为String对象
例如: String s = bu.toString();
包装类
基本数据类型的数据,使用起来非常的方便,但是没有对应的方法来操作这些数据。
所以我们可以使用一个类,把基本类型的数据包装起来,这个类叫包装类。
在包装类中可以定义一些方法,用来操作基本类型的数据。
- 装箱与拆箱
装箱:把基本类型的数据,包装到包装类中(基本类型的数据 --> 包装类)
1. 构造方法:
(1)Integer(int value) 构造一个新分配的Integer对象,它表示指定的int值
例如: Integer in1 = new Integer(1);
System.out.println(in1); // 1
注意:方法上有横线,说明方法过时了
(2)Integer(String s) 构造一个新分配的Integer对象,它表示String参数所指示的int值
注意:传递的字符串,必须是整数类型的字符串,否则会抛出异常:NumberFormatException 数字格式化异常 "100" 正确 "a" 抛异常
例如: Integer in2 = new Integer("1");
System.out.println(in2); // 1
注意:方法上有横线,说明方法过时了
2. 静态方法:
(1)static Integer valueOf(int i) 返回一个表示指定的int值的Integer实例
例如: Integer in3 = Integer.valueOf(1);
System.out.println(in3);//1
(2)static Integer valueOf(String s) 返回保存指定的String的值的Integer对象
例如: Integer in4 = Integer.valueOf("1");
System.out.println(in4);
拆箱:在包装类中取出基本类型的数据(包装类 --> 基本类型的数据)
1. 成员方法:
(1)int intValue() 以int类型返回该Integer的值
例如: int i = in1.intValue();
System.out.println(i);//1
基本类型 包装类(引用类型,包装类都位于java.Lang包下)
byte Byte
short Short
int Integer 【特殊】
long Long
float Float
double Double
char Character 【特殊】
boolean Boolean
- 自动装箱与自动拆箱
基本类型的数据和包装类之间可以自动的相互转换 JDK1.5之后出现的新特性
1. 自动装箱:直接把int类型的整数赋值给包装类
例如: Integer in = 1;
// 相当于 Integer in = new Integer(1);
2. 自动拆箱:in是包装类,无法直接参与运算,可以自动转换为基本类型的数据,再参与运算
例如: in = in + 2;
// in + 2; 就相当于 in.intValue() + 3 = 3;
// in = in + 2; 就相当于 in = new Integer(3) 自动装箱
注意:ArrayList集合无法直接存储整数,可以存储Integer包装类
例如: ArrayList<Integer> list = new ArrayList<>();
list.add(1); // 自动装箱 list.add(new Integer(1));
int a = list.get(0); // 自动拆箱 list.get(0).intValue();
- 基本类型与字符串之间的转换
1. 基本类型 --> 字符串
(1)基本类型数据的值+"" 最简单的方式(工作中常用)
例如: String s1 = 100 + "";
System.out.println(s1 + 200); // 100200
(2)使用包装类中的静态方法
static String toString(int i) 返回一个表示指定整数的String对象
例如: String s2 = Integer.toString(100);
System.out.println(s2 + 200); // 100200
(3)使用String类中的静态方法
static String valueOf(int i) 返回int参数的字符串表示形式
例如: String s3 = String.valueOf(100);
System.out.println(s3 + 200); // 100200
2. 字符串 --> 基本类型
使用包装类的静态方法parseXX("字符串")
Integer类: static int parseInt(String s)
Double类: static double parseDouble(String s)
...
例如: int i = Integer.parseInt("100");
System.out.println(i + 200); // 300
int i2 = Integer.parseInt("a"); // NumberFormatException 数字格式化异常
System.out.println(i2);
集合框架
集合:集合是java中提供的一种容器,可以用来存储多个数据。
集合和数组的区别:
数组的长度是固定的;集合的长度是可变的。
数组中可以存储基本类型数据和对象;集合中存储的都是对象。
学习集合的目标:
1. 会使用集合存储数据
2. 会遍历集合,把数据取出来
3. 掌握每种集合的特性
集合框架的学习方式:
1. 学习顶层:学习顶层接口/抽象类中共性的方法,所有的子类都可以使用
2. 使用底层:顶层不是接口就是抽象类,无法创建对象使用,需要使用底层的子类创建对象使用
Collection接口:定义的是所有单列集合中共性的方法,所有的单列集合都可以使用共性的方法,【没有带索引的方法】
List接口:(Vector集合、ArrayList集合、LinkedList集合)
1. 【有序】的集合(存储和取出元素顺序相同)
2. 允许存储重复的元素
3. 【有索引】,可以使用普通的for循环遍历
ArrayList:底层是数组实现的,查询快,增删慢
LinkedList:底层是链表实现的,查询慢,增删快
Set接口:(TreeSet集合、HashSet集合、LinkedHashSet集合)
1. 不允许存储重复元素
2. 没有索引(不能使用普通的for循环遍历)
3. TreeSet集合、HashSet集合 无序的集合(存储和取出元素的顺序有可能不一致)
LinkedHashSet集合 有序的集合
HashSet:底层是哈希表+(红黑树)实现的,存取无序
LinkedHashSet:底层是哈希表+链表实现的,可以保证存取顺序
TreeSet:底层是二叉数实现的。一般用于排序