1,数组,ArrayList, HashSet, HashMap
数组:有序,长度一定不可变
ArrayList: 有序的,但数组有限定的长度,list功能更强大,长度可变。
HashSet:无序,长度可变,装数据按照key-value规则,不重复,配合Iterator使用。
Iterator it =set.iterator();
while(it.hasNext()){
sysout(it.next());
}
HashMap:无序,长度可变,装数据按照key-value规则,key不重复
方法1:先获取所有key,然后根据key去map中取value
Set<String> keySet = map.keySet();
for(String key:keySet){
Integer value = map.get(key);
System.out.println(key + "," +value)
}
方法2:先获取所有Entry<String,Integer>
Set<Entry<String,Integer>> entrySet = map.entrySet();
for(Entry<String,Integer> ent:entrySet){
sysout(ent.getKey() + "," + ent.getValue());
}
2,泛型
泛型就是用来代表一个类型名的参数,可以用于类,也可用于方法,如 public class SortUtil<T>{......},在使用时为SortUtil<String> sort = new SortUtil<>();
3,文件IO
创建文件夹:File file = new File("d:/aaa/bbb/ccc"); file.mkdirs(); 判断是否为文件夹: file.isDirectory();
访问文件:File file = new File("d:/aaa/bbb/ccc/d.jpg"); 判断是否为文件: file.isFile();
创建文件:file.createNewFile();
文件输入流:FileInputStream fis.read();//读一个字节,并将这个字节转成整数返回,文件末尾返回-1;
读取文本文件的封装工具:BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("d:/aaa.txt"),"UTF-8"));
String line = br.readLine();//读一行,如果文件读完后还读,就返回null
4,抽象类
抽象类一般用来做父类,用abstract修饰符修饰,表示是抽象类,抽象类中可以有抽象方法(只有方法定义,没有方法体),子类必须继承抽象方法。
public abstract class AbstractPerson {
public String name;
public int age;
//abstract 声明这个方法是一个抽象方法
public abstract void say();
public void eat() {
System.out.println("正在吃饭......");
}
}
5,反射
主要用来构造一个类的对象,可以根据一个“类全名字符串”,获得代表这个类的class对象,然后根据这个class对象构造出这个类的真正实例对象
String classname = "com.doit.pojo.Person";
Class<?> forName = Class.forName(classname);//forName代表Person.java这个类
Person o = (Person)forName.newInstance();//根据类全名构造类的实例,o代表Person的一个对象
//从forName这个class模板中获取到指定的方法
Method method = forName.getMethod("say");//say方法不需要传什么参数
Method method2 = forName.getMethod("eat",String.class,)//String.class和Class.forName(“java.lang.String”)一样,eat方法需要传一个String类型的参数
//将method在对象上执行
method.invoke(o);
method2.invoke(o,"饺子");
6,continue·和break的区别
for循环中,continue是跳出单次循环,但是会继续执行剩下的循环,break是跳出整个for循环。
7,匿名内部类的使用
new Person(){...};//表示一个匿名内部类的类体 多态:用父类的变量来引用
也可以对接口使用匿名内部类,如常常使用的ICallBack.
8,动态代理
//构造一个LoginService接口的动态代理对象
Proxy.newProxyInstance(LoginService.class.getClassLoader,new Class<?>[LoginService.class]{},new InvocationHandler());