一、类型转换
short s = 1; s = s + 1; //false,因为1是int类型,会损失精度
short s = 1; s += 1; //true,因为+=有自带强转
二、逻辑运算符
^逻辑异或:相同为false,不同为true
例如:情侣关系:男男、男女、女男、女女
三、参数传递
基本类型:形参的改变对实参没有影响
引用类型:形参的改变直接影响实参
四、成员变量和局部变量
成员变量:在类中方法外
局部变量:在类中方法内
五、多态
同一个引用指向多个对象,表现各个不同对象的方法。
父 f = new 子1();
父 f = new 子2();
父 f = new 子3();
六、抽象类:abstract
抽象类有构造方法,但是不能实例化;
成员方法既可以是抽象的(强制要求子类实现抽象方法,被abstract修饰的抽象方法无方法体(没有大括号{})),也可以是非抽象的(子类继承用,提高代码复用性)。
作用:用于子类访问父类数据的初始化。
抽象类不能使用private/final/static关键词
七、局部内部类访问局部变量
局部内部类访问局部变量必须用final修饰局部变量,使局部变量为常量来访问。
classOuter {private int num = 10;public voidmethod() {//int num2 = 20;
final int num2 = 20;classInner {public voidshow() {
System.out.println(num);//从内部类中访问本地变量num2; 需要被声明为最终类型
System.out.println(num2);//20
}
}
Inner i= newInner();
i.show();
}
}
八、TreeSet排序
1.自然排序:(元素比较)
让元素所属的类实现自然排序接口 java.lang.Comparable,必须重写compareTo方法。
2.比较器排序:(集合比较)
让集合的构造方法接收一个比较器接口的子类对象 java.util.Comparator。
内部类:
TreeSet treeSet = new TreeSet(new Comparator()(public intcompare(T t1, T t2) {int num = t1.getName().length() -t2.getName().length();int num2 = num == 0 ?t1.getName().compareTo(t2.getName()) : num;int num3 = num2 == 0 ? t1.getAge() -t2.getAge() : num2;returnnum3;
}
));
九、Map遍历
A、根据键找值
//创建集合对象
Map map = new HashMap();//获取所有的键(键的集合)
Set set =map.keyset();//遍历键的集合
for(K key : set) {
V value=map.get(key);
syso(key+ "-" +value);
}
B、根据键值对对象找键和值
//创建集合对象
Map map = new HashMap();//获取所有键值对对象的集合
Set> set =map.entrySet();//遍历键值对对象的集合,得到每一个键值对对象
for(Map.Entryme : set) {
K key=me.getKey();
V value=me.getValue();
Syso(key+ "," +value);
}
十、contains()方法底层依赖的是equals()方法,所以判断对象包含另一对象,需先重写equals()方法。
十一、Arrays工具类:public static List asList(T... a):把数组转成集合
十二、new FileInputStream("")和 class.getClassLoader().getResourceAsStream("")
前者根目录为项目根目录或者绝对路径,后者根目录为src目录