Java基礎(chǔ)(變量、運(yùn)算符、格式、包、集成)

1、Java的整型常量默認(rèn)為int型,并且在聲明long類型常量后要加上“L\l”。

2、Java的浮點(diǎn)類型,也是有固定的表示范圍和字段長(zhǎng)度。浮點(diǎn)類型默認(rèn)為double類型,聲明float常量必須要在數(shù)字后面加上f,否則出錯(cuò)。
浮點(diǎn)數(shù)在計(jì)算機(jī)上表達(dá)是有誤差的,在計(jì)算機(jī)上是離散的,而在現(xiàn)實(shí)上是連續(xù)的。一般比較的話,都是不直接比較,通過(guò)減去浮點(diǎn)數(shù)來(lái)判斷。

3、基礎(chǔ)數(shù)據(jù)類型的轉(zhuǎn)換
(1)boolean類型是不能被轉(zhuǎn)換和轉(zhuǎn)換的。
(2)字符型和整型、浮點(diǎn)型在混合運(yùn)算中可以相互轉(zhuǎn)化。容量小的類型轉(zhuǎn)換為容量大的類型。byte、short、char->int->long->float->double;byte、char、short不會(huì)互相轉(zhuǎn)換。
多種類型進(jìn)行運(yùn)算時(shí),系統(tǒng)自動(dòng)將他們變?yōu)槿萘孔? 大的類型來(lái)運(yùn)算。
容量大的轉(zhuǎn)換為容量小的要加強(qiáng)制轉(zhuǎn)化。但是一般會(huì)有精度的損失。

4、程序的格式(important)
要讓別人看得舒服,看得清楚。
(1)大括號(hào)對(duì)齊
(2)遇見大括號(hào)要縮進(jìn)(用tab縮進(jìn))
(3)程序塊之間要加空行
(4)并排語(yǔ)句間要加空格(比如for語(yǔ)句)
(5)運(yùn)算符兩側(cè)加空格
(6){}這些空號(hào)最好有空格
(7)要成對(duì)編程

5、運(yùn)算符
(1)++:先把i1做賦值運(yùn)算后再把i1進(jìn)行自加。()運(yùn)算沒(méi)有影響。
k=i++等價(jià)于k=(i++)

圖片.png

(2)“+”運(yùn)算只要有一個(gè)有string類型的話。系統(tǒng)會(huì)另外把操作數(shù)變?yōu)樽址愋偷?。特別地,當(dāng)運(yùn)行打印的時(shí)候,無(wú)論什么類型都自動(dòng)轉(zhuǎn)為字符串進(jìn)行打印。例如

