1. 程式人生 > >Java基礎總結篇--JavaSE你必須要知道的基礎

Java基礎總結篇--JavaSE你必須要知道的基礎

一、集合:就像是一種容器。用於儲存、獲取、操作物件的容器。 1. 陣列的弊端 ①陣列的長度不可變     ②陣列沒有提供可以檢視有效元素個數的方法 2. 集合的特點 ①集合的長度是可變的 ②集合可以儲存任意型別的物件 ③集合只能儲存物件 3. 集合框架 java.util.Collection : 集合層次的根介面     |--- java.util.List: 有序的,可以重複的。         |--- ArrayList: 採用陣列結構儲存元素。 查詢操作多時選擇         |--- LinkedList: 採用連結串列結構儲存元素。 增刪操作多時選擇         |--- Vector:     |--- java.util.Set: 無序的,不允許重複。         |--- HashSet : 是 Set 介面的典型實現類。             判斷元素是否存在的依據是:先比較 hashCode 值,若 hashCode 存在,再通過 equals() 比較內容                                      若 hashCode 值不存在,則直接儲存             注意:重寫 hashCode 和 equals 二者需要保持一致!             |--- LinkedHashSet: 相較於 HashSet 多了連結串列維護元素的順序。遍歷效率高於 HashSet , 增刪效率低於 HashSet         |--- TreeSet : 擁有自己排序方式             |-- 自然排序(Comparable):                 ①需要新增 TreeSet 集合中物件的類實現  Comparable 介面                 ②實現 compareTo(Object o) 方法             |-- 定製排序(Comparator)                 ①建立一個類實現 Comparator 介面                 ②實現 compare(Object o1, Object o2) 方法                 ③將該實現類的例項作為引數傳遞給 TreeSet 的構造器        4. 集合的遍歷 ① 增強 for 迴圈 for(被遍歷集合中元素的資料型別  變數名 :  被遍歷的集合){ } ArrayList al = new ArrayList(); al.add("AA"); al.add("BB"); for(Object obj : al){     System.out.println(obj); } ② 使用 Iterator 迭代器 //1)獲取當前集合的迭代器 Iterator it = al.iterator(); while(it.hasNext()){     Object obj = it.next();     System.out.println(obj); } /*錯誤的做法:通常一個 hasNext() 配合一個 next() 使用 Iterator it = al.iterator(); while(it.hasNext()){     Object obj = it.next();     System.out.println(it.next()); }*/ ③ ListIterator : 列表迭代器,是List特有的迭代器(瞭解) ListIterator li = al.listIterator(); while(li.hasNext()){     Object obj = li.next();     if(obj.equals("BB")){         li.set("BBBBBBBBBBb");     } } 二、Map系列集合 java.util.Map : 用於儲存成對物件的集合。具有 key(鍵)-value(值)對對映關係的集合。一個 key 對應著一個 value。 key不允許重複的。     |--- HashMap:是 Map介面的典型實現類。         |--- LinkedHashMap: 相較於 HashMap 多了連結串列維護元素的順序     |--- Hashtable: 是執行緒安全的,因此效率低         |--- Properties : 用於操作屬性檔案     |--- TreeMap : 根據 key 擁有自己的排序方式         |-- 自然排序(Comparable):         |-- 定製排序(Comparator):     //使用 Properties 操作屬性檔案     @Test     public void test1() throws FileNotFoundException, IOException{         //1. 建立 Properties 物件         Properties props = new Properties();         //2. 通過 load() 方法載入屬性檔案         props.load(new FileInputStream("hello.properties"));         //3. 通過  getProperty() 方法根據key獲取對應的value         String userName = props.getProperty("username");         String password = props.getProperty("password");         System.out.println(userName);         System.out.println(password);     } 1. Map的常用方法: 新增、刪除操作: Object put(Object key,Object value) Object remove(Object key) void putAll(Map t) void clear() 元素查詢的操作: Object get(Object key) boolean containsKey(Object key) boolean containsValue(Object value) int size() boolean isEmpty() boolean equals(Object obj) 2. Map 的遍歷: Map map = new HashMap(); map.put("AA", 123); map.put("BB", 456); keySet(); //遍歷Map的方式一: 獲取 Map 中所有的 key    Set set = map.keySet(); values(); //遍歷Map的方式二:獲取 Map中所有的 value Collection coll = map.values(); //遍歷Map的方式三: 獲取Map中所有的 Entry (是Map 的一個內部類,一個Entry對應著Map中的一個key和一個value) Set entrySet = map.entrySet(); for(Object obj : entrySet){     Entry entry = (Entry)obj;     Object key = entry.getKey();     Object value = entry.getValue(); } Iterator it = entrySet.iterator(); while(it.hasNext()){     Entry entry = (Entry)it.next();     Object key = entry.getKey();     Object value = entry.getValue(); } 三、 為什麼使用泛型:若集合中不使用泛型,意味著集合中可以新增任意型別的物件。若需要具體到某一個型別時,需要強制型別轉換               可能引發 ClassCastException 泛型: 在 Java 中以 "<>" 的形式呈現,<> 中寫引用資料型別        用於限制集合中存放元素的型別 1. 在集合中應用泛型 2. 自定義泛型類、介面、方法 class DAO<T>{ // T : Type   E:Element   K:Key   V:Value     private List<T> list = new ArrayList<T>();     public void add(T t){         list.add(t);        }     public T get(int id){         return list.get(id);     }     //自定義泛型方法     public <E> E[] srot(E[] e){     } } 3. 萬用字元    ?     雖然 Person 是  Student 的父類,但是 List<Person> 就不是  List<Student> 的父類     //需求:     //public void show(List<Student> list){}     //public void show1(List<Man> list){}        public void show(List<? extends Person> list){}     List<?> : 可以接收任意帶泛型型別的集合     List<? extends Person>  : 可以接收 Person 本類型別及 Person子類型別帶泛型型別的集合     List<? super Person> :  可以接收 Person 本類型別及 Person父類型別帶泛型型別的集合                                   

