标签:java学习
Java学习笔记(2015.7.27~7.31)Java
课堂
(复习)
数据的基本单位是bit(位)。
类型 | bit | Kb | 范围 |
---|---|---|---|
byte | 8位 | 1字节 | -128~127(2^8) |
short | 16位 | 2字节 | -32768~32767(2^16) |
int | 32位 | 4字节 | 很大,略 |
long | 64位 | 8字节 | 灰常大,略 |
char通过ASCII(英语发音/ski/)转成int,应用较多。
顺序
分支
循环
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
静态调用静态
几乎所有程序员都需要的功能
应用程序接口 Application Programming Interface
与数组相同
自动增加或减小容器的长度
int size();
boolean isEmpty();
void clear();
boolean contains(Object element);要用到equals
boolean add(Object element);
boolean remove(Object element);
boolean cotainsAll(Collection c);
boolean addAdd(Collection c);
boolean removeAll(Collection c);
boolean retainAll(Collection c);求交集
按照保存顺序存放
元素可以重复
不按照保存顺序存放,按照自己的特定顺序
HashSet内部元素排序按照HashCode值
元素不可以洪福
ArrayList的内部实现使用了数组,如果元素个数小于10,数组大小为10,如果大于10,则为原长度+原长度的一半
保存键值对形式的数据
例如:学号和学生姓名
保存元素时,如果key相同,值会被覆盖
key是唯一的,不允许重复
每个容器都实现了Iterator接口
仅有三个方法:
boolean hasNext();
Object next();
void remove();
迭代代码片段:
Iterator itr = c.iterator();while(itr.hasNext()) { itr.next();}
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);
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); }
保证类型安全
获取数据时不需要类型强制转换
List<String> list = new ArrayList<String>();list.add("aaa");list.add(12);//错误,类型不符
Iterator做迭代时,迭代的对象有且只有一次;
for则没有这个开始,重复几次都可以。
存储性能
子类 | 增 | 删 | 改 | 查 |
---|---|---|---|---|
ArrayList | 低 | 低 | 高 | 高 |
LinkedList | 高 | 高 | 低 | 低 |
物理结构,ArrayList的底层是数组,LinkedList的底层是链表。
数组:元素个数固定,空间连续
链表:元素个数不固定,空间不连续
功能角度:队列(堆),栈,树(了解)
队列:普通模式,先进先出(First in First out)
栈:后进先出,***夹模式(Last in First Out)
树:有序二叉树,在一个分支中,左边的节点最小,右边的节点最大。
push:压入栈中
pop:讲栈顶部的元素弹出(最后进来的推出去)
ArrayList为什么有两个remove方法?
答:remove(object o)是Collection都有的,remove(int index)是子类新添加的,因为ArrayList是基于数组实现的,所以才有了下标。
前提:数组必须是有序的
Arrays.binarySearch(arrays,key)
List asList = Arrays。asList(1,2,3,4,5);
可变参数是以数组的方式实现的,所以不能同时存在以数组作为形参的方法重写。
思路:
使当前的类实现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 中等于指定对象的元素数。
标签:java学习
原文地址:http://jensen.blog.51cto.com/10505289/1680986