父類一實現serializable_我的java基礎學習易錯點和易忘點總結(一)

4c9209c0a34bdd84e0720ff1768adb43.png

一.繼承

A:子類只能繼承父類所有非私有的成員(成員方法和成員變量)

B:子類不能繼承父類的構造方法,但是可以通過super關鍵字去訪問父類構造方法。

二.繼承中構造方法的關系

A:子類中所有的構造方法默認都會訪問父類中空參數的構造方法

B:為什么呢?

因為子類會繼承父類中的數據,可能還會使用父類的數據。

所以,子類初始化之前,一定要先完成父類數據的初始化。

注意:子類每一個構造方法的第一條語句默認都是:super();

三.重載和重寫

方法重寫:子類中出現了和父類中方法聲明一模一樣的方法。

方法重載:本類中出現的方法名一樣,參數列表不同的方法。與返回值無關。

四.代碼塊

一個類的靜態代碼塊,構造代碼塊,構造方法的執行流程:

靜態代碼塊(一次) > 構造代碼塊(構造一次走一次) > 構造方法(調用一次走一次)

五.多態

多態中的成員訪問特點:

A:成員變量

編譯看左邊,運行看左邊。

B:構造方法

創建子類對象的時候,訪問父類的構造方法,對父類的數據進行初始化。

C:成員方法

編譯看左邊,運行看右邊。

D:靜態方法

編譯看左邊,運行看左邊。

(靜態和類相關,算不上重寫,所以,訪問還是左邊的)

**成員變量僅僅是該事物的外在(父類)特征描述,而成員方法是該事物的內在(子類)功能描述**

**由于成員方法存在方法重寫,所以它運行看右邊。**

巧妙理解:

父親雇了兒子去干活,(多態方式創建對象)

要用的工具和資源是父親的,(工具和資源表示父類的成員變量,所以訪問成員變量時是訪問的父類成員變量)

干什么活是父親決定的,(干活表示成員方法,子類新增的成員方法父類不可以訪問)

而干活方式是兒子自己的,與父親的方式無關,(干活指成員方法,子類重寫了父類的成員方法,所以運行看子類的成員方法)

六.接口

成員變量;只能是常量,并且是靜態的。

常量:1.因為接口是不能實例化的也就是不能被初始化,所以必須是常量

2.不能實例化,所有實現類都共有一份,避免別的實現類修改這個值

靜態:1.接口沒有對象,所以要用類名來訪問,那就是靜態嘍;當多實現時同名的變量名也避免了歧義

2.不能實例化,所有實現類都共有一份

默認修飾符:public static final

建議:自己手動給出。

構造方法:接口沒有構造方法。(不能實例化)

成員方法:只能是抽象方法。

默認修飾符:public abstract

建議:自己手動給出。

七.抽象類和接口的區別:

A:成員區別

抽象類:

成員變量:可以變量,也可以常量

構造方法:有

成員方法:可以抽象,也可以非抽象

接口:

成員變量:只可以常量

構造方法:無

成員方法:只可以抽象

B:關系區別

類與類

繼承,單繼承

類與接口

實現,單實現,多實現

接口與接口

繼承,單繼承,多繼承

C:設計理念區別

抽象類 被繼承體現的是:”is a”的關系。抽象類中定義的是該繼承體系的共性功能。

接口 被實現體現的是:”like a”的關系。接口中定義的是該繼承體系的擴展功能。

抽象的概念是將不可變的提取出來封裝到一起,將可變的東西放到現實中去。

接口的設計理念是高層抽象,全部不可變。

八.toString

* public String toString():返回該對象的字符串表示。

* this.toString() = this.getClass().getName()+'@'+Integer.toHexString(this.hashCode());

* 例如:cn.itcast_02.Student@42552c

九.異常

1:如果catch里面有return語句,請問finally里面的代碼還會執行嗎?

如果會,請問是在return前,還是return后。

會。前。準確的說,應該是在中間。

2.throw是業務型異常。throws是方法聲明異常。try是捕獲異常。

3:try...catch...finally的格式變形

A:try...catch...finally

B:try...catch

C:try...catch...catch...

D:try...catch...catch...finally

E:try...finally

這種做法的目前是為了釋放資源。