相關推薦

Java基礎總結--JavaSE必須知道基礎

一、集合:就像是一種容器。用於儲存、獲取、操作物件的容器。 1. 陣列的弊端 ①陣列的長度不可變     ②陣列沒有提供可以檢視有效元素個數的方法 2. 集合的特點 ①集合的長度是可變的 ②集合可以儲存任意型別的物件 ③集合只能儲存物件 3. 集合框架 java.util.Co

Android基礎之Android快速入門--必須知道基礎

1. Activity的理解: 2. Intent的理解 關於IntentFilter 3. Intent的使用:(建立、攜帶資料、讀取資料) 1.建立:      顯式意圖: Intent intent = new Inten

Spring基礎--Spring(必須懂得基礎)

1_Spring概述 作者: 風離紫竹[email protected] 2_IOC 作者: 風離紫竹[email protected] 1.IOC概述 ①含義:Iversion of Control反轉控制——反轉資源獲取的方向 ②傳統的

Struts2基礎--Struts2(必須懂得基礎)

1.輸入驗證 ①概念:針對使用者在表單中輸入的資料進行檢查 ②分類 [1]客戶端驗證:JavaScript [2]伺服器端驗證:Servlet/Action (1)宣告式驗證:通過在配置檔案中指定驗證規則來檢查使用者輸入資料 (2)程式設計式驗證:通過編寫程式碼來檢查使用者輸入資料 2.

Java程式設計師面試必須知道的10個JavaScript的技術點

       很多科技公司在面試中會考察你對 JS 的理解。一個知識豐富的求職者可以很快地回答這些問題。以下是小編整理的 Web 開發面試中經常被問到的概念,理解這些概念的前提是你已經掌握了基本知識,比如迴圈,函式和回撥函式。   1.數值型別 vs. 引用型別 —瞭解如

想做OTT-TV/IPTV網絡IP電視直播運營商-必須知道的事

OTT-TV IPTV 網絡IP電視、直播 廣播電教系統需求: – 整套系統穩定、可靠; – 支持主從設備堆疊部署,單臺設備最大支持127臺從機; – 支持RTSP/RTMP/HLS等標準的流媒體格式; – 可基於標

Python 必須知道的 Flask

Flask介紹 Flask 是一個輕量級的 web 開發框架, 使用 Python 開發, 上手簡單。 安裝 Flask pip install Flask 第一個 Flask 程式 1、編寫 app.py 檔案內容如下: #encoding: utf-8 # 匯入Flas

web前端之響應式佈局,必須知道

一、前言 響應式Web設計可以讓一個網站同時適配多種裝置和多個螢幕,可以讓網站的佈局和功能隨使用者的使用環境(螢幕大小、輸入方式、裝置/瀏覽器能力)而變化。本文主要介紹一些響應式佈局容易忽略但又很重要的知識點。 二、視口 移動前端中常說的 viewport (視口)就是瀏覽器中用於呈現網

