Java隨心記

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());

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章