4. 異常注意事項:

A:子類重寫父類方法時,子類的方法必須拋出相同的異常或父類異常的子類。(父親壞了,兒子不能比父親更壞)

B:如果父類拋出了多個異常,子類重寫父類時,只能拋出相同的異常或者是他的子集,子類不能拋出父類沒有的異常

C:如果被重寫的方法沒有異常拋出,那么子類的方法絕對不可以拋出異常,如果子類方法內有異常發生,那么子類只能try,不能throws

十.String

1.不可變性:改變其值時,只是改變了字符串常量池中的指向,實際的值是沒有變化的。

2. 前者創建一個對象,后者創建兩個對象

new String會現在常量池中查看有沒有這個字符串長量,有的話復制到堆內存中,沒有就在常量池中創建并復制堆內存

3. 字符串如果是變量相加:先開空間在拼接

字符串如果常量相加:是先加在常量池里找,如果有就直接返回,沒有就創建

十一.常用類

1.StringBuffer:線程安全的可變字符串、StringBuilder:線程不安全的可變字符串

2. * int -- String:String.valueOf(number); * String -- int:Integer.parseInt(s)

3.Math:int number = (int) (Math.random() * (end - start + 1)) + start;//生成一個在任意范圍的隨機數

4.Random類:

public Random():沒有給種子,用的是默認種子,是當前時間的毫秒值

public Random(long seed):給出指定的種子,給定種子后,每次得到的隨機數是相同的。

public int nextInt():返回的是int范圍內的隨機數

public int nextInt(int n):返回的是[0,n)范圍的內隨機數

十二.泛型和集合類

1.泛型使用:

1.泛型定義在類名上:public class ObjectTool {}

2.泛型定義在方法上:public void show(T t) {}

3.泛型定義在接口上:public interface Inter {}public class InterImpl implements Inter {}

4.通配符:

* ?:任意類型,如果沒有明確,那么就是Object以及任意的Java類了:>

* ? extends E:向下限定,E及其子類: extends Animal>

* ? super E:向上限定,E極其父類: super Animal>

2.ConcurrentModificationException:當方法檢測到對象的并發修改,但不允許這種修改時,拋出此異常。

產生的原因:

迭代器是依賴于集合而存在的,在判斷成功后,集合的中新添加了元素,而迭代器卻不知道,所以就報錯了,這個錯叫并發修改異常。

其實這個問題描述的是:迭代器遍歷元素的時候,通過集合是不能修改元素的。

解決辦法:

A:迭代器迭代元素,迭代器修改元素

元素是跟在剛才迭代的元素后面的。

B:集合遍歷元素,集合修改元素(普通for)

元素在最后添加的。

3. JDK5的新特性:自動拆裝箱,泛型,增強for,靜態導入,可變參數,枚舉

4.List集合的排序方式:

Collections提供兩種排序方法:

1.Collections.sort(List list);

此方法需要泛型T這個Bean實現Comparable接口,并且實現compareTo()方法排序;

2.Collections.sort(List list, Comparator super T> c);

此方法,在泛型T這個Bean沒有實現Comparable接口的時候,多個一個參數,是一個接口我們需要實現其compare()方法排序;

5.HashSet:存儲字符串并遍歷--問題:為什么存儲字符串的時候,字符串內容相同的只存儲了一個呢?

* 通過查看add方法的源碼,我們知道這個方法底層依賴 兩個方法:hashCode()和equals()。

* 步驟:

* 首先比較哈希值(重寫后哈希值是通過屬性計算出來的和屬性有關)

* 如果相同,繼續走,比較地址值或者走equals()

* 如果不同,就直接添加到集合中

* 按照方法的步驟來說:

* 先看hashCode()值是否相同

* 相同:繼續走equals()方法

* 返回true:說明元素重復,就不添加

* 返回false:說明元素不重復,就添加到集合

* 不同:就直接把元素添加到集合

* 如果類沒有重寫這兩個方法,默認使用的Object()。一般來說不同相同。

* 而String類重寫了hashCode()和equals()方法,所以,它就可以把內容相同的字符串去掉。只留下一個。

注意:

1.equal()相等的兩個對象他們的hashCode()肯定相等,也就是用equal()對比是絕對可靠的。

