java基础语法
一、HelloWorld:
1.package、import、class
2.访问修饰符权限:控制类中成员变量和方法的可见性。
public 当前类、同一个包、子孙类、其他包(在一个java源文件中只能有一个类被声明为public,当public修饰类的时,文件名就必须与类名相同,否则编译不能通过)
protect 当前类、同一个包、子孙类
private 当前类、同一个包
default 当前类
3.类名、包名命名方法
包名:公司域名倒着写,每个字母都要小写
类名:类名要以字母开头并大写,后面可以放$、_、数字、字母,一般都是见名知意
4.注释
1.//
2.
/**
*
*
**/
5.基本类型、基本类型工具类(除了基本类型都是引用类型)
byte-Byte:(-128-127)字节空间:1;默认值:(byte)0-null;
short-Short:(-215-215-1) 2默认值:(short)0-null;
int-Integer:(-231-231-1)4默认值:0-null;
long-Long:(-263-263-1)8默认值:0L-null;
float-Float:4 ;默认值:0.0f
double-Double:8;默认值:0.0d
char-Charater:2 ;默认值: \u0000
boolean-Boolean:1默认值:false
6.运算
1.+、-、、/、%、==、!=、!、&、|、&&、||、+=、-=、=、/=、&=
2.自增自减 a++:先赋值,在运算;++a:先运算,再赋值
7.判断;if-else、if-else if、for-each
8.循环:for循环、switch循环、while循环、do-while循环
break/continue
二、数组Array
1.数组一旦被创建,长度不可变;数组下标最大值=length-1;
2.数组的扩容与缩容方式:数组不可变,所以数组的扩缩容都是要新建一个数组
1.System.arrayCopy();
2.Arrays.copyOf()
三、Arrays数组工具类
1.Arrays.sort(数组):对数组进行排序
2.Arrays.toString(数组):将数组中的元素用逗号链接成一个字符串
3.Arrays.copyOf(原数组,新长度):复制原来的数组,放在一个新长度数组里(新长度大扩;反之缩,新数组将从头截取原数组)
扩展
1.算法:冒泡算法、合并算法、二分算法……….
2.数据结构
四、集合
-数组的缺点:
1.数组长度不可变
2.访问方式单一(下标)
3.插入/删除数据,操作繁琐
-集合的继承结构
一.父接口:Collection集合(单列元素存储集合)
*方法add(); remove();clear(); contains(); toArrays()等。
·List接口:有序可重复集合、
方法:set(); get();等
··ArrayList类:使用索引的随意访问,增删慢查询快速
··LinkedList类:增删方便查询慢
··Vector类:表示底层数组,线程安全
··其他
·Set接口:无序不可重复集合没有下标(所以没有get()方法)
··HashSet类:内部是由哈希表支持的,不保证set元素的迭代顺序
··TreeSet类:使用元素的自然顺序对元素进行排序,或者根据创建set时提供的Comparator进行排序
·Queue接口
··Deque接口
···栈 Stack:数据先进后出
push()
pop()
···队列 Queue:数据先进先出
offer()
peek()
poll()
··Deque接口:双端队列(Double Ended Queue)
·其他子接口
二.Collections:集合的工具类;提供很多API
1.Collections.sort(list);sort()会对集合元素进行自然排序(从小到大)
2. 该方法排序给定集合时对集合元素有一个要求,就是元素必须实现了Comparable接口,否则编译不通过。
3.Comparator接口要求必须实现compare方法,该方法是用来定义两个参数的大小关系。当返回值>0时:o1>o2。返回值概念与 Comparable接口对应方法一致。(可以自定义排序方法)
4.
三.父接口:Map集合(双列键值对存储集合)
*方法:
·HashMap类:
·TreeMap类:基于红黑树数据结构按key排序,默认升序排列
·HashTable类:存储无序的键值对,是按照哈希算法排序的,与HashMap最大区别就是线程安全。键/值不能为null。
·LinkedHashMap类:有序的Map集合实现类,相当于一个栈,先put进来的最后出来,先进后出
1.— LinkedList双向列表集合
a.效率:两端效率高
b.方法:
add(数据)
add(index,数据)
get(indext)
remove(index):删除指定位置数据,返回被删除的数据
remove(数据):找到第一个相等的数据删除:返回true/false-找到并删除了数据/没找到数据
size():数据的数量
2.—ArrayList对象数组集合
内部用数组封装数据
3.—HashMap键值对k-v
1.用键快速的定位查找数据
2.方法
put(key,value)放入键值对数据,放入重复的键用新的值覆盖旧的值
get(key)
remove(key)
size()
3.键:不重复,无序(放入重复的键用新的值覆盖旧的值)
4.内部存放数据的算法:
1.内部使用Entry[]数组存放数据,默认初始容量是16;
2.Key.hashCode()获取哈希值,用哈希值计算下标 i
3.创建Entry实例封装键值对,放入i位置:
1.空位置直接放入
2.有数据,依次用equals()比较是否相等(比较键值是否相等):
找到相等数据,覆盖值;
没有相等数据,用链表链接在一起。
3.链表负载率加载因子(阈值0.75)
新建容量翻倍的新数组
所有有数据重新哈希放入新数组
4.Jdk1.8
链表长度到8,转成红黑树
减少到6,转回链表
四、迭代器Iterator
1.迭代器可以用来遍历数组
2.List集合查询使用迭代器遍历更快一点
3.常用方法:hasNext();是否还有下一个元素
Next();返回下一个元素
Remove();删除当前元素
六、泛型
1.泛型是提前指定集合内要操作的数据的类型
2.自定义泛型
3.泛型语法支持多态