第一篇:JAVA第一階段:基礎(chǔ)設(shè)計(jì)結(jié)構(gòu)---總結(jié)精髓
《JAVA語言 基礎(chǔ)設(shè)計(jì)結(jié)構(gòu)-----總結(jié)》
一. Java入門認(rèn)識(shí)。
Java是一門面向?qū)ο缶幊陶Z言,而C,C++面向過程,吸收了C,C++各種優(yōu)點(diǎn),摒棄之前難以理解的多繼承、指針等概念而衍生出來的語言。
Java具有簡(jiǎn)單性、面向?qū)ο蟆⒎植际健⒔咽健踩浴⑵脚_(tái)獨(dú)立與可移植性、多線程、動(dòng)態(tài)性等特點(diǎn)。Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序的等。
Java分為:
Java ME,平臺(tái)微型版,應(yīng)用于移動(dòng)、無線及有限資源環(huán)境。如手機(jī)APP開發(fā) Java SE,平臺(tái)標(biāo)準(zhǔn)版,應(yīng)用于桌面環(huán)境。如桌面軟件開發(fā)
Java EE,平臺(tái)企業(yè)版,應(yīng)用于基于java的應(yīng)用服務(wù)器。如WEB開發(fā)
計(jì)算機(jī)基礎(chǔ)常識(shí):
1.軟件開發(fā),分為系統(tǒng)軟件與應(yīng)用軟件,開發(fā)就是制作意思。
2.人機(jī)交互方式,分為圖形化界面(GUI)交互方式與命令行(CLI)交互方式。如:win下的DOS命令行。
Java 跨平臺(tái) 特性:
一種與相關(guān)平臺(tái)系統(tǒng)不一致的語言是不能夠直接識(shí)別,通常都是通過搭建跨平臺(tái)環(huán)境進(jìn)行。
二. Java程序設(shè)計(jì)環(huán)境。
1.基本的開發(fā)工具包(JDK)
下載JDK ? 安裝JDK ? 設(shè)置JDK路徑 ? 安裝完成 ? 環(huán)境變量配置 ?
使用文本編寫、使用命令行窗口執(zhí)行
具體操作可觀看視頻教學(xué)
2.使用集成開發(fā)環(huán)境工具包(Eclipse,NetBeans 等)
下載 ? 安裝 ? 使用
具體使用可觀看視頻教學(xué)
三. Java基本程序設(shè)計(jì)結(jié)構(gòu)。
關(guān)鍵字,標(biāo)識(shí)符(自定義名稱),注釋,常量與變量(數(shù)據(jù)類型),運(yùn)算符,字符串,語句,函數(shù),數(shù)組
1.關(guān)鍵字
關(guān)鍵字定義:被JAVA語言賦予特殊含義的單詞。特點(diǎn):關(guān)鍵字所有單詞字母都是小寫。
如上圖所示,/*….*/這符號(hào)內(nèi)容是注釋,藍(lán)色部分是關(guān)鍵字,綠色部分是java創(chuàng)建好的類,而Demo是自定義class類的名稱。自定義class類 名稱為Demo {}里面的內(nèi)容就是主函數(shù)。主函數(shù) {} 里面就是執(zhí)行輸出語句,這就構(gòu)成小程序的基本結(jié)構(gòu)。2.標(biāo)識(shí)符
標(biāo)識(shí)符定義:
在程序中自定義的一些名稱。由26個(gè)字母大小寫、數(shù)字0到
9、符號(hào)_和$組成。(如Demo1、Demo_01、Demo02$等)
定義標(biāo)識(shí)符規(guī)則:數(shù)字不可以開頭,不可以使用關(guān)鍵字。
規(guī)范:定義時(shí),要有代表性意義,提高閱讀性。定義類名稱時(shí),第一個(gè)字母要大寫,如多單詞組成,每個(gè)單詞字母需大寫。(如類名FirstSample就遵守了規(guī)則同時(shí)也遵守了規(guī)范)
FirstSample.java這個(gè)文件叫源代碼(java編程源代碼,可編譯)。
FirstSample.class這個(gè)文件叫字節(jié)碼(java虛擬機(jī)可識(shí)別字節(jié)碼文件,可運(yùn)行)。注意:字節(jié)碼文件名稱與源代碼里面定義的類名稱是一致的。也就是說正常源代碼編譯通過 后,自動(dòng)生成的字節(jié)碼文件名稱就是源代碼里面定義的類名稱。
3.注釋
注釋有三種方式:
第一種,行注釋,每行前面標(biāo)記 //。(格式如://注釋內(nèi)容)第二種,長(zhǎng)篇注釋,使用/*和*/將一段比較長(zhǎng)的注釋括起來。(格式如:/*注釋內(nèi)容*/)第三種,自動(dòng)生成文檔注釋,這種注釋以/**開始,以*/結(jié)束。(格式如:/**注釋內(nèi)容*/)
4.常量與變量(數(shù)據(jù)類型)
① 常量(表示不能改變的數(shù)值)
整數(shù)常量; 小數(shù)常量;
boolean型常量(只有true與false兩個(gè)數(shù)值);
字符常量(將一個(gè)數(shù)字、字母或者符號(hào)用單引號(hào)(’ ’)標(biāo)識(shí)); 字符串常量(將一個(gè)或者多個(gè)字符用雙引號(hào)(” ”)標(biāo)識(shí)); null 常量(只有一個(gè)數(shù)值null,表示什么都沒有為空的數(shù)值)
對(duì)于整數(shù)常量表現(xiàn)形式常用有四種: 二進(jìn)制(0,1滿二進(jìn)一)
八進(jìn)制(0~7 滿八進(jìn)一,開頭用0表示)十進(jìn)制(0~9 滿十進(jìn)一)
十六進(jìn)制(0~9,A~F 滿十六進(jìn)一,開頭用0x表示)8個(gè)bit位為一個(gè)字節(jié)。
進(jìn)制間的相互轉(zhuǎn)化 十進(jìn)制?二進(jìn)制;(除以2取余)二進(jìn)制?十進(jìn)制;(乘以2取冪。)二進(jìn)制?八進(jìn)制;(3個(gè)二進(jìn)制位 轉(zhuǎn)化成 1個(gè)八進(jìn)制位)二進(jìn)制?十六進(jìn)制;(4個(gè)二進(jìn)制位 轉(zhuǎn)化成 1個(gè)十六進(jìn)制位)對(duì)于負(fù)數(shù)常量表現(xiàn)形式:
對(duì)應(yīng)的正數(shù)二進(jìn)制取反加1。
0000-0110
整數(shù)6
取反11111-1001
+ 0000-0001
整數(shù)1
---
1111-1010
負(fù)數(shù)-6 的表現(xiàn)形式
② 變量
變量概念(內(nèi)存中的一個(gè)存儲(chǔ)區(qū)域,該區(qū)域有自己的變量名稱與數(shù)據(jù)類型,該區(qū)域數(shù)據(jù)可以在同類型中不斷變化)
使用變量注意:變量的作用范圍(一對(duì){}內(nèi)有效);初始值。定義變量格式:
數(shù)據(jù)類型 變量名稱=初始值;(例如: int x=1;)數(shù)據(jù)類型:
字符串?dāng)?shù)據(jù)類型:String
例如Sting s=”星期”;
注意:整數(shù)類型long 的值有一個(gè)后綴L或者l(如:long x=40000L或者x=40000l)。
float 類型 的數(shù)值有個(gè)后綴F或者f(如:float y=3.14F或者是y=3.14f)。沒有后綴的浮點(diǎn)值默認(rèn)為double類型。當(dāng)然也可以在double類型的浮點(diǎn)值后面添加D或者d。
數(shù)據(jù)類型轉(zhuǎn)換:
自動(dòng)類型轉(zhuǎn)換(也叫隱式類型轉(zhuǎn)換)例如:int x=3;
byte y=4;
x=x+y;強(qiáng)制類型轉(zhuǎn)換(也叫顯式類型轉(zhuǎn)換)例如:byte x=3;
x=x+4;//這樣的賦值運(yùn)算不行的,如果非得強(qiáng)制性賦值運(yùn)算這一步寫成x=(byte)(x+4),雖然編譯通過,但是運(yùn)算記過數(shù)據(jù)會(huì)丟失一部分。類型的轉(zhuǎn)換原理
表達(dá)式的數(shù)據(jù)類型自動(dòng)提升
所有的byte類型,short類型,char類型的值將被自動(dòng)提升為int 類型。如果操作數(shù)類型long,計(jì)算結(jié)果為long類型。如果操作數(shù)類型float,計(jì)算結(jié)果為float類型。如果操作數(shù)類型double,計(jì)算結(jié)果為double類型。
5.運(yùn)算符
算術(shù)運(yùn)算符(+,-,*,/,%(整數(shù)求余,稱為取模))
注意:1.任何數(shù) 模以 2不是0就是1,可運(yùn)用于開關(guān)運(yùn)算
2.“+”與字符串相連,是連接符,不是運(yùn)算符。(如:3+”2”,其結(jié)果是3和2,不是等于5;”5+5=”+5+5,其結(jié)果是5+5=55)
賦值運(yùn)算符(++(自增),--(自減),+=,-=,*=,/=,%=)
注意:1.運(yùn)算中,a=3時(shí)b=a++與b=++a的區(qū)別,b=a++其結(jié)果是b=3,a=4;b=++a其結(jié)果是b=4,a=4。如果獨(dú)立運(yùn)算,結(jié)果是一樣的,參與其他運(yùn)算時(shí)需要注意運(yùn)算優(yōu)先級(jí)。
2.(+=,-=,*=,/=,%=)賦值運(yùn)算,其實(shí)就是左右兩邊的運(yùn)算結(jié)果賦給左邊。如:int a=4;
a+=2;//其實(shí)就是a=a+2 其他運(yùn)算符以此類推。
比較運(yùn)算符(>,<,>=,<=,==,!=,instanceof)
比較運(yùn)算符的運(yùn)算結(jié)果不是true就是false;instanceof檢查是否是類的對(duì)象。
邏輯運(yùn)算符(&,|,^,!,&&,||)
(與,或,異或,非,短路與,短路或)
用于連接boolean類型表達(dá)式。
&(與):規(guī)律,&運(yùn)算兩邊有一邊為false,其結(jié)果為false;兩邊都為true,其結(jié)果為true。|(或):規(guī)律,| 運(yùn)算兩邊有一邊為true,其結(jié)果為true;兩邊都為false,其結(jié)果為false。
^(異或):規(guī)律,^運(yùn)算兩邊真假相同,其結(jié)果為false;兩邊真假不同,其結(jié)果為true。
&&(短路與):規(guī)律,和&運(yùn)算結(jié)果一樣,區(qū)別在于運(yùn)算過程,&運(yùn)算無論左邊運(yùn)算結(jié)果是什么,右邊都參與運(yùn)算,&&只要左邊運(yùn)算結(jié)果為false,右邊不參與運(yùn)算,直接得出結(jié)果false。
||(短路或):規(guī)律,和|運(yùn)算結(jié)果一樣,區(qū)別在于運(yùn)算過程,|運(yùn)算無論左邊運(yùn)算結(jié)果是什么,右邊都參與運(yùn)算,||只要左邊運(yùn)算結(jié)果為true,右邊不參與運(yùn)算,直接得出結(jié)果true。
!(非):規(guī)律,真假取反。!false=true;!true=false;!true=true;!false=true。
位
運(yùn)算符(<<,>>,>>>,&,|,^,~)
(左移,右移,無符號(hào)右移,或運(yùn)算移位,與運(yùn)算移位,異或移位,反碼)
直接對(duì)二進(jìn)制位移位運(yùn)算。
<<(左移):3<<2,3的二進(jìn)制位數(shù)左移2位,其結(jié)果等于12。3*2*2=12 >>(右移):3>>1,3的二進(jìn)制位數(shù)右移1位,其結(jié)果等于1。3/2=1 >>>(無符號(hào)右移):3>>>1,3的二進(jìn)制位數(shù)無符號(hào)右移1位。
注意:>>(右移)和>>>(無符號(hào)右移)的區(qū)別在于,>>(右移)原來二進(jìn)制位數(shù)高位是什么就補(bǔ)位什么(是0就補(bǔ)0,是1就補(bǔ)1),>>>(無符號(hào)右移)原來的二進(jìn)制數(shù)高位是什么都用0補(bǔ)位。
&(與運(yùn)算移位):6&3=2,6的二進(jìn)制位數(shù)和3的二進(jìn)制位數(shù)相與得出數(shù)據(jù)結(jié)果。|(或運(yùn)算移位):6|3=7,6的二進(jìn)制位數(shù)和3的二進(jìn)制位數(shù)相或得出的數(shù)據(jù)結(jié)果。
^(異或運(yùn)算移位):6^3=5,6的二進(jìn)制位數(shù)和3的二進(jìn)制位數(shù)相異或得出的數(shù)據(jù)結(jié)果。
注意:異或運(yùn)算移位特性,一個(gè)數(shù)異或同一個(gè)數(shù)兩次,其結(jié)果還是原來的那個(gè)數(shù)。其特性可應(yīng)用于加密。如:6^3^3=6;10^3^3=10。
~(反碼):~6=-7,6的二進(jìn)制位數(shù)取反得出的數(shù)據(jù)結(jié)果。
三元運(yùn)算符(條件表達(dá)式?表達(dá)式1:表達(dá)式2;)格式:
條件表達(dá)式 ? 表達(dá)式1 : 表達(dá)式2; 若條件為true,運(yùn)算后結(jié)果為表達(dá)式1; 若條件為false,運(yùn)算后結(jié)果為表達(dá)式2。
例子:取兩個(gè)數(shù)中的大數(shù)。
int a=8,b=15,x;
x=(a>b)?a:b;
6.語句(程序流程控制)
判斷結(jié)構(gòu)(if語句)
注意:三元運(yùn)算符就是if語句格式二的簡(jiǎn)寫格式。但是三元運(yùn)算符簡(jiǎn)化if語句格式二,在實(shí)際應(yīng)用中是有局限性的,而if格式則是通用性質(zhì)。
何時(shí)if語句格式二可以簡(jiǎn)化為三元運(yùn)算符寫法,就是當(dāng)運(yùn)算后有具體的結(jié)果時(shí),才可以簡(jiǎn)化成三元運(yùn)算符的寫法。運(yùn)算后不確定有沒結(jié)果時(shí),就通用if寫法。
局部代碼塊作用,可以定義局部變量的生命周期(換句話就是騰出內(nèi)存空間)。
選擇結(jié)構(gòu)(switch語句)格式:
switch(表達(dá)式)
{ case 取值1:
執(zhí)行語句;bareak;case 取值2:
執(zhí)行語句;bareak;…… default:
執(zhí)行語句;bareak;}
注意:if和switch的應(yīng)用
if:
1.對(duì)具體值進(jìn)行判斷。
2.對(duì)區(qū)間判斷。
3.對(duì)運(yùn)算結(jié)果boolean類型的表達(dá)式判斷。
switch:
1.對(duì)具體值進(jìn)行判斷。(對(duì)具體值判斷,建議使用switch語句,因?yàn)閟witch語句效率高)。
2.值的個(gè)數(shù)通常是固定的。if和switch相對(duì)而言,switch有應(yīng)用的局限性,在特定的條件下才能體現(xiàn)出高效的應(yīng)用。
循環(huán)結(jié)構(gòu)(while;do while; for)
注意:循環(huán)結(jié)構(gòu)的使用場(chǎng)景
1.無限循環(huán)最簡(jiǎn)單形式,while(true){},for(;;){}。
2.何時(shí)使用循環(huán)結(jié)構(gòu),當(dāng)對(duì)某些代碼執(zhí)行很多次時(shí)可以使用循環(huán)結(jié)構(gòu)。當(dāng)對(duì)一個(gè)條件進(jìn)行一次判斷時(shí),可以使用if語句;當(dāng)對(duì)一個(gè)條件進(jìn)行多次判斷時(shí),可以使用while或者for循環(huán)語句。
語句相互間的嵌套應(yīng)用 大圈套小圈思想 練習(xí)提升
其他流程控制語句
break;//(跳出)
continue;//(繼續(xù))break應(yīng)用選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu);continue應(yīng)用于循環(huán)結(jié)構(gòu)。
7.函數(shù)
函數(shù)就是定義類中具有特定功能的獨(dú)立小程序,也稱類的方法。格式:
修飾符
返回值類型
函數(shù)名(參數(shù)類型 參數(shù)1,參數(shù)類型 參數(shù)2,……)
{
執(zhí)行語句;
return 返回值;//返回值 } 例如:1.public static void main(String[] args){ System.out.println(“Hello World!”)}
2.public static int add(int a, int b){
return a+b;} 注意:如果函數(shù)中沒有具體值返回,那么格式中的return后直接加分號(hào)結(jié)束,關(guān)鍵字返回值類型為void。
函數(shù)應(yīng)用(實(shí)現(xiàn)特定功能)需求(實(shí)現(xiàn)那些功能);思路(如何實(shí)現(xiàn)功能);實(shí)現(xiàn)步驟。
8.數(shù)組
數(shù)組就是同一種數(shù)據(jù)類型的集合,也稱為數(shù)據(jù)的容器。
用處:數(shù)組可以給集合里面的元素進(jìn)行編號(hào),方便操作這些元素。
格式:
1.元素類型 [] 數(shù)組名=new 元素類型[元素個(gè)數(shù)或數(shù)組長(zhǎng)度];
示例:int [] arr =new int [5];
2.元素類型 [] 數(shù)組名=new 元素類型[] {元素1,元素2,…….};
示例:int [] arr=new int[]{3,5,1,7};
int [] arr={3,5,1,7};二維數(shù)組 格式:
1.int[][] add=new int[3][2];//二維數(shù)組中有3個(gè)一維數(shù)組,每個(gè)一維數(shù)組有2個(gè)元素。2.int[][] add=new int[3][];//二維數(shù)組中有3個(gè)一維數(shù)組,每個(gè)一維數(shù)組初始值為null。
3.int[][] add={{},{},{}};//建立已知數(shù)組元素,已有3個(gè)一維數(shù)組,每個(gè)一維數(shù)組初始
值為null。
數(shù)組的棧內(nèi)存與堆內(nèi)存原理 數(shù)組的應(yīng)用
排序法(選擇排序、冒泡排序)查找法,二分查找、查表法、進(jìn)制轉(zhuǎn)換、二維數(shù)組以及多維數(shù)組
第二篇:JAVA基礎(chǔ)總結(jié)
JAVA基礎(chǔ)總結(jié)
轉(zhuǎn)眼間,已經(jīng)來到這里學(xué)習(xí)半年了,而現(xiàn)在我們對(duì)于JAVA學(xué)習(xí)才算是真正的開始。一開始接觸的時(shí)候我發(fā)現(xiàn)這個(gè)和C語言的基本語法幾乎一模一樣的,老師說:JAVA語言本來就是C++語言發(fā)展過來的,而C++是從C語言發(fā)展來的,C C++ 還有JAVA雖然是不同的三種語言,但是其實(shí)他們的基本語法是一樣的,但是它們卻有巨大的區(qū)別,這個(gè)區(qū)別主要是體現(xiàn)在思想上。
都說C語言是面向過程的語言,C++ C#和JAVA是面向?qū)ο蟮木幊蹋鋵?shí)就是思維方式稍微改了一下子,面向過程的語言主要是著重于算法,面向?qū)ο笾赜谶壿嫸选?/p>
這個(gè)教我們的老師是張成峰老師,張成峰是個(gè)很負(fù)責(zé)的老師,雖然JAVA基礎(chǔ)其實(shí)和C語言基礎(chǔ)差不多,但是仔細(xì)學(xué)學(xué)還是能找出很多不同的細(xì)節(jié)的,于是大家的問題就很多,張老師幾乎就是手把手的教我們,所以整體來說JAVA基礎(chǔ)學(xué)得挺扎實(shí)的。
我在這本書的學(xué)習(xí)不是挺好,聯(lián)系得少了,所以對(duì)代碼也不是特別熟悉。而且JAVA是一門重概念的書,對(duì)于我來說,概念是我的要害,理論知識(shí)也是我最怕學(xué)習(xí)的,所以學(xué)習(xí)這本書對(duì)我來說很是艱難,聽了很久的課,代碼寫得出來,但是理論知識(shí)幾乎一點(diǎn)也不明白,結(jié)果就造成了這次筆試考的不好。
筆試考的不好,機(jī)試也因?yàn)槲业拇中臎]有考好,所以這次的成績(jī)不好。
學(xué)習(xí)JAVA基礎(chǔ)后,還要在學(xué)習(xí)的過程中對(duì)每個(gè)知識(shí)都要用心和細(xì)心,當(dāng)然最該注重的地方就是應(yīng)該提高我對(duì)理論知識(shí)的學(xué)習(xí),要多看書,也要多敲敲代碼,這些就是提高學(xué)習(xí)知識(shí)全面的方法。
下一本書學(xué)習(xí)的是JAVAOO算是JAVA的一個(gè)重要的內(nèi)容了,這才會(huì)真正的接觸JAVA的核心課程,在這本書里我要好好的理解理論知識(shí),仔細(xì)的學(xué)習(xí)每個(gè)知識(shí)。
第三篇:Java基礎(chǔ)總結(jié)
? 基本數(shù)據(jù)類型
? 變量單元直接存放數(shù)據(jù)
? 賦值和傳參的方式:傳值,即傳遞副本
? 比較相等使用關(guān)系運(yùn)算符“==”
? 引用數(shù)據(jù)類型
? 變量單元存放引用即對(duì)象地址,而數(shù)據(jù)(對(duì)象)在另一內(nèi)存區(qū)域存放。
? 賦值和傳參的方式:傳引用(傳遞對(duì)象的地址),即傳遞對(duì)象本身。
? 使用關(guān)系運(yùn)算符“==”比較兩個(gè)引用類型變量,比較的是地址,如果比較結(jié)果為
真,說明兩個(gè)變量引用了同一對(duì)象。
? 比較兩個(gè)對(duì)象是否相等應(yīng)使用equals方法
? Java是面向?qū)ο蟮恼Z言,開發(fā)Java程序就是開發(fā)Java類,Java的變量定義、方法(函
數(shù))和語句都必須在類中書寫,“無類即無Java”。
? 類的實(shí)例成員
屬性(成員變量):直接定義在類體中的變量(注:在方法或語句塊中定義的變量不是屬性)
方法:直接定義在類體中的方法。
類成員:直接定義在類體中的內(nèi)部類,即類成員。
注:對(duì)象的成員是從屬于對(duì)象的,必須通過對(duì)象訪問,在Java中不存在脫離對(duì)象和類而獨(dú)立存在的屬性和方法。
? 類、方法、語句三者的關(guān)系:
類中包含方法,方法中包含語句;方法中不能嵌套方法;語句不能直接寫在類體中。
? 變量的作用域
? 局部變量-方法的參數(shù)、方法體中定義的變量、語句塊中定義的變量,僅在所定義的方法體或語句塊中有效。
? 屬性-在整個(gè)類體中有效。
? 公有的屬性-其它類可以本類對(duì)象訪問。
? 私有的屬性-僅限本類內(nèi)訪問
? 局部變量(無論基本類型還是引用類型)在棧內(nèi)存中,對(duì)象在堆內(nèi)存中。注:引用類型的局部變量?jī)?nèi)存放是對(duì)象的引用(即地址),而對(duì)象在堆內(nèi)存中。
? 方法的重載-在同一類中多個(gè)方法同名的語法現(xiàn)象,方法重載應(yīng)符合以下條件:
? 方法同名
? 參數(shù)有所不同(即類型、個(gè)數(shù)和順序三者至少有一個(gè)不同)
注:方法是否重載不考慮返回類型等其它方面。
? 包和訪問修飾符
? 包-類的目錄結(jié)構(gòu),主要用途是方便類的管理。
? 類的簡(jiǎn)稱:不含包名的類名
? 類的全限定名稱(類的全稱):帶包名的類名。
? 訪問修飾符
? private-僅限本類內(nèi)訪問
? public-任何類都能夠訪問
? 默認(rèn)-限本包的類訪問
? protected--限本包的類訪問和子類的訪問
? 類的成員(屬性、方法和成員內(nèi)部類)可以使用四種訪問修飾符,頂級(jí)外部類僅能
使用public和默認(rèn)兩種修飾符。
? 數(shù)組
? 基本類型的數(shù)組的元素放的是數(shù)據(jù)
? 對(duì)象數(shù)據(jù)的元素放的是對(duì)象的引用
? 二維數(shù)組實(shí)際上是一個(gè)維數(shù)組,而其每個(gè)元素又是一個(gè)一維數(shù)組。
? 構(gòu)造方法-與類名同名并且無返回類型的方法
? 構(gòu)造方法的作用是創(chuàng)建對(duì)象,僅能通過new關(guān)鍵字調(diào)用。
? 類中未顯式定義構(gòu)造方法時(shí),類中會(huì)有默認(rèn)的構(gòu)造方法(即一個(gè)public、無參的構(gòu)
造方法);類中一旦定義顯式定義構(gòu)造方法,將不再產(chǎn)生默認(rèn)的構(gòu)造方法。
? 構(gòu)造方法可以重載
? 構(gòu)造方法只能可以使用四個(gè)訪問修飾符,不可以使用其它修飾符(如static、final
等)。
? this關(guān)鍵字
? this表示本對(duì)象或?qū)ο笞陨淼囊?/p>
? 通過this可以調(diào)用本類的成員方法和屬性
? 通過this可以調(diào)用本類的構(gòu)造方法,this調(diào)用構(gòu)造方法的語句必須寫在構(gòu)造方法的第一句。
? 實(shí)例成員和靜態(tài)成員
? 類的成員(屬性、方法和成員類)可劃分為靜態(tài)成員和實(shí)例成員。
? 實(shí)例成員是屬于對(duì)象的,隨著對(duì)象的創(chuàng)建而存在,隨著對(duì)象的銷毀而銷毀。? 靜態(tài)成員是屬于類的,隨著類的加載而存在,隨著類的銷毀而銷毀。
? 使用static修飾的成員是靜態(tài)成員,未使用static修飾的成員是實(shí)例成員。? 靜態(tài)成員內(nèi)不能使用this關(guān)鍵字。
? this表示當(dāng)前對(duì)象的引用。
? 對(duì)象的初始化
? 第一:實(shí)例屬性賦默認(rèn)值
? 第二:實(shí)例屬性賦初值
? 第三:執(zhí)行對(duì)象初始化塊
? 第四:執(zhí)行構(gòu)造方法
? 類的初始化
? 第一:靜態(tài)屬性賦默認(rèn)值
? 第二:靜態(tài)屬性賦初值
? 第三:執(zhí)行靜態(tài)塊
? 繼承的基本概念
? Java僅支持單繼承
?
?
?
?
? ? 如果一個(gè)類沒有顯式繼承任何類,則隱式繼承java.lang.Object類 ? 子類擁有父類的一切,子類對(duì)象由兩部分構(gòu)成:父類對(duì)象部分和子類個(gè)性化的部分。? 子類并不能訪問父類的一切: ? 子類可以訪問父類的public成員和protected成員 ? 子類不可以訪問父類的private成員 ? 僅當(dāng)子類與父類同在一包時(shí),子類方可以訪問父類的默認(rèn)訪問控制的成員。繼承與類和對(duì)象的初始化 ? 構(gòu)造子類對(duì)象時(shí),首先構(gòu)造父類對(duì)象,其次構(gòu)造子類個(gè)性化部分,兩者共同構(gòu)成完整的子類對(duì)象,即首先進(jìn)行父類對(duì)象的初始化,在初始化子類對(duì)象(個(gè)性化)部分。? 子類構(gòu)造方法的執(zhí)行首先調(diào)用父類的構(gòu)造方法。? 若在子類構(gòu)造方法中無顯式調(diào)用父類構(gòu)造方法的語句,則系統(tǒng)默認(rèn)調(diào)用父類中可訪問的無參的構(gòu)造方法,如果這時(shí)候父類中恰好沒有這樣的構(gòu)造方法,則編譯出錯(cuò)。? 在子類的構(gòu)造方法中可以通過super關(guān)鍵字調(diào)用父類構(gòu)造方法。這樣的調(diào)用語句只能出現(xiàn)在子類構(gòu)造方法的第一句。? 關(guān)于初始化的順序 ? 初始化父類 ? 初始化子類 ? 初始化父類對(duì)象 ? 初始化子類對(duì)象 繼承與類型轉(zhuǎn)換 ? 子類型對(duì)象可以自動(dòng)轉(zhuǎn)型為父類型 ? 父類型引用某個(gè)子類型對(duì)象時(shí),可以強(qiáng)制轉(zhuǎn)化為這個(gè)具體的子類型 方法重寫 ? 在繼承的情況下,子類的實(shí)例方法與父類的實(shí)例方法的方法名稱、參數(shù)、返回類型、throws聲明完全一致,并且該子類方法的訪問權(quán)限不低于父類方法的訪問權(quán)限,即方法重寫(子類方法重寫了父類方法),也稱方法覆蓋。? 方法重寫僅存在于父子類中的實(shí)例方法,靜態(tài)方法沒有重寫的概念。? 當(dāng)通過子類型對(duì)象執(zhí)行重寫方法時(shí),將始終表現(xiàn)為子類的行為,而且無論引用對(duì)象的變量是父類型還是子類型,也無論是直接調(diào)用還是通過父類型其它方法間接調(diào)用,都將如此。? final修飾的方法不可以被重寫 ? final修飾的類不可以被繼承 隱藏成員變量 ? 如果子類和父類中定義了同名稱的成員變量,則稱子類隱藏了父類的成員變量 ? 通過父類方法訪問隱藏的成員變量時(shí),將獲得父類成員變量 ? 通過子類方法訪問隱藏的成員變量時(shí),將獲得子類成員變量 ? 通過父類型的引用直接訪問隱藏的成員變量時(shí),將獲得父類成員變量 ? 通過子類型的引用直接訪問隱藏的成員變量時(shí),將獲得子類成員變量 super關(guān)鍵字
? super僅能用于子類中表示本對(duì)象的父對(duì)象部分
? super可以調(diào)用父類型的構(gòu)造方法
? Super可以調(diào)用父類的成員
? Super不可以使用在靜態(tài)上下文中
? Super不可以做為參數(shù)傳遞,不可以做為返回值返回。
? 當(dāng)方法重寫時(shí),或父類成員變量被隱藏時(shí),子類中只能通過super訪問父類方法和
父類成員變量
? final關(guān)鍵字
? 用于變量,表示變量的值不可改變
? 用于類,表示類不可被繼承
? 用于方法,表示方法不可以被重寫
? 關(guān)于final變量的初始化時(shí)機(jī)
? 局部變量:聲明的時(shí)候初始化
? 實(shí)例成員變量:聲明、對(duì)象初始化塊和構(gòu)造方法三處之一
? 靜態(tài)成員變量:聲明、靜態(tài)塊兩處之一
? 抽象類
? 抽象類可以包含抽象方法,也可以不包含抽象方法
? 含有抽象方法的類必須定義為抽象類
? 抽象類有構(gòu)造方法
? 抽象類不能夠?qū)嵗?/p>
? 通過抽象類可以調(diào)用其靜態(tài)成員
? 抽象類是需要由子類繼承的,因此抽象類不允許是final類
? 抽象方法
? 抽象方法沒有方法體,包括一對(duì)空的大括號(hào)也不允許有
? 抽象方法必須是實(shí)例方法,抽象方法不允許是final的? 抽象類與繼承
? 抽象類可以被繼承
? 若抽象類的子類是非抽象類,則該子類必須實(shí)現(xiàn)(重寫)其父類的所有抽象方法 ? 若抽象類的子類也是抽象類,則該子類可以不實(shí)現(xiàn)(重寫)其父類的全部或部分抽象
方法。
? 接口
? 接口也是數(shù)據(jù)類型,可以將其理解為“純”抽象類
? 接口不是類,也沒有構(gòu)造方法,不能夠?qū)嵗?/p>
? 接口中的屬性一律是public、static、final的,并可以省略這三個(gè)關(guān)鍵字
? 接口的方法一律是public、abstract的,并且可以省略這兩個(gè)關(guān)鍵字
? 接口中可以不包含任何屬性和方法
? 接口與實(shí)現(xiàn)
? 接口不是類,因此接口與類的關(guān)系不是“繼承”關(guān)系,而是“實(shí)現(xiàn)”關(guān)系,我們可
以將實(shí)現(xiàn)理解為繼承(盡管這并不恰當(dāng))
? 如果接口的實(shí)現(xiàn)類是抽象類,則該實(shí)現(xiàn)類可以不實(shí)現(xiàn)接口的全部或部分方法 ? 如果接口的實(shí)現(xiàn)類是非抽象類,則該實(shí)現(xiàn)類必須實(shí)現(xiàn)接口的全部方法
? 一個(gè)類可以實(shí)現(xiàn)多個(gè)接口
? 接口與繼承
? 接口之間可以相互繼承
? 一個(gè)接口可以繼承多個(gè)接口
? 接口與類型轉(zhuǎn)換
? 接口的的子類型對(duì)象可以自動(dòng)向上轉(zhuǎn)型為接口類型
? 接口的子類型指:是接口的實(shí)現(xiàn)類或者接口的子接口
? 如果變量引用的對(duì)象實(shí)際是某個(gè)接口的實(shí)現(xiàn)類對(duì)象,而變量的類型不是這個(gè)接口的子類型,那么則可以強(qiáng)制轉(zhuǎn)換為這個(gè)接口類型。
? 異常的類層次結(jié)構(gòu)
? Throwable錯(cuò)誤類,表示不可恢復(fù)的致命錯(cuò)誤
? Exception運(yùn)行時(shí)異常,此類異常可以不做顯式處理
? 非運(yùn)行時(shí)異常catch
? 聲明拋出 在方法頭通過throws聲明可能拋出的異常類型
? 異常機(jī)制的五個(gè)關(guān)鍵字
? try catch finally throw throws
? 如何使用
? try-catch
? try-catch-finally注:只要try執(zhí)行,其對(duì)應(yīng)的finally塊才必然執(zhí)行
? try-finally注:只要try執(zhí)行,其對(duì)應(yīng)的finally塊才必然執(zhí)行
? throw 主動(dòng)拋出一個(gè)異常
? throws 用在方法聲明頭部,聲明方法可能拋出異常
? finally代碼塊多用于書寫資源回收代碼
? Java集合類(集合框架)
? Collection接口
? List接口 允許重復(fù)元素,元素有索引序號(hào),并按放入元素的次序編號(hào)
? ArrayList 線性表結(jié)構(gòu),查找快,增刪慢
? LinkedList 鏈表結(jié)構(gòu),查找慢,增刪快
? Vector 同步,查找、增刪性能都不高。
? Set接口 不允許重復(fù)元素,元素?zé)o索引編號(hào)
? HashSet 元素散列存放
? TreeSet元素按自然順序排序(即從小到大排序)
? Map接口
? HashMap
? 允許null值和null鍵
? 不同步
? Hashtable <--Properties
? 不允許null值和null鍵
? 同步
? 內(nèi)部類
第四篇:《JAVA基礎(chǔ)》基本概念總結(jié)
《JAVA基礎(chǔ)》基本概念總結(jié)
1、在JAVA中所有萬物皆對(duì)象,所有的代碼都要寫在一個(gè)類中,在類中只能包含屬性(變量)和方法(函數(shù)),其它代碼必須寫在某一個(gè)方法中,方法與方法之間是平行的,不能在方法中定義方法。
2、如果一個(gè)類名使用了public修飾符,則包含該類的JAVA文件名必須該類名一樣,一個(gè)JAVA文件中只能有一個(gè)類前面可以用public修飾符。
3、類是客觀實(shí)體的抽象,包含屬性(該類的數(shù)據(jù)),和對(duì)屬性進(jìn)行操作的方法,為了避免用戶對(duì)類的屬性進(jìn)行誤操作,我們一般把類的屬性定義為私有的,并提供相應(yīng)的get與 set方法去引用和修改這些屬性。
4、類的屬性與方法可以使用static修飾符,用static修飾的屬性與方法是該類的所有對(duì)象所共享的,它們可以直接通過類名去引用,在靜態(tài)方法中只能引用該類的靜態(tài)變量與靜態(tài)方法,因?yàn)榉庆o態(tài)的屬性與方法在該類沒有被實(shí)例化之前是不存在的,即沒有相應(yīng)的執(zhí)行空間,為了使用的方便,我們可以把不依賴于類的屬性(即在方法中不對(duì)類的屬性進(jìn)行操作)的方法定義為靜態(tài)的。
5、構(gòu)造函數(shù)是當(dāng)一個(gè)類被實(shí)例化時(shí)執(zhí)行的一段代碼,它決定了該類被實(shí)例化后的狀態(tài),其名稱與相應(yīng)的類名一樣,并且不寫返回值的類型,我們一般在構(gòu)造函數(shù)中對(duì)類的屬性進(jìn)行初始化。當(dāng)不寫構(gòu)造函數(shù)時(shí),系統(tǒng)會(huì)給我們提供一個(gè)不帶參數(shù)的空構(gòu)造函數(shù),如果我們寫了一個(gè)帶參的構(gòu)造函數(shù),系統(tǒng)就不再提供不帶參的構(gòu)造構(gòu)數(shù)了。
6、為了引用一個(gè)類中定義的非靜態(tài)屬性與方法,我們需要實(shí)例化一個(gè)該類的對(duì)象,通過該對(duì)象去引用相應(yīng)的方法。(這是我們實(shí)例化一個(gè)類的最直接的原因)
7、繼承可以實(shí)現(xiàn)代碼的復(fù)用,當(dāng)子類繼承了父類之后,子類就擁有了父類中定義的非私有屬性與方法。
8、子類對(duì)象可以直接賦值給父類變量,但賦值后就不能通過父類對(duì)象去引用在子類中定義的方法了。如果子類覆蓋了父類中的方法,則當(dāng)子類對(duì)象賦值給父類后,通過父類去引用該方法時(shí),執(zhí)行的是子類中該方法的代碼。
9、為了強(qiáng)制子類覆蓋父類中的某一方法,可以在父類中將該方法定義為抽象的,如果一個(gè)類中含有抽象方法,則該類必須被定義為抽象的,抽象類不能被實(shí)例化。
10、接口是一種特殊的抽象類,在接口中定義方法全是抽象的,它定義了一種上層規(guī)則或協(xié)議,使實(shí)現(xiàn)該接口的不同類之間可以交互。
11、接口與抽象類可以定義變量,可以作為函數(shù)的參數(shù),但傳遞給它的只能是實(shí)現(xiàn)該抽象類或接口中所有抽象方法的類的對(duì)象。
12、在JAVA中一個(gè)類一次只能繼承一個(gè)類,但可以實(shí)現(xiàn)多個(gè)接口,這是接口存在的一個(gè)非常重要的原因。
13、在程序中,有些代碼是不安全的,即在執(zhí)行的過程中有可能會(huì)產(chǎn)生錯(cuò)誤,為了處理這些錯(cuò)誤,在JAVA中引入了異常處理機(jī)制,異常的處理分為拋出(throws)和處理(try…catch..),我們一般在寫給其它地方用的方法中將有可能產(chǎn)生的異常拋出,而在main方法中,或?qū)嶋H使用時(shí)進(jìn)行處理。
14、異常是一種帶有強(qiáng)制性的業(yè)務(wù)規(guī)則,當(dāng)一個(gè)方法將異常拋出后,我們?cè)谑褂迷摲〞r(shí)就必須處理該異常,使用try…catch…可以將我們處理正常業(yè)務(wù)規(guī)則的代碼與處理錯(cuò)誤(即異常)的代碼分割開來,使程序的結(jié)構(gòu)更加清晰。寫在try語句中的代碼都是受保護(hù)的。
第五篇:JAVA基礎(chǔ)知識(shí)點(diǎn)總結(jié)
1)開發(fā)Java語言的公司? Sun(Sun Microsystems)太陽微電子公司開發(fā) 2)
Java的3個(gè)版本?
J2SE(Java2 Standard Edition)標(biāo)準(zhǔn)版
J2EE(Java 2 Platform,Enterprise Edition)企業(yè)版 J2ME(Java 2 Micro Edition)微小版
在5.0以后新版本中稱作:JavaSE JavaEE JavaME 3)
Java語言的幾個(gè)主要特點(diǎn)?平臺(tái)無關(guān)性:能運(yùn)行于不同的平臺(tái)上
安全性:去掉了指針操作,內(nèi)存由操作系統(tǒng)分配 面向?qū)ο螅豪妙愂钩绦蚋永诰S護(hù)
分布式:可以使用網(wǎng)絡(luò)文件和使用本機(jī)文件一樣容易 健壯性:檢查程序編譯和運(yùn)行的錯(cuò)誤 4)
Java的三大核心機(jī)制
虛擬機(jī)機(jī)制:利用虛擬機(jī)解釋字節(jié)碼執(zhí)行java程序?qū)崿F(xiàn)跨平臺(tái) 垃圾收集機(jī)制:自動(dòng)內(nèi)存回收
代碼安全性機(jī)制:加載代碼后校驗(yàn)代碼后再執(zhí)行代碼 第2章Java語言的開發(fā)環(huán)境 1)
JDK是什么?
JDK(Java Development Kit)Java開發(fā)工具包。包括了JRE,是開發(fā)Java的人員必備的開發(fā)運(yùn)行Java程序的工具。2)
JRE是什么?
JRE(Java Runtime Environment)Java運(yùn)行環(huán)境,運(yùn)行JAVA程序所必須的環(huán)境的集合,包含JVM標(biāo)準(zhǔn)實(shí)現(xiàn)及Java核心類庫。3)
JVM是什么?
JVM(Java Virtual Machine)Java虛擬機(jī),它是一個(gè)虛構(gòu)出來的計(jì)算機(jī),是通過在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來實(shí)現(xiàn)的。4)
安裝JDK的操作系統(tǒng)問題?
必須針對(duì)于不同的操作系統(tǒng)下載安裝不同的JDK,例如windows下安裝針對(duì)于windows的JDK,linux下安裝針對(duì)于linux的JDK。
5)需要配置的相關(guān)環(huán)境變量? path:用于搜索外部命令,例如編譯程序的javac命令,執(zhí)行程序的java命令
classpath:用于搜索類,即class文件,例如可以在不同的位置執(zhí)行類文件 6)
配置環(huán)境變量的方式? 有兩種:臨時(shí)配置和持久配置
臨時(shí)配置:在命令行下用set 變量名=變量值,僅在當(dāng)前命令行窗口有效
持久配置:在我的電腦——屬性中配置,持久有效 7)可以編寫Java程序的常見開發(fā)工具? 記事本,EditPlus,ULTRAEDIT,Eclipse,Jbuilder,NetBeans 8)
Java文件的類型?
有兩種:
擴(kuò)展名為java的文件:是Java源文件,屬于編譯之前的純文本文件,存儲(chǔ)java源代碼。
擴(kuò)展名為class的文件:是Java類文件,屬于編譯之后的二進(jìn)制文件,存儲(chǔ)字節(jié)碼。9)
Java的編譯運(yùn)行原理?
首先編寫java源文件,然后編譯成class類文件,然后通過虛擬機(jī)解釋成機(jī)器碼到硬件執(zhí)行。
10)Java是編譯型語言還是解釋型的語言?
既不是完全編譯型,也不是完全解釋型,是半編譯半解釋的。第3章Java程序的基本結(jié)構(gòu) 1)
Java語言區(qū)分大小寫嗎?
區(qū)分,不管是數(shù)據(jù)還是標(biāo)識(shí)符或者關(guān)鍵字都區(qū)分大小寫,例如public不能寫成Public,“abc”不能寫成“ABC”,int i不能寫成INT I等等。2)main方法是作什么用處的? 這是程序的入口方法,是由虛擬機(jī)自動(dòng)調(diào)用的。
3)語句必須用分號(hào)結(jié)束嗎? 必須的,但是代碼塊{}可以用分號(hào)結(jié)束,也可以不用分號(hào)結(jié)束
4)
Java中有幾種注釋,各自的功能
有三種:
單行注釋//:加在行首只能注釋一行 多行注釋/* */:注釋多行,但不能嵌套使用
文檔注釋/***/:用于生成HTML形式的文檔,需要配合javadoc命令實(shí)現(xiàn) 5)Java語言的數(shù)據(jù)類型是強(qiáng)類型還是弱類型? 是強(qiáng)類型,意味著每一個(gè)變量都必須明確聲明數(shù)據(jù)類型。6)
Java語言中數(shù)據(jù)類型的劃分?有什么區(qū)別? 分成基本類型和引用類型兩大類。
基本類型:有8種,只能存儲(chǔ)單一的值,不以對(duì)象的形式存在引用類型:除了基本類型之外其他的都是引用類型,能夠存儲(chǔ)復(fù)雜數(shù)據(jù)類型,以對(duì)象的形式存在 7)
基本類型都有哪8種類型? 布爾類型:boolean 占1字節(jié) 字符類型:char 占2字節(jié)
整型:byte 占1字節(jié) short 占2字節(jié) int 占4字節(jié) long 占8字節(jié)
浮點(diǎn)型:float 占4字節(jié)double 占8字節(jié) 8)
布爾值可不可以用0或者非0數(shù)代替?
不可以,布爾值只能是true和false,不能使用數(shù)字,這和C語言是不一樣的。9)
直接寫個(gè)整數(shù)10默認(rèn)是什么類型的?
整型的直接量例如10,100等默認(rèn)的數(shù)據(jù)類型都是int型 10)如何讓一個(gè)整型的直接量變成long型的? 在直接量后面加大寫L后者小寫l,例如10L 11)整型數(shù)據(jù)在程序中直接使用可以使用什么進(jìn)制? 10進(jìn)制,8進(jìn)制,16進(jìn)制,但不能使用二進(jìn)制 12)浮點(diǎn)運(yùn)算在Java中有沒有誤差? 有誤差,所以精密運(yùn)算請(qǐng)使用BigDecimal類 13)直接寫一個(gè)3.14的直接量是什么數(shù)據(jù)類型的?
是double型,如果想表示是float的3.14必須寫成3.14F或者3.14f,double型的3.14也可以寫成3.14D 14)char型采取的是什么類型的字符集?
是Unicode全球統(tǒng)一編碼,支持任何世界上官方的語言中的字符
15)常見的轉(zhuǎn)義字符有哪些? 轉(zhuǎn)義序列 名稱 b 退格 t 制表 n 換行 r
回車
” 雙引號(hào) ’ 單引號(hào) 反斜杠
16)常見的Unicode字符對(duì)應(yīng)的編碼?
大寫的A到Z是對(duì)應(yīng)65到90,小寫的a到z是對(duì)應(yīng)97到122,字符0到9是對(duì)應(yīng)48到57
17)空字符是不是用’’(兩個(gè)并列的單引號(hào))來表示? 不是,空字符用’u0000’來表示,兩個(gè)并列的單引號(hào)什么也不是。
18)點(diǎn),分號(hào),花括號(hào)的各自的作用?
點(diǎn)的作用有兩個(gè):一個(gè)是使用類或?qū)ο笾械某蓡T,用對(duì)象.成員,再一個(gè)就是包名和子包名之間的分隔符,例如頂層包名.子包名 分號(hào)的作用是表示語句結(jié)束 花括號(hào)的作用是代表一個(gè)語句塊
19)語句和關(guān)鍵字之間可以有任意的空白嗎? 可以的,例如System.out.println(100);就是正確的語句,但是關(guān)鍵字本身不能加空白或換行
20)標(biāo)識(shí)符是什么?
標(biāo)識(shí)符就是指在程序中給包,類,接口,方法,變量起的名字 21)標(biāo)識(shí)符有什么起名規(guī)則? 1. 應(yīng)以字母、下劃線、美元符開頭 2. 后跟字母、下劃線、美元符或數(shù)字 3. 不能用關(guān)鍵字和保留字
4. 嚴(yán)格區(qū)分大小寫 5. 名稱長(zhǎng)度沒有限制 22)中文的變量名可以嗎?
是可以的,例如 int 數(shù)字 = 10;這個(gè)語句是正確的。因?yàn)閖ava中采取Unicode字符集,所以任何的Unicode中的字符都可以作為標(biāo)識(shí)符的名稱,但考慮字符集的支持問題推薦還是使用英文字母命名。
23)關(guān)鍵字和保留字有區(qū)別嗎?
在1.5后沒有區(qū)別,都被稱作關(guān)鍵字,但是1.5之前認(rèn)為關(guān)鍵字是在Java中有特殊用途的不允許編程人員擅自改作其他用途,而保留字是在Java中沒有特殊用途但不允許編程人員擅自改作其他用途,按此說法goto和const應(yīng)該是此意義上的保留字。
24)true,false,null可以用作標(biāo)識(shí)符命名嗎?
不可以,這3個(gè)雖然不是關(guān)鍵字,但都是有特殊用途的值,也不能作為標(biāo)識(shí)符命名
25)一條聲明語句可以聲明多個(gè)變量嗎? 可以的,例如以下聲明都是正確的int i;int i,j;int i = 10,j;int i,j = 10;
int i = 10,j = 20;
26)變量在沒有賦值的情況下可以使用嗎?
不可以,變量沒有賦值使用會(huì)報(bào)出變量未初始化的編譯錯(cuò)誤。27)常量有什么特點(diǎn)?
在聲明變量的時(shí)候加上final修飾符即為常量,表示這個(gè)變量只能被賦一次值。
28)算數(shù)運(yùn)算符有哪些? 基本算數(shù)運(yùn)算符有+-* / % ++--
29)單目運(yùn)算符,雙目運(yùn)算符,三目運(yùn)算符都是什么意思? 其實(shí)也有叫一元運(yùn)算符,雙元操作符,三元操作符的,指的是
有幾個(gè)操作數(shù)形成一個(gè)完整表達(dá)式,例如++就是一個(gè)單目運(yùn)算符,只需要一個(gè)操作數(shù)就可以形成表達(dá)式,像i++,而+運(yùn)算符就是雙目運(yùn)算符,需要兩個(gè)操作數(shù)形成表達(dá)式,例如5 + 3,還有三目運(yùn)算符,例如5 > 3 ? 0 :-1
30)++和--放在前面和放在后面有什么區(qū)別?
如果是在一個(gè)表達(dá)式中,那++放后面表示先運(yùn)算表達(dá)式,然后再進(jìn)行自增運(yùn)算,如果在一個(gè)表達(dá)式中,++放前面,則表示先進(jìn)行自增運(yùn)算然后在運(yùn)算表達(dá)式。--同樣道理。例如: int i = 10;int j = i ++;//先進(jìn)行賦值運(yùn)算然后再進(jìn)行自增運(yùn)算j的結(jié)果是10
int i = 10;
int j = ++ i;//先進(jìn)行自增運(yùn)算然后再進(jìn)行賦值運(yùn)算
j的結(jié)果是11
31)-5 % 2等于幾,5 %-2等于幾?
-5 % 2等于-1,5%-2等于1,運(yùn)算得到是正數(shù)還是負(fù)數(shù)取決于第一個(gè)操作數(shù)的符號(hào) 32)5 / 2 結(jié)果是不是2.5?
不是,是2,因?yàn)?和2都是int類型,所以不可能得到double型的結(jié)果。
33)比較運(yùn)算符有哪些?
有><>=<===!= 六項(xiàng)基本比較運(yùn)算 34)任何數(shù)據(jù)類型都可以使用> < >= <=運(yùn)算符嗎?
不是所有數(shù)據(jù)類型,例如true>false這個(gè)表達(dá)式就是編譯錯(cuò)誤,布爾類型和引用類型的表達(dá)式只能用==和!=兩個(gè)比較運(yùn)算,例如”abc” <= ”xyz” 這個(gè)表達(dá)式也是編譯錯(cuò)誤的 35)’a’ > ’b’這個(gè)表達(dá)式編譯正確嗎?
編譯正確,’a’和’b’是字符類型,內(nèi)部用Unicode編碼表示的話a是97,b是98,所以實(shí)際上比較的是97>98,結(jié)果為false 36)邏輯運(yùn)算符有哪些?
有 &邏輯與,|邏輯或,!邏輯非,^ 異或,&& 短路與,||短路或
37)邏輯與,邏輯或和短路與,短路或有什么區(qū)別? 邏輯與和短路與的區(qū)別是: ?
如果是邏輯與&,不管第一個(gè)表達(dá)式是true還是false,都會(huì)執(zhí)行第二個(gè)表達(dá)式,例如a > b & x < y,即使a > b為false,也會(huì)執(zhí)行x > y ?
如果是短路與&&,如果第一個(gè)表達(dá)式為false,將不會(huì)執(zhí)行第二個(gè)表達(dá)式
例如a > b && x < y,如果a > b為false,就不會(huì)執(zhí)行x > y
以此類推,邏輯或和短路或的區(qū)別是:
? 如果是邏輯或|,不管第一個(gè)表達(dá)式是true還是false,都會(huì)執(zhí)行第二個(gè)表達(dá)式 ?
如果是短路或||,如果第一個(gè)表達(dá)式為true,將不會(huì)執(zhí)行
第二個(gè)表達(dá)式
38)與或非三個(gè)邏輯運(yùn)算符的優(yōu)先級(jí)是怎么排列的? “非”優(yōu)先級(jí)最高,“與”其次,“或”優(yōu)先級(jí)最低 39)原碼,反碼,補(bǔ)碼分別是什么意思? ?
原碼:將數(shù)字轉(zhuǎn)換為二進(jìn)制,第一位為符號(hào)位,正數(shù)為0,負(fù)數(shù)為1
例如:12的原碼是00001100-12的原碼是10001100 ?
反碼:正數(shù)的反碼和原碼相同,負(fù)數(shù)的反碼將原碼符號(hào)位之外的位逐位取反
例如:12的反碼是00001100-12的反碼是11110011 ?
補(bǔ)碼:正數(shù)的補(bǔ)碼和原碼相同,負(fù)數(shù)的補(bǔ)碼將反碼加1 例如:12的補(bǔ)碼是00001100-12的補(bǔ)碼是11110100 最后強(qiáng)調(diào)一點(diǎn),計(jì)算機(jī)存儲(chǔ)數(shù)據(jù)用補(bǔ)碼形式來存儲(chǔ)。40)位運(yùn)算符都有哪些?
&與 |或 ^異或 ~非 >>右移 <<左移 >>>無符號(hào)右移 41)1<<35怎么理解?
1是int類型是32位,所以需要把35%32=3,所以事實(shí)上是和執(zhí)行1<<3等價(jià)的42)數(shù)據(jù)類型轉(zhuǎn)換需要遵循什么原則?
小類型向大類型轉(zhuǎn)換,是自動(dòng)轉(zhuǎn)換的,或者說隱式轉(zhuǎn)換的 大類型向小類型轉(zhuǎn)換,是需要強(qiáng)制轉(zhuǎn)換的,或者說顯式轉(zhuǎn)換例如:byte b = 1;
short s = b;//自動(dòng)轉(zhuǎn)換
b =(byte)s;//強(qiáng)制轉(zhuǎn)換
43)byte b = 10這個(gè)語句是正確的,為什么10是int型比byte大還不需要強(qiáng)制轉(zhuǎn)換呢?
因?yàn)樵趈ava中做了特殊處理,其中規(guī)定byte,short,char類型可以直接賦予int類型的直接量,例如: byte b = 10;short s = 10;char c = 10;
以上賦值語句都是正確的。
但是不能超出超出類型的范圍,例如以下賦值就是錯(cuò)誤的: byte b = 128;
如果超出范圍,必須得作強(qiáng)制轉(zhuǎn)換,例如以下語句是正確的: byte b =(byte)128;
需要強(qiáng)調(diào)的是,必須是int類型的直接量,以下語句就是錯(cuò)誤的: byte b = 10L;
10L不是int類型的直接量。
44)byte b =(byte)300;強(qiáng)制轉(zhuǎn)換后的結(jié)果是44,是按照什么規(guī)律得出來的?
是先把300轉(zhuǎn)換成二進(jìn)制,然后根據(jù)byte類型的大小截取了后8個(gè)位
300的補(bǔ)碼是00000000 00000000 00000001 00101100
b的結(jié)果是:00000000 00000000 00000001 00101100 結(jié)果為44 45)byte b =(byte)true;這個(gè)轉(zhuǎn)換成立嗎?
不成立,布爾值和數(shù)字是不兼容的,不能作任何轉(zhuǎn)換。
46)int i =(int)“100”;這個(gè)轉(zhuǎn)換成立嗎?
不成立,引用類型和基本類型是不能直接強(qiáng)制轉(zhuǎn)換的,需要用包裝類的方法來轉(zhuǎn)換。
47)char型和short型哪個(gè)比較大?
不能說哪個(gè)大,哪個(gè)小,這兩個(gè)類型char的取值是從0~65535,而short類型的取值是-32768~32767,這個(gè)兩個(gè)類型之間的轉(zhuǎn)換都需要強(qiáng)制轉(zhuǎn)換。
48)字符串是不是基本類型?
不是,String是java.lang包中的一個(gè)類,是引用類型的,8種基本類型中沒有一個(gè)是String類型。49)空字符串用什么來表示?
用””(兩個(gè)并列的雙引號(hào))表示,代表0個(gè)長(zhǎng)度的字符串對(duì)象。50)String s = “”;和String s = null;有什么區(qū)別?
第一個(gè)表示s被賦值,指向了一個(gè)字符串對(duì)象,第二個(gè)表示s沒有指向任何對(duì)象實(shí)例,是真空
51)兩個(gè)字符串用什么運(yùn)算符可以連成一個(gè)字符串? 用+運(yùn)算符,例如”abc” + “xyz”最后的結(jié)果就是“abcxyz” 52)數(shù)學(xué)運(yùn)算符加法和字符串連接符都是+,怎么區(qū)分? 是通過運(yùn)算符兩邊的操作數(shù)來判斷的,如果兩邊的操作數(shù)都是數(shù)字型的基本類型,則進(jìn)行數(shù)學(xué)運(yùn)算,如果兩邊的操作數(shù)有一個(gè)是字符串,則把另一個(gè)操作數(shù)也轉(zhuǎn)換為則進(jìn)行字符串連接運(yùn)算。例如:+ 4 的結(jié)果是9 “5” + 4的結(jié)果是54
53)判斷字符串內(nèi)容相同用什么方法?
用equals方法判斷內(nèi)容相同,==只能判斷引用是否相同 54)提供用戶輸入使用哪個(gè)類 使用javav.util.Scanner類
55)if語句可以用if(-1)形式判斷嗎? 不可以,數(shù)字不能代替布爾值
56)if語句和循環(huán)語句的花括號(hào)什么時(shí)候可以省略?
當(dāng)執(zhí)行的語句只有一句的時(shí)候 57)switch語句有哪些規(guī)則?
表達(dá)式expr的返回值必須是下述幾種類型之一:int, byte, char, short或枚舉常量;
case子句中的值必須是常量,且所有case子句中的值應(yīng)是不同的,也必須是下述幾種類型之一:int, byte, char, short或枚舉常量
default子句是任選的;
break語句用來在執(zhí)行完一個(gè)case分支后使程序跳出switch語句塊;
58)對(duì)于退出循環(huán)break和continue有什么區(qū)別? break是退出整個(gè)循環(huán)
continue是退出當(dāng)前循環(huán)繼續(xù)下一次循環(huán) 59)聲明數(shù)組創(chuàng)建數(shù)組的方法? 以下聲明都是合法的: int [] a;int a[];String[] a;
以下創(chuàng)建數(shù)組對(duì)象都是合法的: int[] a = new int[3];int[] a = {1,2,3};int[] a = new int[] {1,2,3};
60)int[] x和String[] s這兩個(gè)數(shù)組對(duì)象,哪個(gè)是基本類型,哪個(gè)是引用類型?
兩個(gè)都是數(shù)組對(duì)象,都是引用類型的61)數(shù)組元素下標(biāo)最小是多少,最大是多少,超出范圍會(huì)怎么樣?
最小是0,最大是數(shù)組元素個(gè)數(shù)減一,超出范圍將會(huì)出現(xiàn)下標(biāo)越界異常
62)得到數(shù)組長(zhǎng)度用length屬性還是length()方法? 是length屬性,得到字符串長(zhǎng)度才有l(wèi)ength方法
63)聲明int[][] a = new int[3][],a是一個(gè)二維數(shù)組,a[0]本身
是什么類型的?
二維數(shù)組的元素都是一維數(shù)組,a[0]是int[]類型的 64)數(shù)組的大小一經(jīng)創(chuàng)建可不可以改變大小了? 不可以,數(shù)組是定長(zhǎng)的,一經(jīng)創(chuàng)建就不能再改變大小了 65)可以把2個(gè)int型,3個(gè)double型,4個(gè)String型的值放到一個(gè)數(shù)組中嗎?
不可以,數(shù)組的元素類型必須是相同類型的。66)java中的多維數(shù)組必須是要形成矩陣排列嗎? 不一定,也可以是不規(guī)則的。67)操作數(shù)組比較方便的實(shí)用類?
java.util.Arrays類提供了很多關(guān)于數(shù)組的實(shí)用方法。第4章對(duì)象和類 1)OOP是什么意思? Object Oriented Programming(面向?qū)ο缶幊?
2)
類和對(duì)象的區(qū)別?
類:對(duì)象的藍(lán)圖,生成對(duì)象的模板,是對(duì)一類事物的描述,是抽象的概念上的定義
對(duì)象:對(duì)象是實(shí)際存在的該類事物的每個(gè)個(gè)體,因而也稱為實(shí)例 3)
類之間的3種關(guān)系? 依賴關(guān)系(uses-a)聚集關(guān)系(has-a)繼承關(guān)系(is-a)4)
一個(gè)java源文件可以寫多個(gè)類嗎?
可以,但必須只能有一個(gè)公有類,并且文件名和公有類的類名相同。5)類中有哪些成員?
有屬性(數(shù)據(jù)域),方法,構(gòu)造器(構(gòu)造方法)
6)
構(gòu)造方法和普通方法的區(qū)別?
構(gòu)造方法沒有返回值,方法名必須和類名相同,需要用new語句調(diào)用構(gòu)造方法。7)
普通方法可不可以也類名作為方法名?
是可以的,因?yàn)檎{(diào)用普通方法的語法和調(diào)用構(gòu)造器的語法不一樣。8)
一個(gè)構(gòu)造器調(diào)用另外一個(gè)構(gòu)造器需要用什么語法? 用this()語法調(diào)用另外一個(gè)重載構(gòu)造器,需要注意的是調(diào)用語句必須是構(gòu)造器中的第一句 9)
什么時(shí)候虛擬機(jī)會(huì)自動(dòng)添加一個(gè)默認(rèn)構(gòu)造器?
當(dāng)類中沒有顯式定義任何構(gòu)造器的時(shí)候,虛擬機(jī)會(huì)自動(dòng)添加一個(gè)無參的構(gòu)造器
10)實(shí)例成員和靜態(tài)成員的區(qū)別?
實(shí)例成員:是屬于對(duì)象實(shí)例的,用對(duì)象.成員名稱語法調(diào)用 靜態(tài)成員:和對(duì)象實(shí)例無關(guān),是屬于類本身的,用類名.成員名稱語法調(diào)用
11)靜態(tài)初始化塊statci{}的執(zhí)行時(shí)機(jī)是什么時(shí)候? 在類被加載的時(shí)候,僅執(zhí)行一次。
12)靜態(tài)方法可不可以直接調(diào)用同一個(gè)類中的非靜態(tài)方法? 不可以,靜態(tài)方法不能直接調(diào)用一個(gè)非靜態(tài)成員,需要用對(duì)象調(diào)用。
13)包是什么?
包實(shí)際上就是物理上的文件夾,可以把類放到不同的包中。14)把一個(gè)類放到包中,需要在類中加上什么語句? 需要加上包聲明package語句,必須寫在源文件的第一句。15)什么時(shí)候需要導(dǎo)入類?用什么語句?
當(dāng)使用的類和當(dāng)前類并不在同一個(gè)包中的時(shí)候,用import語句導(dǎo)入。
16)默認(rèn)包中的類可以導(dǎo)入嗎?
不可以,不在默認(rèn)包中的類無法使用默認(rèn)包中的類。17)java中哪個(gè)包中的類是自動(dòng)導(dǎo)入的? java.lang包
18)什么叫做完整類名? 頂層包名.子包名.類名
19)靜態(tài)導(dǎo)入語句有什么作用?
在使用類中的靜態(tài)成員的時(shí)候前面不需要加類名前綴。
20)局部變量和全局變量的區(qū)別? 區(qū)別 局部變量 全局變量
聲明位置 方法或塊內(nèi)部 方法外類內(nèi)部 訪問權(quán)限修飾符 沒有訪問權(quán)限 有訪問權(quán)限
默認(rèn)值 沒有默認(rèn)值
有默認(rèn)值
使用形式 直接使用 對(duì)象調(diào)用
作用域
在方法或語句塊內(nèi)部 整個(gè)類
生命周期 進(jìn)入方法或語句塊創(chuàng)建退出方法或語句塊銷毀 隨著對(duì)象的創(chuàng)建而創(chuàng)建隨著對(duì)象的銷毀而銷毀
21)賦值語句賦給目標(biāo)的是值還是引用?
如果是基本類型則賦的是值本身,引用類型則賦的是引用地址 第5章繼承和多態(tài) 1)類的繼承是誰繼承誰?
是子類繼承了父類,子類也稱為派生類,父類也稱為超類或基
類 2)子類繼承了父類的什么東西?
子類可以繼承父類的數(shù)據(jù)域(屬性),方法,但構(gòu)造器不能繼
承 3)
私有成員能被子類繼承嗎?
能繼承,但是由于訪問權(quán)限的控制,在子類中不能直接使用父類的私有成員 4)
Object是什么類?
這個(gè)所有類的根類,任何類如果沒有寫顯式的繼承語句,默認(rèn)都是直接繼承Object類的 5)java中是單繼承還是多繼承?
是單繼承,一個(gè)子類只能有一個(gè)父類 6)
訪問權(quán)限修飾符有幾種,訪問的范圍又是多大? 有四種:
private:私用 只能在被類中被訪問 default:默認(rèn) 只能被同一個(gè)包中的類訪問
protected:受保護(hù)的 只能被同一個(gè)包中的類和不同包中的子類
訪問
public:公有 可以被任何類訪問 7)
覆蓋方法的規(guī)則有哪些?
子類覆蓋方法和父類被覆蓋方法的方法返回類型,方法名稱,參數(shù)列表必須相同
子類覆蓋方法的訪問權(quán)限必須大于等于父類的方法的訪問權(quán)限
方法覆蓋只能存在于子類和父類之間
子類覆蓋方法不能比父類被覆蓋方法拋出更多異常 8)
參數(shù)列表是否相同從哪幾方面看?
從三方面看:參數(shù)個(gè)數(shù),類型和順序,需要注意的是參數(shù)的名字不相同是無所謂的 9)
覆蓋方法的規(guī)則有哪些? 方法名相同
方法的參數(shù)類型,個(gè)數(shù),順序至少有一項(xiàng)不同 方法的返回類型和修飾符均不受限制
10)可變長(zhǎng)參數(shù)的聲明格式是什么?實(shí)際上是什么類型的? 類型 ? 變量,實(shí)際上是一個(gè)一維數(shù)組 11)this和super是作什么用處的?
this:本身代表當(dāng)前的對(duì)象引用,可以用this.成員名稱調(diào)用當(dāng)前對(duì)象的屬性和方法,如果屬性和局部變量重名,可以用this.屬性名和局部變量區(qū)分開。也可以用this()語法調(diào)用本類重載構(gòu)造器。
super:本事是一個(gè)特殊關(guān)鍵字,可以用super.成員名稱調(diào)用從父類繼承的屬性和方法,也可以用super()語法調(diào)用父類構(gòu)造器。
12)super代表子類中的父類對(duì)象引用嗎?
不,這個(gè)錯(cuò)誤的說法,super不代表任何對(duì)象引用,僅僅是一個(gè)關(guān)鍵字
13)什么時(shí)候子類構(gòu)造器會(huì)自動(dòng)調(diào)用父類無參構(gòu)造器? 當(dāng)子類構(gòu)造器中沒有任何顯式構(gòu)造器調(diào)用的時(shí)候,即既沒有this()調(diào)用也沒有super()調(diào)用的時(shí)候
14)一個(gè)父類類型的引用變量可以引用一個(gè)子類的實(shí)例嗎? 可以,這個(gè)引用變量是一個(gè)多態(tài)對(duì)象 15)多態(tài)對(duì)象有什么特點(diǎn)?
多態(tài)對(duì)象只能使用父類的成員,但如果多態(tài)對(duì)象使用了被子類覆蓋的方法,則會(huì)動(dòng)態(tài)綁定使用子類的成員,稱為虛擬方法調(diào)用
16)引用類型之間的類型轉(zhuǎn)換需要遵循哪些規(guī)則? 自動(dòng)轉(zhuǎn)換:從子類到父類的類型可以自動(dòng)轉(zhuǎn)換 強(qiáng)制轉(zhuǎn)換:從父類到子類的類型要強(qiáng)制轉(zhuǎn)換 無繼承關(guān)系的類型轉(zhuǎn)換是非法的 17)instanceof操作符是作什么用處的?
可以判斷一個(gè)對(duì)象的類型是否是某一個(gè)類的類型或子類,也可以判斷這個(gè)對(duì)象的類型是否是一個(gè)接口的實(shí)現(xiàn)類 18)toString方法什么時(shí)候會(huì)自動(dòng)被調(diào)用?
在打印語句中傳入引用類型的對(duì)象或者對(duì)象和字符串作連接時(shí)
19)默認(rèn)的equals方法實(shí)現(xiàn)的是比較內(nèi)容還是比較引用地址?
在Object中是比較引用地址。
20)覆蓋equals方法和hashCode方法有什么規(guī)則? 必須保證當(dāng)兩個(gè)對(duì)象equals比較為true的時(shí)候,返回的hashCode相同,當(dāng)比較為false的時(shí)候,返回的hashCode不同21)java中有幾個(gè)包裝類?
有8個(gè)包裝類,正好對(duì)應(yīng)8種基本數(shù)據(jù)類型。
分別是:Boolean Byte Short Integer Long Character Float Double 22)裝箱和拆箱分別是什么意思?
裝箱指的是把基本類型包裝成包裝類的引用類型 拆箱指的是把包裝類形式的引用類型轉(zhuǎn)換為基本類型 例如:
Integer objInt = new Integer(10);//裝箱
int i = objInt.intValue();
//拆箱
23)JDK1.4和1.5的裝箱和拆箱有什么區(qū)別?
自動(dòng)拆裝箱,例如: Integer intObj = 10;//自動(dòng)裝箱 int i = intObj + 5;//自動(dòng)拆箱
24)final修飾符如何使用,使用了final修飾符有什么特點(diǎn)? final修飾符可以修飾類,方法,變量 final類為最終類,不能被子類繼承 final方法為最終方法,不能被子類覆蓋 final變量為常量,只能賦一次值
25)abstract修飾符如何使用,使用了abstract修飾符有什么特點(diǎn)?
abstract修飾符可以修飾類和方法 abstract類為抽象類,是不能創(chuàng)建對(duì)象的abstract方法為抽象方法,只有方法的聲明,沒有具體的實(shí)現(xiàn) 需要注意的是:
有抽象方法的類一定是抽象類 抽象類不一定有抽象方法
抽象類也有構(gòu)造器,但不能創(chuàng)建對(duì)象實(shí)例 26)abstract不能和哪些修飾符配合使用? 不能和private,static,final一起使用 27)可以在非抽象方法中調(diào)用抽象方法嗎? 可以,模板方法設(shè)計(jì)模式就是典型的這種調(diào)用 第6章 泛型程序設(shè)計(jì) 1)泛型的特點(diǎn)是什么? 主要特點(diǎn)是類型參數(shù)化,后期綁定數(shù)據(jù)類型 2)泛型支持基本類型嗎?
不支持,只支持引用類型 3)如果沒有傳入類型參數(shù),默認(rèn)是什么類型? 默認(rèn)是Object類型
4)泛型方法有什么特點(diǎn)?
將泛型參數(shù)聲明在方法中,調(diào)用方法的時(shí)候綁定泛型 5)
泛型類聲明泛型參數(shù)的時(shí)候,
么意思?
表示綁定的類型必須是A類型后者是A類型的子類或?qū)崿F(xiàn)類 第7章 接口和內(nèi)部類
1)聲明一個(gè)接口的關(guān)鍵字是什么? interface關(guān)鍵字
2)
接口中的成員有什么特點(diǎn)?
數(shù)據(jù)域必須是(public static final修飾)公有靜態(tài)常量 方法必須是(public abstract修飾)公有抽象 沒有構(gòu)造方法 3)接口能創(chuàng)建對(duì)象實(shí)例嗎? 不能,接口沒有構(gòu)造器,不能創(chuàng)建對(duì)象
4)
接口和類的關(guān)系?
接口和類之間是實(shí)現(xiàn)關(guān)系,一個(gè)類用implements語句實(shí)現(xiàn)了某接口,這個(gè)類被稱為接口的實(shí)現(xiàn)類,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,一個(gè)類實(shí)現(xiàn)了某接口,必須覆蓋這個(gè)接口中的所以方法,否則這個(gè)類必須是個(gè)抽象類 5)
接口和接口的關(guān)系?
接口和接口之間是繼承關(guān)系,一個(gè)接口用extends繼承另外一個(gè)接口,稱為這個(gè)接口的子接口。一個(gè)接口可以繼承多個(gè)父接口 6)
內(nèi)部類如何定義?
一個(gè)類聲明在另一個(gè)類的里面,這個(gè)類就被稱為內(nèi)部類,而外面的類被稱為外部類 7)
內(nèi)部類可以分成幾種?
實(shí)例內(nèi)部類:聲明在方法外邊沒有static修飾符 靜態(tài)內(nèi)部類:聲明在方法外邊有static修飾符 局部?jī)?nèi)部類:聲明在方法里邊 8)
如何創(chuàng)建實(shí)例內(nèi)部類的對(duì)象實(shí)例? 需要用外部類的對(duì)象來創(chuàng)建 例如: class A {class B {
}
}
如果像創(chuàng)建B類的實(shí)例,則必須用以下語句: A a = new A();A.B b = a.new B();9)
如何在實(shí)例內(nèi)部類中訪問外部類的成員?
在實(shí)例內(nèi)部類中可以直接使用外部類的成員,不需要?jiǎng)?chuàng)建外部類的對(duì)象實(shí)例,但是如果在內(nèi)部類中的成員名稱屏蔽隱藏了外部類的成員(即外部類和內(nèi)部類的成員名相同),則需要用“外部類名.this.成員名”訪問外部類成員 第8章異常處理
1)異常的對(duì)象的根類是哪個(gè)類? 是Throwable類
2)
Throwable類有哪兩個(gè)分支?
分成Error類和Excepion類兩個(gè)分支 Error類表示嚴(yán)重錯(cuò)誤
Exception類表示可以在程序中處理的錯(cuò)誤 3)
Exception類有哪兩個(gè)分支?
分成運(yùn)行時(shí)異常和非運(yùn)行時(shí)異常(已檢查異常)運(yùn)行時(shí)異常編譯不檢查,在運(yùn)行時(shí)才會(huì)發(fā)生異常
已檢查異常編譯時(shí)就會(huì)作檢查,不處理異常則通不過編譯 4)如果在try塊中發(fā)生異常,那么程序?qū)?huì)跳轉(zhuǎn)到哪? 會(huì)跳轉(zhuǎn)到catch語句塊 5)catch語句可以用父類類型捕獲子類異常嗎? 因?yàn)橛卸鄳B(tài)特點(diǎn),是可以的6)處理異常代碼finally語句會(huì)在什么時(shí)候執(zhí)行? finally代碼在任何時(shí)候都會(huì)執(zhí)行,不管有沒有發(fā)生異常。7)
如何聲明已檢查異常,由誰來處理這個(gè)異常? 用throws語句來聲明一個(gè)已檢查異常,由方法的調(diào)用者來處理這個(gè)異常 8)
如何拋出一個(gè)異常? 用throw語句拋出
9)如何創(chuàng)建一個(gè)自定義的異常類? 創(chuàng)建一個(gè)類,只要讓它繼承任何一個(gè)現(xiàn)有的異常類就可以了 10)覆蓋方法對(duì)于異常有什么要求? 覆蓋方法不能比父類方法拋出更多異常 第9章反射,代理,標(biāo)注
1)
獲得一個(gè)類型的Class對(duì)象有哪幾種途徑?
方法1:對(duì)象.getClass()方法2:類型名.class 方法3:Class.forName()2)
反射相關(guān)的類型都有哪些? Class 代表一個(gè)運(yùn)行時(shí)類 Field 代表一個(gè)類的屬性 Method 代表一個(gè)類的方法 Constructor 代筆一個(gè)類的構(gòu)造器 3)
如何聲明一個(gè)自定義標(biāo)注? [<修飾符>] @interface <標(biāo)注名>{ 返回值方法名稱(); 返回值方法名稱(); ?? } 例如:
public @interface MyComment { int id();String info();} 4)
java有幾個(gè)內(nèi)置標(biāo)注? 有3個(gè)
@Override——用于修飾此方法覆蓋了父類的方法,而非重載。@Deprecated——用于修飾已經(jīng)過時(shí)的方法。
@SuppressWarnings——用于通知Java編譯器禁止特定的警告。第10章 java常用類 1)
字符串String是可變類還是不可變類?
是不可變類,一經(jīng)創(chuàng)建就不能修改其內(nèi)容了 2)
字符串的常用方法有哪些? charAt方法:可以返回指定位置的字符 substring方法:可以截取子字符串 length方法:返回字符串長(zhǎng)度 indexOf方法:查找子串的位置 lastIndexOf方法:反向搜索字串的位置 replaceAll方法:替換字符串 split方法:分解字符串
toLowerCase, toUpperCase方法:字符串大小寫轉(zhuǎn)換 3)StringBuffer類和String類有什么區(qū)別? StringBuffer是可變類,String是不可變類
4)StringBuffer類和StringBuilder類有什么區(qū)別? StringBuffer類是線程安全的,StringBuilder類是線程不安全的5)Math類主要提供了哪些方法?
Math類提供了大量的和數(shù)學(xué)運(yùn)算相關(guān)的靜態(tài)方法 6)Set集合和List集合共同的父接口是什么? 是Collection集合7)
Set集合和List集合有什么區(qū)別? Set: Collection的子接口,不記錄元素的保存順序,且不允許有重復(fù)元素
List: Collection的子接口,記錄元素的保存順序,且允許有重復(fù)元素 8)
ArrayList和LinkedList有什么不同?
ArrayList 的內(nèi)部實(shí)現(xiàn)是基于內(nèi)部數(shù)組Object[],所以從概念上
講它更像數(shù)組
LinkedList的內(nèi)部實(shí)現(xiàn)是基于一組連接的記錄,所以它更象一個(gè)鏈表 結(jié)構(gòu),所以它們?cè)谛阅苌嫌泻艽蟮牟顒e。ArrayList 隨機(jī)訪問比較塊,但插入和刪除元素比較慢 LinkedList但插入和刪除元素比較快,但隨機(jī)訪問比較慢 9)
HashTable和HashMap有什么不同?
HashTable是線程安全的,HashMap是線程不安全的10)Vector和ArrayList有什么不同? Vector是線程安全的ArrayList是線程不安全的 第11章 IO流 1)
流分成哪兩類?
按照單位劃分分成字節(jié)流和字符流。按輸入輸出分成輸入流和輸出流 2)
和文件流相關(guān)的有那幾個(gè)類? FileInputStream文件輸入字節(jié)流 FileOutputStream文件輸出字節(jié)流 FileReader文件輸入字符流 FileWriter文件輸出字符流 3)
文件流操作應(yīng)該用字節(jié)流還是字符流? 如果是純文本文件應(yīng)該用字符流 如果是二進(jìn)制文件應(yīng)該用字節(jié)流 4)
文件操作用哪個(gè)類? 用java.io.File類 第12章 線程 1)
創(chuàng)建一個(gè)線程類的兩種方式? 繼承Thread類 實(shí)現(xiàn)Runnable接口 2)線程體應(yīng)該放在哪個(gè)方法里面? run方法 3)啟動(dòng)新的線程用什么方法?
用start方法
4)一個(gè)線程對(duì)象能夠用start多次啟動(dòng)嗎? 不可以,一個(gè)線程方法只能start一次
5)線程有哪幾種主要狀態(tài)? 有四種,分別是:新生狀態(tài),可運(yùn)行狀態(tài),阻塞狀態(tài),死亡狀
態(tài) 6)
線程的同步需要用什么方法? 舊的方法是用synchronized關(guān)鍵字
新的方法是用ReentrantLock類的lock和unlock方法