2.hashCode()相等的兩個對象他們的equal()不一定相等,也就是hashCode()不是絕對可靠的。

所有對于需要大量并且快速的對比的話如果都用equal()去做顯然效率太低,所以解決方式是,每當需要對比的時候,首先用hashCode()去對比,如果hashCode()不一樣,則表示這兩個對象肯定不相等(也就是不必再用equal()去再對比了),如果hashCode()相同,此時再對比他們的equal(),如果equal()也相同,則表示這兩個對象是真的相同了,這樣既能大大提高了效率也保證了對比的絕對正確性!

3.當自定義類沒有重寫hashCode和equals方法時,默認走的是Object的hashCode和equals方法,這時他的hashCode的值是不一樣的。

6.TreeSet排序方式:

A:自然排序(元素具備比較性)

讓元素所屬的類實現自然排序接口 Comparable

B:比較器排序(集合具備比較性)

讓集合的構造方法接收一個比較器接口的子類對象 Comparator


497ee3598e4581fdbc9bdb03e312d83c.png

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

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

相關文章

Avocado 安裝和簡單測試

1.Avocado 安裝 1.1 通過包安裝 像Fedora可以通過rpm包進行安裝,其他通過RPM管理的發行版需要自己制作相關包。Avocado同樣支持DEP包的安裝可以在contrib/packages/debian找到。 Fedora 首先通過下面的命令獲取倉庫配置文件。 sudo curl https://repos-avocadoproje…

html文檔主體的根標簽,2 HTML簡介標簽嵌套和并列關系文檔聲明

HTML:Hyper Text Markup Language 超文本標簽語言(hyper:精力旺盛的 markup:標記 n noun)HTML不是編程語言,而是一種標記語言(就是一套標記標簽),用于描述網頁,是網頁制作必備的。超文本是指頁面內可以包含圖片、鏈接…

深入克隆

在繼續克隆概念之前,讓我們用對象創建概念刷新基礎知識。 使用new運算符創建對象時,對象將在堆中獲取內存分配。 堆中的對象創建 在Java中,理想情況下僅通過引用變量修改對象,即僅復制對象的內存地址,因此原始對象中…

c# 口口亂碼_c# 亂碼解決方法

1 設置web.configrequestEncoding"utf-8"responseEncoding"utf-8"fileEncoding"utf-8"/>如果相應使用gb2312 ,則html頁面也要設置相同,解決亂碼。如果為 utf-8 ,則相應的html文件的屬性要轉換成utf-8保存&a…

《你的燈亮著嗎?》個人總結

我要如何去解決問題 搞清楚問題是什么 問題就是我們的體驗和期待的所產生的差異 * 問題的本質 * 問題的定義 * 問題的產生 * 問題的表述誰需要解決問題要多維的看待問題問題來自哪里問題的解決方法在特定的層面上去解決問題問題的解決是要交給能解決問題的人--誰能解決問題別輕…

html文檔的文件頭的主要作用是什么,文件頭

本詞條缺少概述圖,補充相關內容使詞條更完整,還能快速升級,趕緊來編輯吧!文件頭是位于文件開頭的一段承擔一定任務的數據,一般都在開頭的部分。中文名文件頭位 置位于文件開頭任 務承擔一定任務的數據類 別文…

索引和未索引執行計劃的比較_詳解Oracle復合索引+實例說明

復合索引復合索引顧名思義,區別于單列索引,是由兩個或多個列一起構成的索引。其在B樹上的數據結構是什么樣?如下圖,是一個包含兩列的復合索引。如果你觀察仔細,還會發現它的葉子節點是ASC遞增排序的。現根據第一個值排…

Datables使用總結

