Java学习笔记(2015.7.27~7.31)
Java
课堂
- Java学习笔记(2015.7.27~7.31)
- 小技巧
- 常用方法
- 1、List另一个子类--LinkedList
- 2、数组的常用方法
- 3、排序
- 1、二分法查找
- 2、数组转换为List
- 3、可变参数Type ... param (了解)
- 1、容器Collection
- 2、自动拆装箱(了解)
- 3、JDK增强for循环(了解)
- 4、泛型(掌握)
- 5、iterator与for在迭代中的区别
- 1、概念:保存多个对象的对象。
- 2、JDk为什么提供容器
- 3、API
- 4、容器的功能
- 5、Collection接口常用方法
- 6、容器之间的操作(了解)
- 7、List的特点
- 8、Set的特点
- 9、ArrayList的自动增加或减少元素的策略(了解)
- 10、Map(了解)
- 11、迭代
- 1、整形
- 2、数值的转换
- 3、程序的机构
- 4、方法重写的常见问题
- Day16
- Day18
- Day19
- 周末作业
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<list.size();i++) { String str = (String) list.get(i); System.out.println(str); }
4、泛型(掌握)
- 保证类型安全
- 获取数据时不需要类型强制转换
List<String> list = new ArrayList<String>();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<Student> { private int id; private String name; public int compareTo(Student o) { return this.id - o.id; } }
- 找其他具备比较能力的对象来比较
1、创建一个类,实现Comparator接口,用来比较每两个Student的大小,排序时传入自定义的Comparator对象。
class StudentComparator implements Comparator<Student>{ public int compare(Student o1, Student o2) { return o1.id - o2.id; } } …… Comparator<Student> comparator = new StudentComparator(); Collections.sort(list,comparator);
周末作业
小技巧
将字符转为数字
例如将‘1‘转为整形1
int a = Integer.valueOf(‘1‘+"")
这样才能顺利转成1
常用方法
- charAt() 字符串的方法
字符串名.charAt(index) 将字符串中的字符取出 - Collections.frequency(Collection c, Object o)
返回指定 collection 中等于指定对象的元素数。
时间: 2024-10-11 20:00:11