關於Http協議,必須知道

轉自:https://segmentfault.com/a/1190000016751071      引言 HTTP協議是Hyper Text Transfer Protocol(超文字傳輸協議)的縮寫,是用於從全球資訊網伺服器傳輸超文字到本地瀏覽器的傳送協議。HT

學習web前端前必須知道這些,讓少走很多彎路

IT行業是所有行業中能力要求最高的,相應的薪水待遇也是讓人羨慕。想要勝任一份高薪的工作並不那麼容易,新手甚至0基礎的小白想要踏入這一行業需要了解些什麼呢?   在之前的幾年IT行業一度超越了掙錢最多的金融行業,因為如果說在中國所有行業中,給人打工的話,做軟體開發這塊應該是工資提升的最顯著最快的,

關於ES模組必須知道的一些禁忌(一)

背景 ES Module是JavaScript在ES2015版本開始提供的語言標準級別的模組化方案,在此之前JavaScript一直沒有語言級別的模組化體系。沒有模組化的支援,使用JavaScript開發大型應用將舉步維艱,所以經過大量的實踐,社群制定了一些模組載入方案,最主要的有運行於瀏覽器的AMD方案和

小白怎麼成為全職自媒體人?必須知道的幾點!

之前看有大部分學員都是用下班時間或者是課餘時間來操作和運營自媒體,也有學員問到是不是放棄工作來全職做自媒體就能賺到更多錢呢?(在校學生不建議放棄課業來全身心投入。) 首先我們得搞明白一個順序,就是那些全職的自媒體人究竟是先放棄工作再來鑽研操作自媒體的,還是已經鑽

關於響應式布局,必須知道

不可 ride 元素 移動端 打印 告訴 自己的 適配 com 轉載自奇舞周刊 前言 響應式Web設計可以讓一個網站同時適配多種設備和多個屏幕,可以讓網站的布局和功能隨用戶的使用環境(屏幕大小、輸入方式、設備/瀏覽器能力)而變化。本文主要介紹一些響應式布局容易忽略但又很

關於響應式佈局,必須知道

轉載自奇舞週刊 前言 響應式Web設計可以讓一個網站同時適配多種裝置和多個螢幕,可以讓網站的佈局和功能隨使用者的使用環境(螢幕大小、輸入方式、裝置/瀏覽器能力)而變化。本文主要介紹一些響應式佈局容易忽略但又很重要的知識點。 視口 移動前端中常說的 viewport (視口)就是瀏覽器中用於呈現網頁的區

用好React,必須知道的事情

容器性元件(container component)和展示性元件(presentational component) 使用React編寫元件時,我們需要有意識地將元件劃分為容器性元件(container component)和展示性元件(presentatio

響應式佈局,必須知道

一、前言 響應式Web設計可以讓一個網站同時適配多種裝置和多個螢幕,可以讓網站的佈局和功能隨使用者的使用環境(螢幕大小、輸入方式、裝置/瀏覽器能力)而變化。本文主要介紹一些響應式佈局容易忽略但又很重要的知識點。 二、視口 移動前端中常說的 viewport (視

必須知道的10款APP開發框架

  對於大部分Web開發人員,HTML、CSS和 Java是他們最熟練的開發技能。然而,開發一個原生的移動App,對他們來說卻是完全陌生的領域。因為開發Android,iOS 或 Windows Phone上的原生App,需要掌握完全不同的開發語言( Android

必須知道的移動端開發知識

移動開發不同與PC端開發,可能會經歷各種意想不到的問題,尤其是移動端應用剛起步的幾年;隨著移動網際網路的快速發展,有些問題已經得到了很好的支援,如1畫素邊界的問題。當然,要更好地解決這些移動端的問題,就需有移動端領域相關的知識,下面就來說說。 dpr裝置畫素比 首先說一下,這個dpr不僅僅是移動端才有的,pc

執行緒池續:必須知道的執行緒池submit()實現原理之FutureTask!

![FutureTask思維導圖.png](https://img2020.cnblogs.com/other/799093/202006/799093-20200601101441232-1248184493.png) ### 前言 上一篇內容寫了`Java`中執行緒池的實現原理及原始碼分析,說好的是實

必須知道的babel二三事

## 1. 什麼是babel 本文基於的babel版本是7.11.6,本文所有示例[github](https://github.com/Rynxiao/babel-study) > Babel is a toolchain that is mainly used to convert ECMAScrip