System类
java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有
public static long currentTimeMillis():返回以毫秒为单位的当前时间。
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将数组中指定的数据拷贝到另一个数组中。
参数:
src - 源数组。
srcPos - 源数组中的起始位置(起始索引)。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
包装类
通过类把基本数据类型包装起来进行使用
装箱:把基本类型的数据,包装到包装类中(基本类型的数据->包装类)
构造方法:
Integer(int value) 构造一个新分配的 Integer 对象,它表示指定的 int 值。
Integer(String s) 构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。
传递的字符串,必须是基本类型的字符串,否则会抛出异常 "100" 正确 "a" 抛异常
静态方法:
static Integer valueOf(int i) 返回一个表示指定的 int 值的 Integer 实例。
static Integer valueOf(String s) 返回保存指定的 String 的值的 Integer 对象。
拆箱:在包装类中取出基本类型的数据(包装类->基本类型的数据)
成员方法:
int intValue() 以 int 类型返回该 Integer 的值。
自动装箱与自动拆箱:基本类型的数据和包装类之间可以自动的相互转换
1.数组长度是固定的,集合长度可以改变。
2.Collection接口是所以单列集合的顶端,学习顶层,使用底层。
3.任意单列集合都可以用Collection接口的方法(多态调用)。
4.isEmpty是判断集合内容是否为空。
5.hasNext();判断,Next();取。
6.迭代器即是while循环遍历集合。
7.在使用迭代器过程中,修改集合长度就会报出并发修改异常。
8.集合不使用泛型,默认类型就是Object类型。泛型是什么类型就只能存储什么类型。
9.泛型通配符 ? 。
1.栈.先进后出(入口和出口在同一侧)。
2.队列.先进先出(入口和出口在集合两侧)。
3.数组.查询快增删慢(查询有索引,增删需要重新创建数组所以增删慢)。
4.链表:查询慢(每次查询需要从头开始)增删快(增删后对链表结构无影响)。
a.单向:元素无序
b.双向:元素有序
5.红黑树:查询速度快,查询叶子节点最大数到最小数不得超过2倍。
6.list集合:有序的集合,有索引,可以存储重复元素。
7LinkedList集合:底层是双向链表(查询慢增删快)。
8.HashSet集合:无序(无序并非随机)并且去掉重复元素。
9.哈希表:哈希表=数组+链表/红黑树(提高查询速度)。
10.hashCode():获取哈希值。
11.LinkedHashCode集合:有序不能重复(哈希表+链表)增加的链表用来记录顺序。
12.可变参数:底层是数组运用在方法列表里面。
13.Collections.sort方法:排序(默认为升序)。
1.Map集合:双列集合(一个元素包含两个值,K是单一的,V可以重复,k-v是一一对应的)。
k与v可以相同。
2.HashMap集合:底层是哈希表,查询特别快,存取元素顺序不一定一样。
LinkedHashMap集合:底层是哈希表+链表,查询快,存取元素顺序相同。
3.Map常用方法: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集合中。
public V containsKey:查询元素(用K查询)包含返回true不包含返回false。
4.Map遍历:方法1:KeySet()方法,通过键找值的逐一获取。
方法2:entrySet()方法。通过entry(键值对)获取。
5.HashMap:储存自定义类型键值(当k用自定义类型时必须重写去重方法,v用自定义类型时可以不重写去重方法)。
6.LinkedHashMap集合:底层是哈希表+链表,存取是有序的。
7.Debug程序调试:让代码逐一实现,查找代码bug。
1.异常:在程序执行时,出现非正常情况,导致JVM中断。
2.Exception(异常):小毛病处理后可以继续执行。
Error(错误):必须修改源代码。
3.运行期异常处理分析流程:①先有JVM检测到异常(创建一个异常类,并抛给main方法)
②main方法接受到异常(没有处理异常逻辑再把异常对象抛给给虚拟机)
③虚拟机把异常(内容,原因,位置)打印出来并中断程序运行
4.编译期异常:需要写抛异常代码或者自己处理异常(try...catch)
5.thorw关键字:写在方法内部,自己定义异常信息并抛出异常。(如果异常抛到JVM中,程序中断不执行)
6.thorws关键字:(编译异常使用)异常处理的第一种方式,交给别人处理,最终交给JVM中断处理
6.try...catch:(编译异常使用)异常处理的第二种方式,自己处理,处理完后会继续执行程序后续代码
7.finally代码块:写在try...catch后面(不能单独使用),里面的代码无论如何都会执行。
8父类没抛异常(子类也不能抛异常只能thows)。
9.执行主方法的线程叫主线程。
1.多个线程属于竞争关系,cpu执行多个线程,高速切换,随机执行
2.多线程之间互不影响,每个线程都有自己的栈空间
3.Thread类的两个静态方法,sleep指定暂停秒数,currentThread返回当前线程名称
4.多线程访问了共享数据,可能会出现安全问题
5.线程安全问题是不能产生的,当一个线程执行时,其他线程需要等待
6.同步代码块:可以解决线程安全问题
7.同步技术:保证多个线程只能有一个线程进入共享代码块。
8.同步方法:保证多个线程只能有一个线程进入共享代码块。
9.lock锁:可以解决线程安全问题,将共享代码块锁起来,保证多个线程只能有一个线程进入共享代码块。