int c=8;
system.out,println(c);```

5、if、for語(yǔ)句

6、對(duì)象
對(duì)象可以看成是靜態(tài)屬性(成員變量)和動(dòng)態(tài)屬性(方法)的封裝體。
類是用來(lái)創(chuàng)建同一類型的對(duì)象的模板。在該類中定義了該類對(duì)象所應(yīng)具有的成員變量以及方法。
(reusable、extensibility)
成員變量默認(rèn)初始有值的,局部變量是沒(méi)有初始化的。
所以使用變量前最好要初始化。
成員變量在類體定義有效。(記住所有的變量在定義的大括號(hào)里面有效)
Java除了基本類型之外的類型都是引用類型。

7、關(guān)于程序的執(zhí)行
(1)程序存儲(chǔ)在硬盤里-->經(jīng)過(guò)Load到內(nèi)存區(qū)
(2)在內(nèi)存中的代碼-->找到main方法開始執(zhí)行(可能會(huì)調(diào)用系統(tǒng)代碼)
(3)在執(zhí)行過(guò)程中有一些內(nèi)存管理
比如把new出來(lái)的東西存放在heap區(qū)
把局部變量存放在stack區(qū)
把靜態(tài)變量、字符串常量存放在data segment
把代碼存放在code segment

8、關(guān)于引用類型變量的內(nèi)存
引用類型一般占用兩個(gè)內(nèi)存空間
(1)當(dāng)定義一個(gè)引用類型變量時(shí),比如String s;此時(shí)申請(qǐng)了一小塊內(nèi)存,且值為null;
(2)當(dāng)s= new String(“hello world”)時(shí)此時(shí)那個(gè)值為null的內(nèi)存被賦值,且通過(guò)該值指向找到s對(duì)象的內(nèi)存空間。且指向的內(nèi)存空間是堆內(nèi)存(heap seg)。即對(duì)象都是存放在stack里,當(dāng)系統(tǒng)覺得該對(duì)象不會(huì)再被使用了,系統(tǒng)就會(huì)對(duì)該對(duì)象進(jìn)行回收。
java的引用概念就相當(dāng)于c的指針。
(3)方法是只有調(diào)用的時(shí)候才會(huì)占用內(nèi)存。
(4)同一類的*每個(gè)對(duì)象有不同的成員變量存儲(chǔ)空間*。
(5)同一類的*每個(gè)對(duì)象共享該類的方法*。非靜態(tài)方法是針對(duì)每個(gè)對(duì)象進(jìn)行調(diào)用的。就是說(shuō)要通過(guò)對(duì)象的.操作才能被使用。

9、構(gòu)造函數(shù)
系統(tǒng)默認(rèn)有構(gòu)造函數(shù),但是只要已經(jīng)定義了系統(tǒng)就不會(huì)自動(dòng)添加了、
構(gòu)造方法沒(méi)有返回值且與類名完全一樣。
例如:
```java
Public Person {
  private int id;
  private int age;
  Person(int _id, int _age) {
    id=_id;
    age=_age;
   }
}

10、關(guān)于Java約定俗成的規(guī)則
(1)類名的首字母要大寫
(2)變量名和方法名首字母要小寫
(3)運(yùn)用駝峰表示,后面的每個(gè)單詞都應(yīng)該大寫

11、重載函數(shù)
名字一樣,參數(shù)不一樣(含類型不一樣,參數(shù)個(gè)數(shù)不一樣)的方法們就叫重載。

12、this關(guān)鍵字
(1)在類的方法定義中使用this關(guān)鍵字代表使用該對(duì)象的引用。
this指向?qū)ο笞约骸?br> (2)必須指出使用當(dāng)前使用方法的對(duì)象是誰(shuí)必須使用this。
(3)解決類方法的參數(shù)與成員變量重名的問(wèn)題。

13、static關(guān)鍵字
(1)非static成員變量是每個(gè)類都有一份的,但是static成員變量是該類的各個(gè)對(duì)象共享一份的。
(2)static變量存放在data seg(數(shù)據(jù)區(qū))。
注:字符串常量也是引用對(duì)象,并且存儲(chǔ)在data seg(數(shù)據(jù)區(qū)里面)。
(3)任何一個(gè)對(duì)象都可以訪問(wèn)靜態(tài)成員變量。也可以通過(guò)類名加.運(yùn)算訪問(wèn)。
只要通過(guò)類名加.運(yùn)算訪問(wèn)的變量的變量都是靜態(tài)成員變量。
(4)靜態(tài)的值的作用可以是用來(lái)計(jì)數(shù)用。

