1.Object
java.lang.Object 类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。
object成员方法:见名知意
1.clone()
2.equals(obj),等于==;person类覆写的equals也调用了String的比较,拉丁字节组,字符组。
3.getClass()
4.hashCode()
5.notify()
6.notifyAll()
7.toString 对象的类型+@+内存地址值
8.wait()
9.wait( long timeout)
System.out.println("love " + new ToStringTest())
String s1 = "ab";
String s2 = "abc";
String s3 = s1 + "c";
System.out.println(s3 == s2); //false
2.Date 类
构造Date() Date(long date)
成员方法:
getTime()返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
3.SimpleDateformat继承 Dateformat抽象类
Dateformat类 是format子类不是date子类
SimpleDateFormat(String pattern)
用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
DateFormat类的常用方法有:
public String format(Date date) :将Date对象格式化为字符串。
public Date parse(String source) :将字符串解析为Date对象。
4.Calendar类
Calendar cal = Calendar.getInstance();
静态方法
public static Calendar getInstance() :使用默认时区和语言环境获得一个日历
成员方法
public int get(int field) :返回给定日历字段的值。
public void set(int field, int value) :将给定的日历字段设置为给定值。
public abstract void add(int field, int amount) :根据日历的规则,为给定的日历字段添加或减去指定的时间量。
public Calender getTime() :返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象
5.System类 没构造 全是静态方法
public static long currentTimeMillis() :返回以毫秒为单位的当前时间。
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) :将数组中指定的数据拷贝到另一个数组中
exit(int status) 终止当前正在运行的 Java 虚拟机。
gc() 运行垃圾回收器。
getProperty(String key) 获取指定键指示的系统属性。
6.StringBuilder类会自动维护数组的扩容。
构造方法
public StringBuilder() :构造一个空的StringBuilder容器。
public StringBuilder(String str) :构造一个StringBuilder容器,并将字符串添加进去。
常用成员方法
public StringBuilder append(...) :添加任意类型数据的字符串形式,并返回当前对象自身。
public String toString() :将当前StringBuilder对象转换为String对象。
reverse() 将此字符序列用其反转形式取代。
replace(int start, int end, String str) 使用给定 String 中的字符替换此序列的子字符串中的字符。
7.包装类
Integer i = 4;//自动装箱。相当于Integer i = Integer.valueOf(4);
i = i + 5;//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5;
//加法运算完成后,再次装箱,把基本数值转成对象
除了Character类之外,其他所有包装类都具有parseXxx静态方法可以将字符串参数转换为对应的基本类型
转换为 to string 基本类型直接与””相连接即可;如:34+""
8.集合框架
集合按照其存储结构可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.Map。
Collection:单列集合类的根接口,它有两个重要的子接口,分别是java.util.List和java.util.Set。其中,List的特点是元素有序、元素可重复。Set的特点是元素无序,而且不可重复。List接口的主要实现类有java.util.ArrayList和java.util.LinkedList,vector。Set接口的主要实现类有java.util.HashSet,linkedhashset和java.util.TreeSet。
HashMap:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
LinkedHashMap:HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法
9.Collection
常用方法
Collection<String> coll = new ArrayList<String>();
public boolean add(E e) : 把给定的对象添加到当前集合中 。
public void clear() :清空集合中所有的元素。
public boolean remove(E e) : 把给定的对象在当前集合中删除。
public boolean contains(E e) : 判断当前集合中是否包含给定的对象。
public boolean isEmpty() : 判断当前集合是否为空。
public int size() : 返回集合中元素的个数。
public Object[] toArray() : 把集合中的元素,存储到数组中。
使用迭代器 遍历 每个集合对象都有自己的迭代器,使用迭代器不能改变集合长度
Iterator<String> it = coll.iterator();
while(it.hasNext()){ //判断是否有迭代元素
String s = it.next();//获取迭代出的元素
System.out.println(s);
}
10.泛型
泛型类
修饰符 class 类名<代表泛型的变量> { }
class ArrayList<E>{
public boolean add(E e){ }
public E get(int index){ }
....
}
泛型方法
修饰符 <代表泛型的变量> 返回值类型(返回值也可泛型) 方法名(参数){ }
11.数据结构
栈:stack,又称堆栈,对元素的存取特点是:先进后出。即,存进去的元素,要在后它后面的元素依次取出后,才能取出该元素。
队列:queue,简称队,对元素的存取特点是:先进先出。即,存进去的元素,要在后它前面的元素依次取出后,才能取出该元素。
数组:Array,是有序的元素序列,对元素的存取特点是:
1、查找元素快:通过索引,可以快速访问指定位置的元素
2、增删元素慢
(1)指定索引位置增加元素:需要创建一个新数组,将指定新元素存储在指定索 引位置,再把原数组元素根据索引,复制到新数组对应索引的位置。
(2)指定索引位置删除元素:需要创建一个新数组,把原数组元素根据索引,复 制到新数组对应索引的位置,原数组中指定索引位置元素不复制到新数组中。
链表:linked list,对元素的存取有如下的特点:
1、多个结点之间,通过地址进行连接。例如,多个人手拉手,每个人使用自己的 右手拉住下个人的左手,依次类推,这样多个人就连在一起了。
2、查找元素慢:想查找某个元素,需要通过连接的节点,依次向后查找指定元素。
3、增删元素快:
增加元素:只需要修改连接下个元素的地址即可。
删除元素:只需要修改连接下个元素的地址即可。
红黑树
红黑树的约束:
1. 节点可以是红色的或者黑色的
2. 根节点是黑色的
3. 叶子节点(特指空节点)是黑色的
4. 每个红色节点的子节点都是黑色的
5. 任何一个节点到其每一个叶子节点的所有路径上黑色节点数相同
红黑树的特点:
速度特别快,趋近平衡树,查找叶子元素最少和最多次数不多于二倍
12.List
List接口特点:
1. 它是一个元素存取有序的集合。例如,存元素的顺序是11、22、33。那么集合中,元素的存储就是按照11、
22、33的顺序完成的)。
2. 它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)。
3. 集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素
List接扣中常用方法
public void add(int index, E element) : 将指定的元素,添加到该集合中的指定位置上。
public E get(int index) :返回集合中指定位置的元素。
public E remove(int index) : 移除列表中指定位置的元素, 返回的是被移除的元素。
public E set(int index, E element) :用指定元素替换集合中指定位置的元素,返回值的更新前的元素。
LinkedList常用方法
public void addFirst(E e) :将指定元素插入此列表的开头。
public void addLast(E e) :将指定元素添加到此列表的结尾。
public E getFirst() :返回此列表的第一个元素。
public E getLast() :返回此列表的最后一个元素。
public E removeFirst() :移除并返回此列表的第一个元素。
public E removeLast() :移除并返回此列表的最后一个元素。
public E pop() :从此列表所表示的堆栈处弹出一个元素。
public void push(E e) :将元素推入此列表所表示的堆栈。
public boolean isEmpty() :如果列表不包含元素,则返回true。
13.Set
hashset特点和list相反 但是linkedhashset是有序的
Hash集合去重复,自定义类型要重写equals和hashcode
哈希表=数组+链表/红黑树
可变参数:
注意:如果在方法书写时,这个方法拥有多参数,参数中包含可变参数,可变参数一定要写在参数列表的末尾位置
14.Collections 没有构造全是静态
常用方法
public static <T> boolean addAll(Collection<T> c, T... elements) :往集合中添加一些元素。
public static void shuffle(List<?> list) 打乱顺序 :打乱集合顺序。
public static <T> void sort(List<T> list) :将集合中元素按照默认规则排序。
public static <T> void sort(List<T> list,Comparator<? super T> ) :将集合中元素按照指定规则排
序。
copy(List<? super T> dest, List<? extends T> src) 将所有元素从一个列表复制到另一个列表
reverse(List<?> list) 反转指定列表中元素的顺序。
shuffle(List<?> list, Random rnd) 使用指定的随机源对指定列表进行置换。
Comparator和Comparable的区别
Comparable:自己(this)和别人(参数)比较,自己需要实现Comparable接口,重写比较的规则
compareTo方法
Comparator:相当于找一个第三方的裁判,比较两个
Comparator的排序规则:
o1-o2:升序
15.Map
Collection 中的集合称为单列集合,Map 中的集合称为双列集合。
特点
Map每个元素由键与值两部分组成
Map键不能重复,每个键对应一个值
键和值可以为null
需要注意的是,Map 中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。
HashMap:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
LinkedHashMap:HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
public V put(K key, V value) : 把指定的键与指定的值添加到Map集合中。
public V remove(Object key) : 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
public V get(Object key) 根据指定的键,在Map集合中获取对应的值。
public Set<K> keySet() : 获取Map集合中所有的键,存储到Set集合中。get(key)
public Set<Map.Entry<K,V>> entrySet() : 获取到Map集合中所有的键值对对象的集合(Set集合)。getkey() getvalues()
16.判断字符出现次数
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
//2:遍历字符串
for (int i = 0; i < line.length(); i++) {
char c = line.charAt(i);
//判断 该字符 是否在键集中
if (!map.containsKey(c)) {//说明这个字符没有出现过//那就是第一次
map.put(c, 1);
} else {//先获取之前的次数
Integer count = map.get(c);
//count++;//再次存入 更新
map.put(c, ++count);
}}System.out.println(map);
17.异常
异常继承体系为:异常的根类是 java.lang.Throwable,其下有两个子类:
java.lang.Error 与 java.util.Exception 。而Exception又分为编译时期异常:checked异常,与运行时期异常:runtime异常。
Throwable中的常用方法:
public void printStackTrace() :打印异常的详细信息。
包含了异常的类型,异常的原因,还包括异常出现的位置,在开发和调试阶段,都得使用printStackTrace。
public String getMessage() :获取发生异常的原因。
提示给用户的时候,就提示错误原因。
public String toString() :获取异常的类型和异常描述信息(不用)
异常处理 throw用在方法中自己抛异常
异常的处理方式有两种,分别是使用throws和try...catch...finally
throws用在方法的声明上后接异常类名,是把异常抛给调用者进行处理
try...catch...finally是捕获异常,自己处理,处理完毕后面的程序可以继续运行
a)try代码块中是可能出现异常的代码
b)catch代码块,是遇到异常,对异常进行处理的代码
c)finally代码块是无论是否发生异常,都必须执行的代码,用于释放资源.
如果finally有return语句,永远返回finally中的结果,避免该情况
异常类如何定义:
1. 自定义一个编译期异常: 自定义类 并继承于 java.lang.Exception 。
2. 自定义一个运行时期的异常类:自定义类 并继承于 java.lang.RuntimeException
18.多线程
并发:指两个或多个事件在同一个时间段内发生。
并行:指两个或多个事件在同一时刻发生(同时发生)
进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多
个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创
建、运行到消亡的过程。
线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程
中是可以有多个线程的,这个应用程序也可以称之为多线程程序。
简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 |
|