Java學(xué)習(xí)筆記1(基本程序設(shè)計(jì)結(jié)構(gòu))

1、Java語(yǔ)言特性

1.簡(jiǎn)單性

Java算是C++語(yǔ)法的一個(gè)“純凈”版本了,里沒有頭文件、指針運(yùn)算(甚至指針語(yǔ)法)、結(jié)構(gòu)、聯(lián)合、操作符重載、虛基類等。

2.面向?qū)ο笮裕ǚ庋b,繼承,多態(tài))

簡(jiǎn)單的講,面向?qū)ο笤O(shè)計(jì)是一種程序設(shè)計(jì)技術(shù)。它將重點(diǎn)放在數(shù)據(jù)(即對(duì)象)和對(duì)象的接口上。用木匠打一個(gè)比方:一個(gè)“面向?qū)ο蟆钡哪窘呈冀K首先關(guān)注的是所制作的椅子,其次才是所使用的工具和材料;而一個(gè)“非面向?qū)ο蟆钡哪窘持饕紤]的是所用的工具。

3.分布式

Java有一個(gè)豐富的例程庫(kù),用于處理像HTTP和FTP之類的TCP/IP協(xié)議。Java應(yīng)用程序能夠通過URL打開和訪問網(wǎng)絡(luò)上的對(duì)象,其邊便捷程度就好像訪問本地文件一樣。

4.健壯性(Java語(yǔ)言的強(qiáng)類型機(jī)制、異常處理、垃圾的自動(dòng)收集等)

Java非常強(qiáng)調(diào)進(jìn)行早期的問題檢測(cè)、后期動(dòng)態(tài)的(運(yùn)行時(shí))檢測(cè),以及消除容易出錯(cuò)的情況。Java與C/C++最大的不同在于Java采用的指針模型可以消除重寫內(nèi)存和損壞數(shù)據(jù)的可能性。

5.安全性

Java要適用于網(wǎng)絡(luò)/分布式環(huán)境。為了實(shí)現(xiàn)這個(gè)目標(biāo),安全性頗受重視。使用Java可以構(gòu)建防病毒、防篡改的系統(tǒng)。比如說運(yùn)行時(shí)堆棧溢出,這是蠕蟲和病毒常用的手段;破壞自己的進(jìn)程空間之外的內(nèi)存;未經(jīng)授權(quán)讀寫文件。

6.體系結(jié)構(gòu)中立

編譯器生成一個(gè)體系結(jié)構(gòu)中立的目標(biāo)文件格式,這是一種編譯過的代碼,只要有Java運(yùn)行時(shí)系統(tǒng),這些編譯后的代碼可以在許多處理器上運(yùn)行。Java編譯器通過生成與特定的計(jì)算機(jī)體系結(jié)構(gòu)無關(guān)的字節(jié)碼指令來實(shí)現(xiàn)這一特性。

7.可移植性

與C和C++不同,Java規(guī)范中沒有“依賴具體實(shí)現(xiàn)”的地方?;緮?shù)據(jù)類型的大小以及有關(guān)運(yùn)算的行為都有明確的說明。

8.解釋型

Java解釋器可以在任何移植了解釋器的機(jī)器上直接執(zhí)行Java字節(jié)碼。由于連接是一個(gè)增量式且輕量級(jí)的過程,所以開發(fā)過程也變得更加快捷,更加具有探索性。

9.多線程(多線程機(jī)制使應(yīng)用程序在同一時(shí)間并行執(zhí)行多項(xiàng)任)

Java 給多線程編程提供了內(nèi)置的支持。 一條線程指的是進(jìn)程中一個(gè)單一順序的控制流,一個(gè)進(jìn)程中可以并發(fā)多個(gè)線程,每條線程并行執(zhí)行不同的任務(wù)。

2、JVM、JRE和JDK的關(guān)系

JVM:

Java Virtual Machine是Java虛擬機(jī),Java程序需要運(yùn)行在虛擬機(jī)上,不同的平臺(tái)有自己的虛擬機(jī),因此Java語(yǔ)言可以實(shí)現(xiàn)跨平臺(tái)。

JRE:

Java Runtime Environment包括Java虛擬機(jī)和Java程序所需的核心類庫(kù)等。核心類庫(kù)主要是java.lang包:包含了運(yùn)行Java程序必不可少的系統(tǒng)類,如基本數(shù)據(jù)類型、基本數(shù)學(xué)函數(shù)、字符串處理、線程、異常處理類等,系統(tǒng)缺省加載這個(gè)包