14、package和import語(yǔ)句
為了管理大型軟件系統(tǒng)眾多類的命名沖突問(wèn)題,java使用包(package)機(jī)制,提供類的多重類命名空間。
(1)package必須定義在程序的第一行
(2)格式為:package pk1[pk2][pk3]
(3)約定俗成的命名規(guī)范是用公司域名命名package
(4)package里面的.代表一個(gè)層次,即一個(gè)文件夾。
(5)如果沒(méi)有import時(shí),則在使用時(shí)要加上包的路徑
(6)查看系統(tǒng)自帶的包的路徑
【安裝的盤符】D:\jdk\jre\lib\rt.jar
常用的包
java.lang的類(比如String、Math、Integer、System、Thread)這些可以不包含直接使用。
java.awt——包含了抽象窗口的工具集的多個(gè)類,用于構(gòu)建和管理圖形界面。
java.applet——包含applet運(yùn)行所需的一些類。
java.net——包含了與網(wǎng)絡(luò)相關(guān)的類。
java.io包含了提供多種輸入、輸出功能的類。
java.util包含了一些實(shí)用的工具類,如定義系統(tǒng)特性,使用與日期相關(guān)的函數(shù)。
(7)把自己的類打包成一個(gè)jar包直接cd到目錄后,使用命令:jar
jar -cvf jar_name.jar .(指把目錄的所有文件打包成jar包)
【聽得不太懂得視頻:21~23,講如何使用自己的jar包,用到再重新看】

15、類的繼承
(1)語(yǔ)義上有is-a的關(guān)系。
(2)java只支持單繼承。
(3)一個(gè)子類 只能有一個(gè)基類。通過(guò)繼承,子類自動(dòng)擁有了基類(superclass\parentclass)
(4)子類對(duì)象包含父類對(duì)象。
(5)關(guān)于父類中的訪問(wèn)權(quán)限問(wèn)題
private只有父類自己可以用(即類內(nèi)部)。
public所有地方都可以使用。
protecte只要是父類、子類或者同一個(gè)包下都可以使用。
default的話就只有父類以及和父類在同個(gè)包下的都可以使用。
注:對(duì)于class的修飾符只有public、或者default可以用。
public 類可以在任何地方使用,而default只能在同一個(gè)包內(nèi)使用。

16、接口
(1)接口是抽象方法和常量定義的集合。
(2)從本質(zhì)上講,接口是一種特殊的抽象 類,這種抽象類只包含常量和
方法的定義,而沒(méi)有變量和方法的實(shí)現(xiàn)、
(3)抽象類有關(guān)鍵詞abstract修飾而interface里面的方法沒(méi)有abstract。
interface里面的變量都是public static final類型的。

public interface runner {
    public static final int id = 1;
    
    public void start();
    public void run();
    public void stop();
}

(4)多個(gè)無(wú)關(guān)的類可以實(shí)現(xiàn)同一個(gè)接口。
(5)一個(gè)類可以實(shí)現(xiàn)多個(gè)無(wú)關(guān)接口。
(6)與繼承關(guān)系類似,接口與實(shí)現(xiàn)類之間存在多態(tài)的關(guān)系。
(7)語(yǔ)法格式

<modifier> class <name> [extends <superclass] [implements <interface] [,interface]* {
    <declarations>*
}

17、 異常處理
異常指的是運(yùn)行期出現(xiàn)的錯(cuò)誤。
java異常是指在程序運(yùn)行的過(guò)程中發(fā)生的一些異常事件(如0溢出、數(shù)組下標(biāo)越界、所要讀取的文件不存在等)
解決時(shí)觀察行號(hào)和錯(cuò)誤的名字最重要。敢于調(diào)試。
(1)設(shè)計(jì)良好的程序應(yīng)該在異常發(fā)生時(shí)提供處理這些錯(cuò)誤的方法,使得程序不會(huì)因?yàn)楫惓5陌l(fā)生而阻斷或產(chǎn)生不可預(yù)見的結(jié)果。
(2)java程序在執(zhí)行的過(guò)程中如出現(xiàn)異常事件,可以生成一個(gè)異常類對(duì)象,該異常對(duì)象封裝了異常事件的信息并將被提交給java運(yùn)行時(shí)系統(tǒng),這個(gè)過(guò)程稱為拋出(throw)異常。
(3)當(dāng)java運(yùn)行時(shí)系統(tǒng)接收到異常對(duì)象,會(huì)尋找
能夠處理這一異常的代碼并把當(dāng)前異常對(duì)象交給其處理,這一過(guò)程稱為捕獲異常。(catch)
(程序是調(diào)試出來(lái)的?。。?br> (4)異常的分類
它的根類是throwable。下一層是error和exception。e rror是虛擬機(jī)錯(cuò)誤,我們處理不了。其中exception是可以處理額。
exception下面還有一個(gè)runtimeexception。
總結(jié):
error:稱為錯(cuò)誤,有java虛擬機(jī)生成并拋出,包含動(dòng)態(tài)鏈接失敗,虛擬機(jī)錯(cuò)誤等,程序?qū)ζ洳蛔鎏幚怼?br> exception:所有異常類的父類,其子類對(duì)應(yīng)了各種各樣可能出現(xiàn)的異常事件,一般要用戶顯式的聲明或捕獲。
runtime Exception:一類特殊的異常,如被0整除、數(shù)組下標(biāo)超范圍等,其產(chǎn)生比較頻繁,處理比較麻煩,如果顯式的聲明或捕獲將會(huì)對(duì)程序的可讀性以及運(yùn)行效率影響很大。因此系統(tǒng)將自動(dòng)檢測(cè)并將它們交給缺省的異常處理程序(用戶可不必對(duì)其處理)

