是用来给类,方法,变量起名字的
不能以数字开头
区分大小写
不能和关键字同名
驼峰命名规则
长度无限制
八大基本数据类型
类型 | 字节数 | 范围 | 后缀 |
---|---|---|---|
byte | 1 | -128 到127 | |
short | 2 | ±3万 | |
int | 4 | ±21亿 | |
long | 8 | l/L | |
float | 4 | f/F | |
double | 8 | d/D | |
boolean | |||
char | 2 |
定义:是存储单一数据的集合。
Collection:是无序的,可重复的集合。
List:是有序的,可重复的集合。
Set:是无序的,唯一的集合
添加元素:add(object)添加一个对象,addAll(coll)添加一个集合。
删除元素:remove(object)移除一个元素,removeAll(Collection)移除交集,clear()清除所有,
retainAll(coll)保留交集。
查询:isEmpty()是否为空,size集合长度,contains(object)是否包含元素,containsAll是否包含集合。
循环输出元素:
方法1:foreach:for(Object obj:coll){...}
方法2:迭代器: Interator i = coll.Interator();
添加元素:add(object)添加一个对象,addAll(coll)添加一个集合。
删除元素:remove(object)移除一个元素,removeAll(Collection)移除交集,clear()清除所有,
retainAll(coll)保留交集。
查询:isEmpty()是否为空,size集合长度,contains(object)是否包含元素,containsAll是否包含集合。
indexOf(Object)对象的索引,lastIndexOf(Object)最后一个数据的索引。
循环输出元素:
方法1:for语句
方法2:foreach:for(Object obj:coll){...}
方法3:迭代器: Interator i = coll.Interator();
l.remove(1);
l.remove(Integer.valueOf(1));
List l1 = new ArrayList();
l1.add("deo");
l1.add("diro");
List l2 = new ArrayList();
l2.add("yhy");
l.retainAll(l1);
l1.remove(1);
l.add(l1);
l.add(0, 7);
l.addAll(0, l1);
l.addAll(l1);
System.out.println("索引0"+l.get(0));
System.out.println("索引4"+l.get(3));
l.removeAll(l1);
//l是否包含l2
boolean isC2 = l.containsAll(l2);
System.out.println("l contains l2 "+isC2+" l "+l+" l2 "+l2);
System.out.println("for循环");
for(int i=0;i<l.size();i++) {
System.out.println(l.get(i));
}
System.out.println("foreach循环");
for(Object obj:l) {
System.out.println(obj);
}
System.out.println("迭代器输出");
for(Iterator i = l.iterator();i.hasNext();) {
System.out.println(i.next());
}
ArrayList和List的方法基本相同,但是ArrayList集合中有subList(fromIndex,toIndex),截取一个一串元素,返回集合。
优点:查询元素快
缺点:添加和删除元素慢
相对于ArrayList来说,LinkedList多了一些头和尾的操作,offer()插入元素,offerFirst()插入头元素,offerLast()插入尾元素,peek查看,poll查看并删除头部元素,getFirst()查看头元素,getLast()查看尾元素。
优点:添加和删除元素快
缺点:查询元素慢。
大多数方法和Collection接口相同
迭代方法:foreach、迭代器。
在插入的对象中需要重写hashCode方法和equals()方法。
HashSet数组插入规则:
1.首先计算hash值,通过重写hashCode()方法,来判断添加的位置;
2.如果该位置没有元素则直接插入元素,如果该位置有元素,则通过equals()方法判断是否有相等的元素,如 果有相等的元素,那么该元素插入不成功,如果没有插入成功。
反射是运行期的行为
1.获取类对象的属性,get.Field(String),getFields(),getDeclaredFields();
2.获取类对象的构造方法,get.Constructor(构造参数Class类 型),get.Constructor(),get.Constrctors(),get.DeclaredConstructors();
3.获取类对象的方法,getMethods(),getDeclaredMethods();
注意:导包的时候要注意 Field,Constructor,Method都要导入java.lang.reflect。
Class clu = Class.forName("com.mage.reflect.User");
Field f = clu.getField("name");
System.out.println("Field "+f);
Field f1 = clu.getDeclaredField("gender");
System.out.println("Field "+f1);
Field[] fs = clu.getFields();
for(Field fss:fs) {
System.out.println("Field "+fss);
}
Constructor c = clu.getConstructor(String.class,Integer.TYPE,Integer.TYPE);
System.out.println("Constructor "+c);
Constructor[] c2 = clu.getConstructors();
for(Constructor c1:c2) {
System.out.println("Constructor[] "+c1);
}
//获取指定的方法fun
Method m = clu.getMethod("fun",Integer.TYPE, String.class);