Java学习笔记(2015.7.27~7.31)
Java
课堂
Day16
(复习)
1、×××
数据的基本单位是bit(位)。
类型 | bit | Kb | 范围 |
---|---|---|---|
byte | 8位 | 1字节 | -128~127(2^8) |
short | 16位 | 2字节 | -32768~32767(2^16) |
int | 32位 | 4字节 | 很大,略 |
long | 64位 | 8字节 | 灰常大,略 |
2、数值的转换
char通过ASCII(英语发音/ski/)转成int,应用较多。
3、程序的机构
顺序
分支 循环4、方法重写的常见问题
Duplicate method study() in type Student class
方法重复了The constructor Student() is undefined
构造方法 未定义Constructor call must be the first statement in a constructor
this()调用重载(Overload)构造方法必须在第一行The static field Chinese.guoji should be
accessed in a static way 静态调用静态
Day18
1、容器Collection
1、概念:保存多个对象的对象。
2、JDk为什么提供容器
几乎所有程序员都需要的功能
3、API
应用程序接口 Application Programming Interface
4、容器的功能
与数组相同
自动增加或减小容器的长度
5、Collection接口常用方法
int size();
boolean isEmpty();
void clear();
boolean contains(Object element);要用到equals
boolean add(Object element);
boolean remove(Object element);
6、容器之间的操作(了解)
boolean cotainsAll(Collection c);
boolean addAdd(Collection c);
boolean removeAll(Collection c);
boolean retainAll(Collection c);求交集
7、List的特点
按照保存顺序存放
元素可以重复
8、Set的特点
不按照保存顺序存放,按照自己的特定顺序
HashSet内部元素排序按照HashCode值
元素不可以洪福
9、ArrayList的自动增加或减少元素的策略(了解)
ArrayList的内部实现使用了数组,如果元素个数小于10,数组大小为10,如果大于10,则为原长度+原长度的一半
10、Map(了解)
保存键值对形式的数据
例如:学号和学生姓名
保存元素时,如果key相同,值会被覆盖
key是唯一的,不允许重复
11、迭代
每个容器都实现了Iterator接口
仅有三个方法:
boolean hasNext();
Object next();
void remove();
迭代代码片段:
Iterator itr = c.iterator();while(itr.hasNext()) { itr.next();}
2、自动拆装箱(了解)
AutoBoxing/AutoUnBoxing
基本类型 | 封装类型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
字符包装类判断是否是数字或字母
boolean digit = Character.isDigit('4');System.out.println(digit);boolean letter = Character.isLetter('!');System.out.println(letter);
3、JDK增强for循环(了解)
for(Object str: list) { System.out.println(str);}for(int i = 0; i
4、泛型(掌握)
保证类型安全
获取数据时不需要类型强制转换
Listlist = new ArrayList ();list.add("aaa");list.add(12);//错误,类型不符
5、iterator与for在迭代中的区别
Iterator做迭代时,迭代的对象有且只有一次;
for则没有这个开始,重复几次都可以。
Day19
1、List另一个子类--LinkedList
存储性能
子类 | 增 | 删 | 改 | 查 |
---|---|---|---|---|
ArrayList | 低 | 低 | 高 | 高 |
LinkedList | 高 | 高 | 低 | 低 |
物理结构,ArrayList的底层是数组,LinkedList的底层是链表。
数组:元素个数固定,空间连续
链表:元素个数不固定,空间不连续
功能角度:队列(堆),栈,树(了解)
队列:普通模式,先进先出(First in First out)
栈:后进先出,***夹模式(Last in First Out)
树:有序二叉树,在一个分支中,左边的节点最小,右边的节点最大。
push:压入栈中
pop:讲栈顶部的元素弹出(最后进来的推出去)
ArrayList为什么有两个remove方法?
答:remove(object o)是Collection都有的,remove(int index)是子类新添加的,因为ArrayList是基于数组实现的,所以才有了下标。
2、数组的常用方法
1、二分法查找
前提:数组必须是有序的
Arrays.binarySearch(arrays,key)
2、数组转换为List
List asList = Arrays。asList(1,2,3,4,5);
3、可变参数Type ... param (了解)
可变参数是以数组的方式实现的,所以不能同时存在以数组作为形参的方法重写。
3、排序
思路:
使当前的类实现Comparable接口,增加可以与其他同类对象比较的能力
class Student implements Comparable{ private int id; private String name; public int compareTo(Student o) { return this.id - o.id; }}
找其他具备比较能力的对象来比较
1、创建一个类,实现Comparator接口,用来比较每两个Student的大小,排序时传入自定义的Comparator对象。
class StudentComparator implements Comparator{ public int compare(Student o1, Student o2) { return o1.id - o2.id; }}……Comparator comparator = new StudentComparator();Collections.sort(list,comparator);
周末作业
小技巧
将字符转为数字
例如将'1'转为×××1int a = Integer.valueOf('1'+"")
这样才能顺利转成1
常用方法
charAt() 字符串的方法
字符串名.charAt(index) 将字符串中的字符取出Collections.frequency(Collection c, Object o)
返回指定 collection 中等于指定对象的元素数。