小结:
0、 String和StringBuffer和StringBuilder的区别
* String是一个不可变的字符序列
* StringBuffer,StringBuilder是可变的字符序列
* StringBuffer是jdk1.0版本的,是线程安全的,效率低
* StringBuilder是jdk1.5版本的,是线程不安全的,效率高
StringBuffer类的构造方法:
* public StringBuffer():无参构造方法
* public StringBuffer(int capacity):指定容量的字符串缓冲区对象
* public StringBuffer(String str):指定字符串内容的字符串缓冲区对象
public StringBuffer append(String str):添加
public StringBuffer insert(int offset,String str):插入
(指定起始位置)
public StringBuffer deleteCharAt(int index):删除
(只能指定结尾位置索引,索引后字符删除)
* public StringBuffer delete(int start,int end):删除
(指定开始、结束位置)
* public StringBuffer replace(int start,int end,String str):替换
(指定开始、结束位置)
* public StringBuffer reverse():字符串反转
* public String substring(int start):截取
(从指定位置截取到末尾)
* public String substring(int start,int end):截取
* 注意:返回值类型不再是StringBuffer本身
1、 A:为什么会有基本类型包装类
* 将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。
- B:常用操作
- 常用的操作之一:用于基本数据类型与字符串之间的转换。
- C:基本类型和包装类的对应
-
byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean
2、String和int类型的相互转换)
-
A:int – String
- a:和""进行拼接
- b:public static String valueOf(int i)
- c:int – Integer – String(Integer类的toString方法())
- d:public static String toString(int i)(Integer类的静态方法)
-
B:String – int
- a:String – Integer – int
- public static int parseInt(String s)
3、JDK5的新特性
* 自动装箱:把基本类型转换为包装类类型
* 自动拆箱:把包装类类型转换为基本类型
* Integer ii = 100;
* ii += 200;
C:注意事项
* 在使用时,Integer x = null;代码就会出现NullPointerException。
* 建议先判断是否为null,然后再使用。
4、Math类概述
* Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
- B:成员方法
- public static int abs(int a)
- public static double ceil(double a)
- public static double floor(double a)
- public static int max(int a,int b) min自学
- public static double pow(double a,double b)
- public static double random()
- public static int round(float a) 参数为double的自学
- public static double sqrt(double a)
5、Random类的概述
* 此类用于产生随机数如果用相同的种子创建两个 Random 实例,
* 则对每个实例进行相同的方法调用序列,
它们将生成并返回相同的数字序列。
* B:构造方法
* public Random()
* public Random(long seed)
* C:成员方法
* public int nextInt()
* public int nextInt(int n)(重点掌握)
6、BigInteger的概述
* 可以让超过Integer范围内的数据进行运算
* B:构造方法
* public BigInteger(String val)
* C:成员方法
* public BigInteger add(BigInteger val)
* public BigInteger subtract(BigInteger val)
* public BigInteger multiply(BigInteger val)
* public BigInteger divide(BigInteger val)
* public BigInteger[] divideAndRemainder(BigInteger val)
7、BigDecimal的概述
* 由于在运算的时候,float类型和double很容易丢失精度,演示案例。
* 所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal
* 不可变的、任意精度的有符号十进制数。
* B:构造方法
* public BigDecimal(String val)
* C:成员方法
* public BigDecimal add(BigDecimal augend)
* public BigDecimal subtract(BigDecimal subtrahend)
* public BigDecimal multiply(BigDecimal multiplicand)
* public BigDecimal divide(BigDecimal divisor)
8、SimpleDateFormat类实现日期和字符串的相互转换)
* A:DateFormat类的概述
* DateFormat 是日期/时间格式化子类的抽象类,
它以与语言无关的方式格式化并解析日期或时间。
是抽象类,所以使用其子类SimpleDateFormat
* B:SimpleDateFormat构造方法
* public SimpleDateFormat()
* public SimpleDateFormat(String pattern)
* C:成员方法
* public final String format(Date date)
* public Date parse(String source)
9、集合框架(集合的由来及集合继承体系图)
* A:集合的由来
* 数组长度是固定,当添加的元素超过了数组的长度时需要对数组重新定义, 太麻烦,java内部给我们提供了集合类,能存储任意对象,
长度是可以改变的,随着元素的增加而增加,随着元素的减少而减少
* B:数组和集合的区别
* 区别1 :
* 数组既可以存储基本数据类型,又可以存储引用数据类型,
基本数据类型存储的是值,引用数据类型存储的是地址值
* 集合只能存储引用数据类型(对象)集合中也可以存储
基本数据类型,但是在存储的时候会自动装箱变成对象
* 区别2:
* 数组长度是固定的,不能自动增长
* 集合的长度的是可变的,可以根据元素的增加而增长
* C:数组和集合什么时候用
* 1,如果元素个数是固定的推荐用数组
* 2,如果元素个数不是固定的推荐用集合
* D:集合继承体系图
*基本功能演示*
boolean add(E e)
boolean remove(Object o)
void clear()
boolean contains(Object o)
boolean isEmpty()
int size()
Collection coll = new ArrayList();
coll.add(new Student("张三",23));
Object[] arr = coll.toArray(); //将集合转换成数组
for (int i = 0; i < arr.length; i++) {
Student s = (Student)arr[i];//强转成Student
System.out.println(s.getName() + "," + s.getAge());
}
Iterator it = c.iterator();//获取迭代器的引用
while(it.hasNext()) { //集合中的迭代方法(遍历)
System.out.println(it.next());
}
10、List集合的特有功能概述
* void add(int index,E element)
* E remove(int index)
* E get(int index)
* E set(int index,E element)
A:数组
* 查询快修改也快
* 增删慢
- B:链表
- 查询慢,修改也慢
- 增删快
11、List的三个子类的特点)
-
A:List的三个子类的特点
-
ArrayList:
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。
Vector:
底层数据结构是数组,查询快,增删慢。
线程安全,效率低。
Vector相对ArrayList查询慢(线程安全的)
Vector相对LinkedList增删慢(数组结构)
LinkedList:
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高。Vector和ArrayList的区别
Vector是线程安全的,效率低
ArrayList是线程不安全的,效率高
共同点:都是数组实现的
ArrayList和LinkedList的区别
ArrayList底层是数组结果,查询和修改快
LinkedList底层是链表结构的,增和删比较快,查询和修改比较慢共同点:都是线程不安全的
应用时如何选择:
查询多用ArrayList
增删多用LinkedList
如果都多ArrayList
(0–0)九层之台,起于累土。