本文共四部分:官網 | 基本使用|遇到的問題|屬性表 一:官方網站:[http://www.datatables.net/] 二:基本使用:[http://www.guoxk.com/node/jquery-datatables] 1、DataTables的默認配置 $(document).ready(function() { …

python面向窗體的開發_Python高級進階#019 pyqt5菜單menu應用,新建多窗體

知識回顧:1.掌握的是QCalendarWidget日歷控件2.click點擊事件(信號)觸發3.掌握日期的格式化QDate本節知識視頻教程以下開始文字講解:一、案例:菜單1.新建第一個窗體2.一級菜單的配置3.二級菜單的配置4.利用菜單功能實現界面跳轉,實…

用方面清理代碼

在我以前的文章中,我描述了字母轉換,并且提到了我們使用AspectJ解決了該任務,但是我沒有提及AspectJ的工作原理以及一般性的方面。 因此,在接下來的幾行中,我將解釋: 什么是面向方面的編程,為什…

java前三章總結

Java前三章總結 第一章:1.Java都有什么東西? Jdk(java開發工具包)包括 Jre(Java運行環境)---------->jvm(Java虛擬機) 應用(javac) Java API和一些常用的j…

原型 - 實現自己的jQuery

每個第一次使用jq的開發者都感到驚嘆,jq的$太神奇了,究竟是怎么做到的使用$控制dom 贊嘆前人之余,探究其本源才是前端開發者應該做的事,社區常常說,不要重復造輪子, 可是啊,連輪子都造不出來,又怎么去了解在什么環境下用什么輪子,怎么樣才可以造成更加優秀的輪子, 不同階段對…

html 用svg縮放拉伸,html – 拉伸SVG以適應其父級的100%高度和寬度

如果您對另一種選擇開放,您可以使用純CSS創建形狀.它不會像SVG那樣整潔,但它會響應:* {box-sizing:border-box;}.box {margin:40px;padding:0 10px;max-width:200px;display:inline-block;vertical-align:top;border-right:2px solid green;border-left:2px solid g…

server.transfer 無法跳轉頁面_H5 騰訊地圖無法導航

uni-app 打包H5騰訊地圖無法導航前言:最近幾天用uni-app開發安卓和iOS應用,打包成APP安裝包后,APP內做地圖導航沒有問題,APP內使用的是高德地圖;但是打包成為H5頁面后,運行在微信內置瀏覽器或者運行在第三方…

打破PermGen神話

在我的最新文章中,我解釋了可能導致java.lang.OutOfMemoryError:PermGen空間崩潰的原因 。 現在該討論該問題的可能解決方案了。 或者,更確切地說,是關于互聯網對可能解決方案的建議。 不幸的是,我只能說,我…

Linux獲取當前年月日后綴精確到微秒,例如2017-05-06T23:57:07.713171

代碼如下&#xff1a;詳細見注釋 #include <stdio.h> #include <string.h> #include <time.h> #include <sys/time.h>int main() {struct timeval start;struct tm *local_time NULL;static char str_time[100];char ms[16];gettimeofday( &start…

PhiloGL學習(5)——神說要有光,便有了光

前言 上一篇文章中介紹了如何創建三維對象及加載皮膚&#xff0c;本文為大家介紹如何為場景添加光源。 一、 原理分析 光在任何地方都是非常重要的&#xff0c;無論在哪里都說是要發光發熱&#xff0c;光和熱也是分不開的。光線分為點光源和線光源&#xff0c;所謂點光源和線光…

android 彈出彈框2秒消失_基于HTML5 Canvas 實現彈出框

前言用戶鼠標移入時&#xff0c;有彈出框出現&#xff0c;這樣的需求很常見。這在處理 HTML 元素實現時簡單&#xff0c;但是如果是對 HTML5 Canvas 構成的圖形進行處理&#xff0c;這種方法不再適用&#xff0c;因為 Canvas 使用的是另外一套機制&#xff0c;無論在 Canvas 上…

【CSS】小妙招,各種問題總結方法處理

1.實現div文字溢出自動省略號截取 overflow:hidden; /*超過部分不顯示*/       text-overflow:ellipsis; /*超過部分用點點表示*/       white-space:nowrap;/*不換行*/ 2.規定行數的截取效果 text-overflow: ellipsis; /*有些示例里需要定義該屬性&#xff0c…

Java2Days 2012:Java EE

Java2Days會議是東歐的主要活動&#xff0c;目的是介紹Java開發的最新趨勢。 今年&#xff0c;該活動于10月25日至26日在保加利亞的索非亞舉行。 我在那里&#xff0c;并有機會與一些SAP的同事一起品嘗了一些最新的Java&#xff0c;云和移動內容&#xff0c;這些內容已直接發送…