自动装箱和自动拆箱
自动装箱----自动将基本数据类型转换为包装类类型
Integer x=3----等价于 Integer x=new Integer(3)
自动拆箱----自动将包装类类型转换为基本数据类型
Integer x=new Integer(3)-----等价于int y=x.intValue
狭义javaBean的规范
在java中,可以重复利用的组件称为javaBean
在开发中,经常需要对对象进行数据的封装,以及对象数据的传输。
这一类对象,通常只有属性的定义,没有行为的定义。这一类对象就是狭义的javaBean
在java中,狭义javaBean有以下规范:
javaBean必须包含一个无参数的公有构造方法。
属性全部为私有属性,通过get/set方法对属性进行访问和设置。
需要实现序列化接口。
在堆中产生的字符串对象,需要以常量池中的字符串常量对象为模板。将内容考入堆中的字符串对象中。
字符串具有长度不可改变的特性。当对字符串进行添加、替换、删除时,不会更改字符串的内容,而是产生新的对象
StringBuffer会在缓冲区中开辟一个空间,当对StringBuffer的内容作连接、替换、删除等操作时,不会产生新对象。
toString使用这个将StringBuffer转换为String
StringBuilder是线程不安全的,StringBuffer是线程安全的
性能:StringBuilder>StringBuffer>String
集合的特点
元素类型可以不同、集合长度可变、空间不固定。
java中对一些数据结构和算法进行了封装即集合。集合也是一种对象,用于存储、检索、操作和传输对象。
JCF(java Collections Framework)集合框架。它提供了用于管理集合的接口和类
集合框架包含三个部分:接口、实现类、算法
集合框架的接口:
一个父接口 Collection
List (线性,元素可重复)
(Arraylist,Vector,LinkedList)
ArrahyList底层使用数组实现,遍历速度快,中间插入和删除元素速度慢。线程不安全。
Vector底层也使用数组实现,性能和ArrayList类似。线程安全。
LikedList采用双向链表实现。每个元素除了存放数据以外,还要存放上一个和下一个元素的引用。遍历速度慢,中间插入和删除元素速度快。
Set(元素不重复)
HahSet实现类
TreeSet(具有去重性(如果有两个比较的值重复了,就会取掉一个值输出另一个值))
Map
键值对,一个元素包含两个对象,键对象不重复
Map的实现类
HashMap Hashtable Properties
移除元素
ad.remove(0);
<String>表示泛型,规定在该集合中只能放指定的类型
List<String>list=new ArrayList<String>();
list.add("adc");
list.add("ddd");
System.out.println(list.size());
创建List集合对象
List list=new ArrayList();
//添加元素
list.add("e");
list.add(3);//list.add(new Integer(3));这是自动装箱
list.add(new JFrame());
list.add("陈");
System.out.println(list.size());//size是得到集合的长度
遍历
这种遍历方式,只适合List
for (int i = 0; i < ad.size(); i++) {
Student s = ad.get(i);
System.out.println(s);}
迷代器方法
Iterator<Student> t = ad.iterator();
while (t.hasNext()) {//判断是否有下一个元素
Student s = t.next();//取出元素,进行下一个,没有就结束了,跟点名一样
System.out.println(s);
}
for....each方法
for(Student s:ad){
System.out.println(s);
集合的算法 iterator Arrays Collections
迷代算法接口 数组算法类 集合算法类
ArrahyList、Vector、LinkedList性能的差异。属于List类型
ArrahyList底层使用数组实现,遍历速度快,中间插入和删除元素速度慢。线程不安全。
Vector底层也使用数组实现,性能和ArrayList类似。线程安全。
LikedList采用双向链表实现。每个元素除了存放数据以外,还要存放上一个和下一个元素的引用。遍历速度慢,中间插入和删除元素速度快。
Collections进行集合排序时,需要指定比较规则。
指定比较规则有两种方法:
1、需要排序的类,实现Comparable接口,重写compareTo方法。
2、单独指定排序指定排序规则。该排序类需要实现Comparator接口,重写comoare方法。
HashMap和Hashtable的区别和联系。
1、HashMap和Hashtable都是Map集合的实现类。
2、HashMap允许空键和空值,但Hashtable不允许。
3、HashMap线程不安全,而Hashtable线程安全。
单一职责原则:一个类只应该和一个职责相关的业务,不要让一个类承担过多的职责