01-計(jì)算機(jī)、程序和Java概述
-
1.1 引言
- 該專題旨在學(xué)習(xí)如何通過(guò)編寫程序來(lái)解決問(wèn)題
-
1.2 什么是計(jì)算機(jī)
計(jì)算機(jī)是存儲(chǔ)和處理數(shù)據(jù)的電子設(shè)備。
計(jì)算機(jī)包括硬件和軟件兩部分。硬件指的是計(jì)算機(jī)中可見的物理部分,而軟件指的是提供不可見的指令,這些指令控制硬件并使得硬件完成特定的任務(wù)。一臺(tái)計(jì)算機(jī)是由以下幾個(gè)主要的硬件組件構(gòu)成的:
- 中央處理器
- 內(nèi)存(主存)
- 存儲(chǔ)設(shè)備(磁盤和光盤)
- 輸出設(shè)備(顯示器和打印機(jī))
- 輸入設(shè)備(鼠標(biāo)和鍵盤)
- 通信設(shè)備(調(diào)制解調(diào)器和網(wǎng)卡)
- 1.2.1 中央處理器
- 中央處理器是計(jì)算機(jī)的大腦,由控制單元和算術(shù)/邏輯單元組成。
- 控制單元:用于控制和協(xié)調(diào)其他組件的動(dòng)作。
- 算術(shù)/邏輯單元:用于完成數(shù)值運(yùn)算(加法、減法、乘法、除法)和邏輯運(yùn)算(比較)。
- 1.2.2 比特和字節(jié)
- 計(jì)算機(jī)中字節(jié)是最小的存儲(chǔ)單元。
- 計(jì)算機(jī)的存儲(chǔ)能力是以字節(jié)和多字節(jié)來(lái)衡量的:
- 千字節(jié)(KB)大約是1000字節(jié)
- 兆字節(jié)(MB)大約是100萬(wàn)字節(jié)
- 千兆字節(jié)(GB)大約是10億字節(jié)
- 萬(wàn)億字節(jié)(TB)大約是1萬(wàn)億字節(jié)
- 1.2.3 內(nèi)存
- 計(jì)算機(jī)的內(nèi)存由一個(gè)有序的字節(jié)序列組成,用于存儲(chǔ)程序及程序需要的數(shù)據(jù)。
- 每個(gè)字節(jié)都有唯一的地址,以便于存儲(chǔ)和獲取數(shù)據(jù)。
- 內(nèi)存中字節(jié)的內(nèi)容永遠(yuǎn)非空,但是她的原始內(nèi)容可能對(duì)于你的程序來(lái)說(shuō)是毫無(wú)意義的。一旦新的信息被放入內(nèi)存,該字節(jié)的當(dāng)前內(nèi)容就會(huì)丟失。
- 1.2.4 存儲(chǔ)設(shè)備
- 磁盤驅(qū)動(dòng)器
- 光盤驅(qū)動(dòng)器(DVD和CD)
- USB閃存驅(qū)動(dòng)器
- 1.2.5 輸入和輸出設(shè)備
- 1.2.6 通信設(shè)備
-
1.3 編程語(yǔ)言
- 1.3.1 機(jī)器語(yǔ)言
- 計(jì)算機(jī)的原生語(yǔ)言就是機(jī)器語(yǔ)言,是一套內(nèi)嵌的基本指令集。這些指令都是以二進(jìn)制代碼的形式存在。
- 1.3.2 匯編語(yǔ)言
- 匯編語(yǔ)言使用短的描述性單詞(稱為助記詞)來(lái)表示每一條機(jī)器語(yǔ)言指令。
- 1.3.3 高級(jí)語(yǔ)言
- 用高級(jí)語(yǔ)言編寫的程序都稱為源程序或源代碼。由于計(jì)算機(jī)不能運(yùn)行源程序,源程序必須被翻譯成可執(zhí)行的機(jī)器代碼。翻譯可以由另外一種稱為解釋器或者編譯器的編程工具來(lái)完成。
- 1.3.1 機(jī)器語(yǔ)言
| 語(yǔ)言 | 描述 |
|---|---|
| Ada | 以Ada Lovelace(她研究機(jī)械式的通用型計(jì)算機(jī))命名。Ada是為美國(guó)國(guó)防部開發(fā)的,主要用于國(guó)防項(xiàng)目 |
| BASIC | 是Beginner's All-purpose Symbolic Instruction Code(初學(xué)者通用符號(hào)指令代碼)的縮寫,是為了是初學(xué)者易學(xué)易用而設(shè)計(jì)的 |
| C | 由貝爾實(shí)驗(yàn)室開發(fā)。C語(yǔ)言具有匯編語(yǔ)言的強(qiáng)大功能以及高級(jí)語(yǔ)言的易學(xué)性和可移植性 |
| C++ | 基于C語(yǔ)言開發(fā),是一種面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言 |
| C# | 讀為“C Sharp”,是由Microsoft公司開發(fā)的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言 |
| COBOL | 是COmmon Business Oriented Language(面向通用商業(yè)的語(yǔ)言)的縮寫,是為商業(yè)應(yīng)用而設(shè)計(jì)的 |
| FORTRAN | 是FORmula TRANslation(公式翻譯)的縮寫,廣泛應(yīng)用于科學(xué)和數(shù)學(xué)應(yīng)用 |
| Java | 由Sun公司(現(xiàn)在屬于Oracle)開發(fā),是面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,廣泛應(yīng)用于開發(fā)平臺(tái)獨(dú)立的互聯(lián)網(wǎng)應(yīng)用程序 |
| JavaScript | 是由Netscape公司開發(fā)的Web編程語(yǔ)言 |
| Pascal | 以Blaise Pascal(Blaise Pascal是17世紀(jì)計(jì)算機(jī)器的先驅(qū))命名,Pascal是一個(gè)簡(jiǎn)單的、結(jié)構(gòu)化的、通用目的的語(yǔ)言,主要用于編程教學(xué) |
| Python | 是一種簡(jiǎn)單的通用目的的腳本語(yǔ)言,適合編寫小程序 |
| Visual Basic | 又Microsoft公司開發(fā),方便編程人員快速開發(fā)基于Windows的應(yīng)用 |
- 1.4 操作系統(tǒng)
- 操作系統(tǒng)的主要任務(wù):
- 控制和監(jiān)視系統(tǒng)活動(dòng)
- 分配和調(diào)配系統(tǒng)資源
- 調(diào)度操作
- 1.4.1 控制和見識(shí)系統(tǒng)活動(dòng)
- 操作系統(tǒng)跟蹤存儲(chǔ)設(shè)備中文件和文件夾的動(dòng)態(tài),還要確保不同的程序和用戶同時(shí)使用計(jì)算機(jī)時(shí)不會(huì)互相干擾,另外,操作系統(tǒng)還負(fù)責(zé)安全處理,以確保未經(jīng)授權(quán)的用戶和程序無(wú)權(quán)訪問(wèn)系統(tǒng)。
- 1.4.2 分配和調(diào)配系統(tǒng)資源
- 操作系統(tǒng)負(fù)責(zé)確保一個(gè)程序需要使用哪些計(jì)算機(jī)資源,并進(jìn)行資源分配和調(diào)配以運(yùn)行程序。
- 1.4.3 調(diào)度操作
- 操作系統(tǒng)負(fù)責(zé)調(diào)度程序的活動(dòng),以便有效的利用系統(tǒng)資源。
- 多道程序設(shè)計(jì)允許多個(gè)程序通過(guò)共享一個(gè)CPU同時(shí)運(yùn)行。
- 多線程允許單個(gè)程序同時(shí)執(zhí)行多個(gè)任務(wù)。
- 多處理類似于多線程,區(qū)別在于多線程是在單個(gè)程序中并行運(yùn)行多個(gè)線程,而多處理是采用多個(gè)處理器來(lái)并行運(yùn)行多個(gè)程序。
- 操作系統(tǒng)的主要任務(wù):
- 1.5 Java、萬(wàn)維網(wǎng)以及其他
- Java是由James Gosling在Sun公司領(lǐng)導(dǎo)的小組開發(fā)的。(2010年Sun公司被Oracle收購(gòu))
- 這種能在Web瀏覽器中運(yùn)行的Java程序稱為Java小程序(applet)。
- 用于安卓手機(jī)的軟件也是采用Java進(jìn)行開發(fā)的。
- 1.6 Java語(yǔ)言規(guī)范、API、JDK、JRE和IDE
- Java語(yǔ)言規(guī)范定義了Java的語(yǔ)法,完整的Java語(yǔ)言規(guī)范可以在docs.oracle.com/javase/specs上找到。
- Java庫(kù)則在Java應(yīng)用程序接口(API)中定義。
- JDK適用于開發(fā)和運(yùn)行Java程序的軟件。
- IDE是快速開發(fā)程序的集成開發(fā)環(huán)境。
- 1.7 一個(gè)簡(jiǎn)單的Java程序
- Java是從類中的main方法開始執(zhí)行的。
- 類名都是以大寫字母開頭的。
- 一個(gè)字符串必須放入雙引號(hào)中。Java中的每條語(yǔ)句都是以分好(;)結(jié)束,也稱為語(yǔ)句結(jié)束符。
- Java源程序是區(qū)分大小寫的。如果在程序中獎(jiǎng)main替換成Main,就會(huì)報(bào)錯(cuò)的。
- print方法和println方法幾乎一樣,除了println方法在線上一個(gè)字符串后將移到下一行開始處,而print方法在完成顯示后不會(huì)前進(jìn)到下一行。
| 字符 | 名稱 | 描述 |
|---|---|---|
| {} | 左花括號(hào)和右花括號(hào) | 表示一個(gè)包含語(yǔ)句的塊 |
| () | 左圓括號(hào)和右圓括號(hào) | 和方法一起使用 |
| [] | 左方括號(hào)和右方括號(hào) | 表示一個(gè)數(shù)組 |
| // | 雙斜杠 | 表示后面是一行注釋 |
| "" | 左引號(hào)和右引號(hào) | 包含一個(gè)字符串(即一系列的字符) |
| ; | 分號(hào) | 標(biāo)識(shí)一個(gè)語(yǔ)句的結(jié)束 |
-
1.8 創(chuàng)建、編譯和執(zhí)行Java程序
Java源程序保存為.java文件,編譯為.class文件。.class文件由虛擬機(jī)(JVM)執(zhí)行。
-
源文件的擴(kuò)展名必須是.java,而且文件名必須與公共類名完全相同。(如下圖)
在這里插入圖片描述 使用命令行執(zhí)行程序時(shí),不要使用擴(kuò)展名.class。使用java ClassName來(lái)運(yùn)行程序。如果在命令行使用java ClassName.class,系統(tǒng)就會(huì)嘗試讀取ClassName.Class。
-
如果運(yùn)行一個(gè)不存在的類文件,就會(huì)出現(xiàn)NoClassDefFoundError的錯(cuò)誤。如果執(zhí)行的類文件中沒(méi)有main方法或敲錯(cuò)了main方法(例如,將main錯(cuò)敲成Main),則會(huì)出現(xiàn)提示NoSuchMethodError。
在這里插入圖片描述
-
1.9 程序設(shè)計(jì)風(fēng)格和文檔
- 1.9.1 正確的注釋和注釋風(fēng)格
- 除了行注釋(以//開始)和塊注釋(以/開始)之外,Java還支持一種稱為Java文檔注釋(javadoc comment)的特殊注釋形式,該注釋以//開始,以*/結(jié)尾。
- 使用javadoc注釋(/*.../)來(lái)對(duì)整個(gè)類或整個(gè)方法進(jìn)行注釋。
- 1.9.1 正確的注釋和注釋風(fēng)格
```python
package chapter01;
public class Try {
public static void main(String[] args){
//累加的一個(gè)變量
/*
這里只是為了掩飾注釋的
這一行同樣也是*/
int result=0;
for(int i=0;i<args.length;i++){
result+=Integer.parseInt(args[i]);
System.out.println(result);
}
}
}
```
- 1.9.2 正確的縮進(jìn)和空白
- 縮進(jìn)用于展示程序中組成部分或語(yǔ)句之間的結(jié)構(gòu)性關(guān)系。二院操作符的兩遍應(yīng)該各加一個(gè)空格。
- 1.9.3 塊的風(fēng)格
- 次行風(fēng)格和行尾風(fēng)格
```python
package chapter01;
public class BlockStyle {
public static void main(String[] args){
System.out.println("這個(gè)是行尾風(fēng)格");
}
}
```
```python
package chapter01;
public class BlockStyle2
{
public static void main(String[] args)
{
System.out.println("這個(gè)是次行風(fēng)格");
}
}
```
-
1.10 程序設(shè)計(jì)錯(cuò)誤
-
1.10.1 語(yǔ)法錯(cuò)誤
-
語(yǔ)法錯(cuò)誤是由創(chuàng)建代碼時(shí)的錯(cuò)誤引起的。
在這里插入圖片描述
-
-
1.10.2 運(yùn)行時(shí)錯(cuò)誤
- 運(yùn)行時(shí)錯(cuò)誤是引起程序非正常終止的錯(cuò)誤。(比如將0作為除數(shù))
-
1.10.3 邏輯錯(cuò)誤
- 當(dāng)程序沒(méi)有按照預(yù)期的方式執(zhí)行時(shí)就會(huì)發(fā)生邏輯錯(cuò)誤。
-
1.10.4 常見錯(cuò)誤
- 1、遺漏右括號(hào)
- 2、遺漏分號(hào)
- 3、遺漏引號(hào)
- 4、名稱拼寫錯(cuò)誤
-
-
1.11 使用NetBeans開發(fā)Java程序
- 1.11.1 創(chuàng)建Java工程
- 1.11.2 創(chuàng)建Java類
-
1.11.3 編譯和運(yùn)行類
在這里插入圖片描述
在這里插入圖片描述
-
1.12使用Eclipse開發(fā)Java程序
- 1.12.1 創(chuàng)建Java工程
- 1.12.2 創(chuàng)建Java類
-
1.12.3 編譯和運(yùn)行類
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
-
1.13使用 IntelliJ IDEA開發(fā)Java程序
- 1.13.1 創(chuàng)建Java工程
- 1.13.2 創(chuàng)建Java類
- 1.13.3 編譯和運(yùn)行類
我自己使用的就是這個(gè)開發(fā)工具,更加的現(xiàn)代智能化一些。
IntelliJ IDEA創(chuàng)建Java項(xiàng)目
-
復(fù)習(xí)題
- 1、內(nèi)存和永久存儲(chǔ)設(shè)備的主要不同是什么
- 內(nèi)存一般是ram內(nèi)存,也就是運(yùn)行內(nèi)存,是在程序運(yùn)行的時(shí)候使用的內(nèi)存
- 永久存儲(chǔ)大多指ROM內(nèi)存,是可以存儲(chǔ)數(shù)據(jù)的,如果不刪除,一般是不會(huì)丟失數(shù)據(jù)的
- 2、編譯器和解釋器的區(qū)別(編譯器和解釋器的區(qū)別)
- 1、內(nèi)存和永久存儲(chǔ)設(shè)備的主要不同是什么
-
編程練習(xí)(這里只提供部分題目,其實(shí)本質(zhì)都是差不多的,會(huì)了這些其實(shí)這一章的內(nèi)容也就是知道的)
- 1、編寫程序,顯示W(wǎng)elcome to Java、Welcome to computer science和Programming is fun。
```java
package chapter01;
public class Code_01 {
public static void main(String[] args){
System.out.println("Welcome to Java");
System.out.println("Welcome to Computer Science");
System.out.println("Programming is fun");
}
}
```
- 2、編寫程序,顯示W(wǎng)elcome to Java五次。
```java
package chapter01;
public class Code_02 {
public static void main(String[] args){
for(int i=0;i<5;i++){
System.out.println("Welcome to Java");
}
}
}
```
- 3、編寫程序,顯示Java的圖案。
```java
package chapter01;
public class Code_03 {
public static void main(String[] args){
char[][] java=new char[4][29];
java[0][4]='J';
java[1][4]='J';
java[2][0]='J';
java[2][4]='J';
java[3][1]='J';
java[3][3]='J';
java[0][9]='A';
java[1][8]='A';
java[1][10]='A';
java[2][7]='A';
java[2][8]='A';
java[2][9]='A';
java[2][10]='A';
java[2][11]='A';
java[3][6]='A';
java[3][12]='A';
java[0][14]='V';
java[0][20]='V';
java[1][15]='V';
java[1][19]='V';
java[2][16]='V';
java[2][18]='V';
java[3][17]='V';
java[0][25]='A';
java[1][24]='A';
java[1][26]='A';
java[2][23]='A';
java[2][24]='A';
java[2][25]='A';
java[2][26]='A';
java[2][27]='A';
java[3][22]='A';
java[3][28]='A';
for(int i=0;i<4;i++){
for (int j=0;j<29;j++){
if (java[i][j]!='J'&&java[i][j]!='V'&&java[i][j]!='A')System.out.print(" ");
else System.out.print(java[i][j]);
}
System.out.println("");
}
}
}
```
結(jié)果顯示:
```java
J A V V A
J A A V V A A
J J AAAAA V V AAAAA
J J A A V A A
Process finished with exit code 0
```
- 4、編寫程序,顯示以下表格。
```java
package chapter01;
public class Code_04 {
public static void main(String[] args){
int[][] numbers={
{1,1,1},
{2,4,6},
{3,9,27},
{4,16,64}
};
System.out.println("a a^2 a^3");
for (int i=0;i<4;i++){
for(int j=0;j<3;j++){
System.out.format("%-6d",numbers[i][j]);
}
System.out.println(" ");
}
}
}
```
結(jié)果顯示:
```java
a a^2 a^3
1 1 1
2 4 6
3 9 27
4 16 64
Process finished with exit code 0
```
- 5、編寫程序,顯示1+2+3+4+5+6+7+8+9的結(jié)果。
```java
package chapter01;
public class Code_06 {
public static void main(String[] args){
int result=0;
for (int i=1;i<=9;i++){
result+=i;
}
System.out.print(result);
}
}
```
- 6、編寫程序,使用以下公式計(jì)算并顯示半徑為5.5的圓的面積和周長(zhǎng)。
周長(zhǎng)=2 x 半徑 x π
面積=半徑 x 半徑 x π
```java
package chapter01;
public class Code_08 {
public static void main(String[] args){
zhouChang(5.5);
mianJi(5.5);
}
static void zhouChang(double radius){
System.out.println(2*radius*Math.PI);
}
static void mianJi(double radius){
System.out.println(Math.PI*radius*radius);
}
}
```
第一章呢,就是一些基本情況的了解,下面才會(huì)真正的進(jìn)入到Java的學(xué)習(xí)當(dāng)中,那就期待下一期吧!