如果想要運(yùn)行一個(gè)開發(fā)好的Java程序,計(jì)算機(jī)中只需要安裝JRE即可。

JDK:

Java Development Kit是提供給Java開發(fā)人員使用的,其中包含了Java的開發(fā)工具,也包括了JRE。所以安裝了JDK,就無需再單獨(dú)安裝JRE了。其中的開發(fā)工具:編譯工具(javac.exe),打包工具(jar.exe)等

JVM&JRE&JDK關(guān)系圖

Java基本數(shù)據(jù)類型圖


當(dāng)用一個(gè)二元運(yùn)算符連接兩個(gè)值時(shí),(如a+b,a為整型,b為浮點(diǎn)型),首先會(huì)將兩個(gè)操作數(shù)轉(zhuǎn)換為同一種類型,然后再進(jìn)行計(jì)算:

  • 如果a和b中有一個(gè)操作數(shù)是double類型,另一個(gè)數(shù)也會(huì)轉(zhuǎn)換為double類型
  • 否則,如果其中一個(gè)數(shù)是float類型,另一個(gè)轉(zhuǎn)換為float類型
  • 否則,如果其中一個(gè)數(shù)是long類型,另一個(gè)轉(zhuǎn)換為long類型
  • 否則,兩個(gè)數(shù)都會(huì)被轉(zhuǎn)換為int類型

強(qiáng)制類型轉(zhuǎn)換

    double x = 9.997;
    int nx = (int) x;

其強(qiáng)制類型轉(zhuǎn)換結(jié)果為9
注意:如果試圖將一個(gè)數(shù)值轉(zhuǎn)換為另一種類型,而又超出了目標(biāo)類型的表示范圍,結(jié)果就會(huì)截?cái)酁橐粋€(gè)完全不同的值。

String類型

  • String類的substring方法可以從一個(gè)較大的字符串提取出一個(gè)子串:
  String a = "hello";
  String s = a.substring(0,3);

上述代碼輸出是一個(gè)由"hel"組成的字符串。

  • Java語(yǔ)言允許使用+號(hào)拼接兩個(gè)字符串
  String a = "deleted" + abc;

檢測(cè)字符串是否相等

  • 可以用equals方法檢測(cè)兩個(gè)字符串是否相等:
 String s = "hell";
 String a = "hell";
 s.equals(a)
  • 如果想不區(qū)分大小寫檢驗(yàn)兩個(gè)字符串是否相等,可以用equalsIgnoreCase方法:
  "Hell".equalsIgnoreCase("hello");
注意?。∫欢ú灰?=運(yùn)算符檢測(cè)兩個(gè)字符串是否相等,這個(gè)字符串只能夠確定兩個(gè)字符串是否放在同一個(gè)位置上。

空串與NULL串

  • 空串" "是長(zhǎng)度為0的字符串,可以用if(str.length == 0)檢驗(yàn)一個(gè)字符串是否為空串
  • 檢驗(yàn)是否為NULL串可以使用if(str == null)來判斷,如果在一個(gè)null值上調(diào)用方法會(huì)出現(xiàn)錯(cuò)誤

輸入與輸出

輸入:Scaner類定義在java.util包中

Scanner in = new Scanner(System.in);
String name = in.nextLine(); //讀取一行輸入
String nickname = in.next() //讀取一個(gè)單詞,以空白符作為分隔符
int age = in.nextInt(); //讀取一個(gè)整數(shù)

輸出:

System.out.println(); //標(biāo)準(zhǔn)輸出
System.out.print(); //格式化輸出

文件的輸入與輸出

  • 想要讀取一個(gè)文件,需要構(gòu)造一個(gè)Scanner對(duì)象:
 Scanner in = new Scanner(Path.of("myfile.txt"),StandardCharsets.UTF_8);

不能讀取一個(gè)不存在的文件

  • 想要寫入文件,就需要構(gòu)造一個(gè)PrintWriter對(duì)象:
  PrintWriter out = new PrintWriter("myfile.txt",StandardCharsets.UTF_8);

如果文件不存在被寫入文件則創(chuàng)建該文件

數(shù)組的打印和排序

  • 利用Arrays.toString(a)來打印出數(shù)組a里面的元素
  • 利用Arrays.sort(a)對(duì)數(shù)值型數(shù)組a進(jìn)行排序
最后編輯于
?著作權(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ù)。

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