Finally子句
try代碼段包含可能產(chǎn)生例外的代碼。
try代碼段后跟有一個(gè)或多個(gè)catch代碼段。
每個(gè)catch代碼段聲明其能夠處理一種特定類型的異常并且提供處理的方法。
當(dāng)異常發(fā)生時(shí),程序會(huì)終止當(dāng)前的流程,根據(jù)獲取的異常的類型去執(zhí)行相應(yīng)的catch語(yǔ)句段。
其中finally語(yǔ)句段的代碼是無(wú)論如何都會(huì)被執(zhí)行的。
finally語(yǔ)句為異常處理提供一個(gè)統(tǒng)一的出口,使得在控制流程轉(zhuǎn)到程序的其它部分之前,能夠?qū)Τ绦虻臓顟B(tài)作統(tǒng)一的管理。
無(wú)論try所指定的程序塊是否拋出異常,finally所指定的代碼都要被執(zhí)行。
通常在finally語(yǔ)句中可以進(jìn)行資源的清除工作,例如:
關(guān)閉打開的文件
刪除臨時(shí)文件。
等等

其中對(duì)catch到的錯(cuò)誤可以用e.getMessage();
或者e.printStackTrace()來(lái)打印錯(cuò)誤信息。

關(guān)于異常的捕獲和處理
當(dāng)有method1和method2和method3,
method3有異常exception3,
method1調(diào)用了method2,method2調(diào)用了method3,并且 method1和2都throws了exception,method3 throws了exception并且在throw new exception("Error")做了處理。

聲明自己的異常類
1、繼承java.lang.Exception類聲明自己的異常類
2、在方法適當(dāng)?shù)奈恢蒙僧惓n惖膶?shí)例并用throw語(yǔ)句拋出
3、在方法的聲明部分用throws語(yǔ)句聲明該方法可能拋出的異常。

其中異常和重寫的關(guān)系
重寫時(shí)如果拋出異常的話必須拋出和父類一樣的異?;蛘卟粧伋霎惓?lái)重寫。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,728評(píng)論 18 399
  • (一)Java部分 1、列舉出JAVA中6個(gè)比較常用的包【天威誠(chéng)信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,265評(píng)論 0 62
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評(píng)論 19 139
  • 為了用光昨天擠出來(lái)沒(méi)有用的顏料,我也是拼了。
    雙人余君閱讀 210評(píng)論 0 4
  • 我坐在房間里,光腳踩在水泥地上,對(duì)著窗,卻看不到風(fēng)景。陽(yáng)光塞滿了整個(gè)房間,喉嚨里的聲音沖破唇齒的障礙,又被墻狠狠地...
    靈霜閱讀 223評(píng)論 0 1

友情鏈接更多精彩內(nèi)容