java框架概念_java概念(2)

java概念(2)

重載和重寫

重載:同一個類中,方法名相同,參數不同

重寫:父子類中,子類重新定義父類的方法

多態

? 多態:同一種行為,不同的對象有不同的表現形式。

? 重載 編譯時根據參數決定調用的方法,即編譯時的多態性。

? 重寫 運行時根據對象類型調用子類方法,即運行時的多態性。

優點:子類可以重寫,提高了重用性

接口和抽象類的區別

抽象類

使用abstract修飾;

不能使用new來實例化對象;

抽象類不一定包含抽象方法,可以有具體的方法;

接口

使用interface修飾;

接口不能被實例化;

一個類只能繼承一個類,但可以實現多個接口;

接口中方法均為抽象方法;

接口中不能包含實例域或靜態方法。

注意:抽象類主要做父類,提供公共的屬性和方法,便與重用。

接口提供一種規范,目的是降低耦合,比抽象類 抽象程度更高。

序列化 ?

序列化: 把對象轉換為字節序列 保存到流 。

實現方式:

(1) 將 被 序 列 化 的 類 實 現Serializable 接口 進行標識。

class Student implements Serializable{}

(2)使用流進行讀/寫

ObjectOutputStream objectStream=new ObjectOutputStream(

new FileOutputStream(new File(“d:\student.txt”));

objectStream.writeObject(objectStream);

objectStream.close();

(3) 反序列化: 將字節序列恢復為對象 。

ObjectInputStream objectStream=new ObjectInputStream(

? new FileInputStream(new File(“d:\student.txt”)));

? Studentstudent=(Student)objectStream.readObject();

5.Java中集合框架

1da1c264882af4284093abe86709fd7c.png

ff20ae73d7a218850cb440e40226f2bd.png

要點:

Java集合類由兩個接口派生:Collection和Map

Collection分兩大部分:List和Set

List,Queue是Java提供的隊列實現

Map是映射接口,每個元素都是一個key-value鍵值對

Set、List、Map 集合,最常用 HashSet、ArrayList、HashMap

List、Map、Set 區別

List:有序、可重復 集合,集合中每個元素都有 對應順序索引。

? List 默認按元素添加順序 設置元素的索引,可以通過索引來訪問指定位置元素。

? List接口集合:ArrayList、LinkedList、Vector、Stack。

Set接口不允許重復

? 常用實現類有HashSet、LinkedHashSet和TreeSet。

Map接口采用鍵值對Map的存儲方式,保存具有映射關系的數據,

? key值不允許重復,可以為null。如果已經有重復的key,則新的value會覆蓋該key原來對應的value。

? 常用實現類有HashMap、LinkedHashMap、TreeMap等。

7. HashMap 和 HashTable 有什么區別?

要點:

HashMap與Hashtable是Map接口的兩個典型實現。都是采用了hash表數據結構來實現,可以快速定位元素。存儲時,根據key的哈希值決定元素存放的位置。

HashMap繼承自AbstractMap類。實現了Map接口。

Hashtable繼承自Dictionary類,Dictionary類是一個已經被廢棄的類。父類已經不推薦使用,因此它的子類Hashtable也很少用了。

Hashtable是JDK1.0引入的,是線程安全的,適用于多線程環境

HashMap是JDK1.2引入的,非線程安全的,適用于單線程環境。不保證存取的順序性的,也就是說遍歷HashMap的時候,得到的元素的順序與添加元素的順序是不同的。

HashMap是允許key和value為null值的,只能有一個key為null。它用containsValue和containsKey方法判斷是否包含對應鍵值對;

HashTable鍵值對都不能為空,否則包空指針異常。

8 .Java 中 ArrayList 和 LinkedList 以及Vector的區別?

要點:

ArrayList是一個動態數組Object[],是List類的典型實現。它允許任何符合規則的元素插入甚至包括null。每一個ArrayList都有一個初始容量(10),該容量代表了數組的大小。隨著容器中的元素不斷增加,容器的大小也會隨著增加。在每次向容器中增加元素的同時都會進行容量檢查,當快溢出時,就會進行擴容操作。所以如果我們明確所插入元素的多少,最好指定一個初始容量值,避免過多的進行擴容操作而浪費時間、效率。

ArrayList擅長于隨機訪問。同時ArrayList是非同步的。

LinkedList是List接口的另一個實現,除了可以根據索引訪問集合元素外,LinkedList還實現了Deque接口,可以當作雙端隊列來使用,也就是說,既可以當作“棧”使用,又可以當作隊列使用。

LinkedList的實現機制與ArrayList的實現機制完全不同,ArrayLiat內部以數組的形式保存集合的元素,所以隨機訪問集合元素有較好的性能;LinkedList內部以鏈表的形式保存集合中的元素,所以隨機訪問集合中的元素性能較差,但在插入刪除元素時有較好的性能。

Vector與ArrayList相似,但是Vector是線程同步的。所以說Vector是線程安全的動態數組。它的操作與ArrayList幾乎一樣。

9.HashSet是如何保證數據不可重復的?

要點:

HashSet的底層其實就是HashMap,只是HashSet是實現了Set接口并且把數據作為Key值,而value值一直使用一個相同的虛值來保存.由于HashMap的Key值本身就不允許重復,并且在HashMap中如果Key/value相同時,會用新的Value覆蓋掉舊的Value,然后返回舊的Value,內部執行終會返回一個false,導致插入失敗,這樣就保證了數據的不可重復性.

10.Collection和Collections區別

要點:

? Collection是集合的頂層結構,提供了集合的公共操作的規范

Collections是一個靜態的工具類,提供了集合常見的操作實現,比如排序,搜索,反序等,簡化開發中常見的功能。

void reverse(List list)//反轉

void shuffle(List list)//隨機排序

void sort(List list)//按自然排序的升序排序

void sort(List list, Comparator c)//定制排序

void swap(List list, int i , int j)//交換兩個索引位置的元素

void rotate(List list, int distance)//旋轉。當distance為正數時,將list后distance個元素整體移到前面。當distance為負數時,將 list的前distance個元素整體移到后面

int binarySearch(List list, Object key)//對List進行二分查找

int max(Collection coll)//根據元素的自然順序,返回最大的元素。

int max(Collection coll, Comparator c)//根據定制排序,返回最大元素,

void fill(List list, Object obj)//用指定的元素代替指定list中的所有元素。

int frequency(Collection c, Object o)//統計元素出現次數

int indexOfSubList(List list, List target)

//統計target在list中第一次出現的索引

boolean replaceAll(List list, Object oldVal, Object newVal)

元素。

int frequency(Collection c, Object o)//統計元素出現次數

int indexOfSubList(List list, List target)

//統計target在list中第一次出現的索引

boolean replaceAll(List list, Object oldVal, Object newVal)

//用新元素替換舊元素

標簽:java,HashMap,List,ArrayList,元素,list,接口,概念

來源: https://blog.csdn.net/weixin_48407105/article/details/113801842

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457234.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457234.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457234.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CentOS(八)--crontab命令的使用方法

crontab命令常見于Unix和Linux的操作系統之中,用于設置周期性被執行的指令。該命令從標準輸入設備讀取指令,并將其存放于"crontab"文件中,以供之后讀取和執行。 在Linux系統中,Linux任務調度的工作主要分為以下兩類&…

有健忘癥嗎?

今天興高采烈,早上空氣不錯, 但是騎自行車的我,還是得戴一個面罩。 半個小時后買了早餐, 一份炒粉、一豆漿,今天早上豆漿沒有掉地上, 但是~~~~~~~~~~~~~~shit~~!~!~,居然忘記帶要換的衣服了, …

下載java后綴的文件閃退_關于jarfile 打開閃退問題

后面才發現,原來是因為我把文件拖入了新建的文件夾,改變了路徑,而且我的java環境沒有配置好是全局變量,所以新建文件夾之后,就會出現找不到了路徑,閃退的問題,,,還有就是…

心理學資源整理

http://blog.sina.com.cn/s/articlelist_1227187337_0_1.html 功夫 轉載2016-06-07 15:53:55中華大地的武學,奧妙精深。但從大的方面來說,可分為內外軟硬,有形無形的區別。注重于外,修煉筋骨皮肉的是有形的功夫;注重于…

[已解決]Vistual Stdio 2015 installer Bootstrapper Packages 路徑

VS2015 installer 的預裝包的地址變更成 C:\Program Files (x86)\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Packages 參看文檔:https://msdn.microsoft.com/en-us/library/ms165429(vvs.140).aspx 之前的版本是在 C:\Program Files (x86)\Microsoft SDKs\Win…

java怎樣寫入五個人的成績_用java輸入5個學員姓名和分數,顯示分數最高的學員姓名和分數?...

展開全部import java.util.Scanner;public class Student {private String stuname "";private float stuscore 0;public String getStuname() {e69da5e6ba9062616964757a686964616f31333335316633return stuname;}public void setStuname(String stuname) {this.s…

eBay宣布發布全新的購買和銷售APIs

eBay最近宣布發布兩款全新的購買和銷售APIs。這些APIs旨在促進eBay產品在第三方應用程序中的更好集成。eBay于10月19日在他們的博客上發表了幾篇文章,不僅詳細介紹了這些全新的購買和銷售APIs提供的功能,而且還詳細地總結了他們公司從SOAP(簡…

iOS 10 升級后無法真機測試 Could not find Developer Disk Image

---2016年9月20日更新 iOS 升級到10之后,你會發現無法進行真機測試了。這種情況我在iOS 8.4 、9.3更新的時候也遇到過。原因是Xcode 的DeviceSupport里面缺少了iOS 10的SDK。所以你可以選擇將Xcode更新到最新版本就可以了&#xf…

java虛擬機參數優化_JAVA虛擬機JVM參數優化(2):垃圾收集算法選擇

JAVA虛擬機JVM優化重要性,昨天JAVA虛擬機JVM參數優化(1)文章中已經描述,今天我們來討論JAVA虛擬機在不同性能要求下如何選擇三種垃圾收集算法。JVM內部結構如下圖所示:串行收集用于單個線程執行垃圾收集的情況,在這種情況下相對它…

Dubbo與Zookeeper、SpringMVC整合和使用(負載均衡、容錯)

2019獨角獸企業重金招聘Python工程師標準>>> 互聯網的發展,網站應用的規模不斷擴大,常規的垂直應用架構已無法應對,分布式服務架構以及流動計算架構勢在必行,Dubbo是一個分布式服務框架,在這種情況下誕生的…

java clicked_關于java:JComponents在調用mouseClicked()之后消失

我正在用Swing編寫Java GUI程序。該界面如下所示:當用戶單擊右側的圖片之一時,我希望它的一個小的預覽顯示在左上角的橙色區域中。我通過SwingWorker線程從計算機上的目錄中提取所有圖像文件。在SwingWorker的done()方法中,我向每個對象添加了…

vim簡單命令教程-firstblood

你想以最快的速度學習人類史上最好的文本編輯器VIM嗎?你先得懂得如何在VIM幸存下來,然后一點一點地學習各種戲法。 Vim the Six Billion Dollar editor Better, Stronger, Faster. 學習 vim 并且其會成為你最后一個使用的文本編輯器。沒有比這個更好的文…

第三課、Qt的誕生和本質------------------狄泰軟件學院

一、GUI用戶界面元素 (1)、GUI應用程序是由固定的窗口元素所構成 (2)、操作系統提供了創建用戶界面元素所需要的函數 (3)、各自功能不同的函數依次調用,從而創建出界面元素 (4&#…

java mapstring_ object 遍歷_ListMapString,Object使用Java代碼遍歷以獲取String,Object的值...

List>的結果集怎么使用Java代碼遍歷以獲取String,Object的值?package excel;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class List1{public static void main(String[] args){Map map…

Linux tar命令高級用法——備份數據

Linux tar命令高級用法——備份數據 2015-12-31 Linux學習Linux上有功能強大的tar命令,tar最初是為了制作磁帶備份(tape archive)而設計的,它的作用是把文件和目錄備份到磁帶中,然后從磁帶中提取或恢復文件。現在我們可…

iOS uiviewcontroller 添加另外一個controller的View

需要 添加 [self addChildViewController:vc]; [_mainScrollView addSubview:vc.view];轉載于:https://www.cnblogs.com/foolish-guo/p/6385288.html

mysql 即學a又學b_MySQL學習第一天

一、 數據庫:*學習重點:創建數據庫/向表添加記錄/查詢記錄數據庫概念:文件系統(存儲和管理)數據庫軟件介紹:Oracle/MySQL/SQL server…分類:關系型數據庫:關系模型組織數據非關系型數據庫:鍵值對關系存儲二、 mysql數據的存儲方式:一臺數據庫服務器中會創建很多個數據庫(一個項…

Intellij IDEA 快捷鍵(Mac)

編輯 格式化代碼 AltCommandL 大小寫切換 ShiftCommandU 包圍 AltCommandT 選中代碼抽取方法 AltCommandM 調試/運行查看 類關系視圖 CommandAltU 查看所有的 TODO Command6 查詢方法調用處 AltF7 搜索其它 隱藏 Intellij IDEA CommandH 自動提醒 Alt/(這是我自己設置的)…

Spark RDD算子介紹

Spark學習筆記總結 01. Spark基礎 1. 介紹 Spark可以用于批處理、交互式查詢(Spark SQL)、實時流處理(Spark Streaming)、機器學習(Spark MLlib)和圖計算(GraphX)。 Spark是MapReduc…

java 寫tb級文件_三管齊下!TB 級文件的上傳性能瞬間被優化 100 倍!

作者 | 中華石杉責編 | 伍杏玲本文經授權轉載石杉的架構筆記(ID:shishan100)這篇文章我們來看看,世界上最優秀的分布式文件系統HDFS,是如何對超大文件的上傳做性能優化的?首先,我們還是通過一張圖來看一下文件上傳的大…