01-Java概述
-
Java語言背景介紹
- 語言:人與人交流溝通的表達方式
- 計算機語言:人與計算機之間進行資訊交流溝通的一種特殊語言
- Java語言是美國Sun公司(Stanford University Network)在 1995 年推出的計算機語言 Sun公司與Java更多資料
- 公認的Java之父:詹姆斯·高斯林(James Gosling)
- Java語言的三個版本
-
SE(J2SE),standard edition,标準版,用于桌面應用的開發,是其他兩個版本的基礎,從JDK5.0開
始,改名為Java SE
- EE(J2EE),enterprise edition,企業版,多用于Web方向的網站開發,從JDK5.0開始,改名為Java EE
-
ME(J2ME),micro edition,用于移動裝置、嵌入式裝置上的java應用程式,從JDK5.0開始,改名為
Java ME
-
-
Java跨平台原理
- 平台:指的是作業系統,常見的系統有
- Windows
- Mac
- Linux
- 跨平台:Java 程式可以在任意作業系統上運作
-
總結Java跨平台原理:在需要運作 Java 應用程式的作業系統上,安裝一個與作業系統對應的Java虛拟機
(JVM Java Virtual Machine)即可
- 注意:JVM 虛拟機本身不允許跨平台,允許跨平台的是 Java 程式
- 平台:指的是作業系統,常見的系統有
-
JRE和JDK
- 開發 Java 程式的三個步驟
- 編寫代碼:書寫正确的代碼
- 編譯代碼:找到該檔案位置 -> 使用javac進行編譯 -> 編譯成功産生一個.class檔案
- 運作代碼:使用java密碼運作 - > 不帶檔案字尾
- JRE、JDK、JVM的作用
- JDK:JDK(Java Development Kit):java開發工具包,針對開發人員使用
- 編譯代碼的過程中,需要使用 JDK 中的翻譯工具 javac
- 運作代碼的過程中,需要使用 JDK 中的運作工具 java
- JRE(Java Runtime Environment):是運作基于Java語言編寫的程式所不可缺少的運作環境
- 編寫代碼的過程中,需要=使用 JRE 中 Java 已經寫好的代碼
-
JVM(Java Virtual Machine):就是我們常說的java虛拟機,它是整個java實作跨平台的最核心的部
分,所有的java程式會首先被編譯為.class的類檔案,這種類檔案可以在虛拟機上執行
- 代碼需要運作在 JVM 當中
- JDK:JDK(Java Development Kit):java開發工具包,針對開發人員使用
-
JDK、JRE 和 JVM 的關系:JDK包含JRE包含JVM
JDK、JRE、JVM及三個版本更多資料
- 開發 Java 程式的三個步驟
-
JDK下載下傳和安裝
- 下載下傳:類似于JDK這種安裝包,以後都要儲存起來,安裝包是一個程式員必備的工具,硬碟就是工具箱
- 安裝:修改安裝目錄,安裝在develop檔案夾下即可
02-第一個Java程式
-
常用DOS指令
- 學習目的:為了能夠使用JDK的bin目錄中的(javac.exe)編譯和(java.exe)運作工具
- 注意:JDK 提供的編譯和運作工具,并不是輕按兩下運作去使用的,正确使用方式:在 DOS 中通過指令去運作
- 如何打開DOS視窗:按下 Win + R ,在運作輸入框中,輸入cmd,敲回車
- 常用指令:盤符:、cd 目錄、dir、cd …、cls、exit
- 快速在DOS打開某目錄:打開目标檔案夾,在最上面路徑單擊,全選,直接輸入cmd回車
-
Path環境變量的配置
- 為什麼配置:能夠在任意目錄(檔案夾路徑)下, 都能通路到bin目錄中的javac和java工具
- 配置位置:Win鍵+E,找到計算機右鍵屬性,進階系統設定,環境變量,在系統變量中配置
- 建立系統變量 變量名為JAVA_HOME,變量值為jdk檔案夾全路徑
- 輕按兩下Path,建立變量%JAVA_HOME%\bin
- 三個确定都要點
- 在DOS中直接輸入java或者javac檢測是否配置成功,如果出現一堆堆指令行,則為配置成功;如果顯示"不是内部或者外部指令…"則為配置失敗,回頭檢查上述幾個步驟
-
HelloWorld案例編寫和執行
-
HelloWorld中文意思是[你好世界,該程式的效果就是在控制台列印一段文字,内容為 HelloWorld,程
序員在學習任何一門程式設計語言,第一個入門案例,都是 HelloWorld
- 回顧開發Java程式的三個步驟:編寫代碼,編譯代碼,運作代碼
- 操作流程:
- 建立文本文檔檔案,修改名稱為HelloWorld,檔案字尾為java,彈框點确定
- 用記事本打開HelloWorld.java檔案,輸寫正确代碼,Ctrl+S儲存
- 打開DOS視窗,進入到HelloWorld.java所在的目錄,輸入指令編譯和執行
-
編譯:javac 檔案名.java
範例:javac HelloWorld.java
執行:java 類名
範例:java HelloWorld
-
- 正确效果:在控制台成功列印HelloWorld
-
報錯:檢視報錯提示,檢查對應的代碼,修改錯誤并儲存,重新編譯運作(寫代碼報錯是很常見的,
不要害怕報錯)
-
-
HelloWorld案例常見問題
-
Bug是一個英文單詞,中文意思是指[昆蟲、小蟲、損壞、缺陷等意思],現在一般是指在程式中,出現的
缺陷或問題,簡稱程式漏洞 bug的由來
- 入門案例常見錯誤:
- 檔案名與類名不一緻
- 單詞拼寫錯誤:String、System首字母是大寫;public、class、static、void都是純小寫
- 使用了中文标點:我們編碼過程中,必須使用英文小寫标點符号
- 括号丢失:所有類型的括号,都是成雙成對出現的
-
-
Notepad軟體的使用
- 安裝:修改安裝目錄,安裝在develop檔案夾下即可
- 初始配置:設定 - 首選項 - 左邊單擊建立 - 預設語言選擇Java - 編碼選擇ANSI(避免中文亂碼)- 關閉
- 進階記事本進階在哪?
- 使用小技巧
03-基礎文法
-
注釋
- 概念:注釋是在程式指定位置添加的說明性資訊, 簡單了解,就是對代碼的一種解釋說明
- 分類:
- 單行注釋 //注釋資訊
- 多行注釋
- 文檔注釋 就業班使用
- 注釋内容不參與編譯與運作,也是說計算機不識别注釋資訊
- 注意:多行注釋不能嵌套使用
-
關鍵字
- 概念:被Java賦予了特殊含義的單詞
- 特點:小寫高亮
- 我們使用過的關鍵字:
- public:權限修飾符,公共的意思,就業班會學到
- class:代表這是一個類
- static:靜态的意思,就業班會學到
- void:void這個位置,是main方法的傳回值類型,代表傳回值為空,方法會學到
- 其他單詞擴充:
- main不是關鍵字,main是方法名,是Java開發人員起的
- String不是關鍵字,是字元串,基礎班後面就會學到
-
args這個位置是參數清單,args是參數名,也是Java開發人員起的,改變不影響程式運作,但是不允
許改變,并沒有意義
- System是一個類,就業班會學到
- println是列印的意思,列印并且換行,還可以寫為print,是列印不行換的意思(一行列印)
-
常量
- 概念:在程式的執行過程中,其值不會發生改變的量(資料)
- 常量分類:
- 字元串常量:用雙引号括起來的内容,例如 “HelloWorld”,“黑馬程式員”
- 整數常量:不帶小數的數字,例如 150,-250
- 小數常量:帶小數的數字,例如 3.14,-8848.43
- 字元常量:用單引号括起來的單個内容,例如 ‘A’,‘6’,‘錢’
- 布爾常量:布爾值,表示真假 隻有兩個值:true,false
- 空常量:一個特殊的值,空值 值是:null,空常量不能直接列印
-
變量介紹
- 概念:變量就是記憶體中的存儲空間,空間中存儲着經常發生改變的量(資料)
- 常量本質:記憶體中的一片可變區域
- 變量定義格式:資料類型 變量名 = 資料值; 例如 int num = 10;
- 計算機存儲單元:
- 計算機儲存設備的最小資訊單元叫:位(bit),也稱為"比特位",用小寫的字母”b”表示
- 計算機中最小的存儲單元叫:位元組(byte),用大寫字母"B"表示,1個位元組是由連續的8個位組成
- 其他常用的存儲機關:
-
1B(位元組) = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
……
-
-
資料類型
-
Java是一門強類型語言,對于每一種資料都給出了明确的資料類型,不同的資料類型也配置設定了不同的記憶體
空間,是以它們表示的"資料大小"也是不一樣的
- 分類:
- 1.基本資料類型(四類八種)
- 整數 byte、short、int(預設)、long
- 浮點數 double(預設) float
- 字元 char
- 布爾 boolean
- 2.引用資料類型
- 類 class
- 接口 interface
- 數組 []
- 1.基本資料類型(四類八種)
- 資料類型記憶體占用和取值範圍(不需要死記硬背,真需要用到了查就行)
- byte,占用1位元組,範圍:-128~127
- short,占用2位元組,範圍:-32768~32767
- int,占用4位元組,範圍:-2的31次方到2的31次方-1
- long,占用8位元組,範圍:-2的63次方到2的63次方-1
- float,占用4位元組,範圍:1.401298e-45到3.402823e+38
- double,占用8位元組,範圍:4.9000000e-324 到1.797693e+308
- char,占用2位元組,範圍:0-65535
- boolean,占用1位元組,範圍:true,false
- 說明:e+38表示是乘以10的38次方,e-45表示乘以10的負45次方
- 為什麼要規定資料的範圍
-
-
變量的定義和使用
- 定義:資料類型 變量名 = 資料值;
- int num = 10;
- double d = 3.5;
- char c = ‘a’;
- boolean flag = true;
- 使用:使用變量名即可
- int num = 10; 修改值:num = 20;
- double d = 3.5; 列印值:System.out.println(d);
- 使用注意:
-
變量名不允許重複定義
一條語句可以定義多個變量(不建議)
變量在使用之前一定要進行指派
定義float結尾加F、long結尾加L
變量的作用域範圍
-
- 定義:資料類型 變量名 = 資料值;
-
鍵盤錄入
- 為什麼使用鍵盤錄入:為了讓我們操作的資料,變得更加靈活,更能模拟真實
- 使用步驟(文本文檔編碼)-> 死記硬背
- 導包:import java.util.Scanner; //導包的動作必須出現在類定義的上邊
- 建立對象:Scanner sc = new Scanner(System.in); //寫在main方法中,目前背過這一句
- 控制台提示:System.out.println(“提示資訊:”); //如果不給提示,使用者體驗很差,不知道該怎麼做
- 接收資料:int i = sc.nextInt(); //使用鍵盤對象名sc,調用了一個方法nextInt();拿到輸入的值指派給i
-
面向對象的思想就是,隻關注對象能做什麼,而不關心它是怎麼做的。這裡我們隻關心sc的nextInt()方法
能幫我們擷取使用者,在鍵盤錄入的整數即可,不用關心它怎麼完成這件事的,等有一定基礎了再去翻源碼
-
辨別符
- 概述:是給類,方法,變量等起名字的符号
- 辨別符定義規則:
-
由數字、字母、下劃線(_)和美元符($)組成
不能以數字開頭
不能是關鍵字
區分大小寫
-
- 辨別符命名約定:
-
小駝峰命名法
約定1:辨別符是一個單詞的時候,首字母小寫
範例1:name
約定2:辨別符由多個單詞組成的時候,第一個單詞首字母小寫,其他單詞首字母大寫
範例2:firstName
-
大駝峰命名法
約定1:辨別符是一個單詞的時候,首字母大寫
範例1: Student
約定2:辨別符由多個單詞組成的時候,每個單詞的首字母大寫
範例2: GoodStudent
-
-
類型轉換
- 前提:了解資料範圍,我們的基本類型除了boolean,都有自己的範圍,有大有小
- 範圍小到大:byte -> short(char) -> int -> long -> float -> double
- 注意:
- 這裡char用的是ASCLL碼表中對應的十進制的int類型資料參與
- byte、short、char參與運算,會先提升為int類型再進行計算
- 隐式轉換:也叫自動轉換,計算機自動完成
- 小範圍類型資料 -> 指派給 -> 大範圍類型資料
- 小杯水倒入大桶,是可以的沒有問題的
- 強制轉換:需要手動轉
- 大範圍類型資料 -> 指派給 -> 小範圍類型資料
- 大桶水倒入小杯,肯定是要溢出的(精度丢失)
- 格式:資料類型 變量名 = (目标類型)變量值;
- 常量優化機制:
- byte d = 3 + 4; //3+4結果為int的7,指派給byte不報錯麼?
-
在編譯時(javac),就會将3和4計算出一個7的結果,并且會自動判斷該結果是否在byte取值範圍内,
在則編譯通過,不在則編譯失敗
一個良好的開端是成功的一半,加油同學們
擴充資料
Sun公司與Java更多資料
Sun公司成立于1982年
1990年年末,Sun公司預料嵌入式系統将在未來家用電器領域大顯身手。于是Sun公司成立了一個由詹姆斯·高斯林(James Gosling 公認的java之父)上司的“Green計劃”,準備為下一代智能家電(電視機、微波爐、電話)編寫一個通用控制系統
Sun 公司開發 Java 的想法是:在網際網路的時代,提供一種和機器無關,和作業系統也無關,可以運作在任何平台上的語言
這種語言如果成為軟體開發事實上的标準的話,那麼軟體的開發就會變得非常高效,因為大家再也不需要為特定的硬體和作業系統專門開發軟體了
于是Oak誕生了
到了1992年的夏天,Green計劃已經完成了新平台的部分功能,包括Green作業系統。Oak的程式設計語言、類庫等。同年11月,Green計劃被轉化成"FirstPerson有限公司",一個Sun公司的全資子公司
但是後來由于商業等等的原因,Green項目幾乎接近夭折,Green項目的一半成員也被調到了其他的項目組
1994年夏天,網際網路和浏覽器的出現不僅給廣大網際網路的使用者帶來了福音,也給Oak語言帶來了新的生機Gosling立即意識到,這是一個機會
于是對Oak進行了小規模的改造,到了1994年秋,他們完成了第一個Java語言的網頁浏覽器:WebRunner
當時的Oak這個商品已經被注冊,于是隻得将Oak更名為Java,于1995年正式推出
JAVA這個名稱的由來:開發者在爪哇島喝過一種好喝的咖啡,于是音譯過來起名JAVA,圖示是我們熟悉的一杯熱咖啡,自此之後程式員與咖啡就分不開了。爪哇島是印度尼西亞的島嶼,位于赤道南方,面積13.88萬平方公裡,人口1.45億,島嶼西部有首都—雅加達
其中三個島:爪哇、蘇門答臘、蘇拉維西出産全球重要的咖啡,17世紀中期,荷蘭人就把咖啡樹帶到了當時的錫蘭(斯裡蘭卡)和印尼的爪哇
18世紀,印尼已經成為咖啡的主要生産地,所産的優質阿拉比卡咖啡幾乎全部供應給歐洲,但到了19世紀,1869早出現于錫蘭的咖啡鏽蝕病也禍及印尼。到了1877年,印尼諸島上的大部分咖啡田都被鏽蝕病損毀,荷蘭人不得不從非洲引進其他的咖啡品種,也就是羅姆斯達咖啡。它比較能抗病蟲害,但品質要遜色一些,印尼咖啡90%左右是羅姆斯達豆,每年大約680萬袋,隻有不到10%的豆子為阿拉比卡咖啡,印尼出品的咖啡一般不冠"印尼"的名字,而直接冠以島名,如爪哇、蘇門答臘等
從2000年開始,java在程式設計開發文法中,幾乎壟斷了第一名的寶座
在最近一次 2008 年的經濟危機中,Sun公司沒有撐下去破産了,最後于 2009 年 4 月被 Oracle 收購了
Sun的崛起與衰落: https://blog.csdn.net/sdjadycsdn/article/details/106468527
Java語言發展簡史:https://blog.csdn.net/wxb141001yxx/article/details/80786680
JDK、JRE、JVM及三個版本更多資料
- JDK(Java Development Kit):java開發工具包,針對開發人員使用;它是整個java的核心,包含了JRE一堆Java工具(javac/java/jdb等)和Java基礎的類庫(即Java API 包括rt.jar)
-
JRE(Java Runtime Environment):是運作基于Java語言編寫的程式所不可缺少的運作環境。也是通過它,Java的開發者才得以将自己開發的程式釋出到使用者手中,讓使用者使用
JRE中包含了Java virtual machine(JVM),runtime class libraries和Java application launcher,這些是運作Java程式的必要元件
與大家熟知的JDK不同,JRE是Java運作環境,并不是一個開發環境,是以沒有包含任何開發工具(如編譯器和調試器),隻是針對于使用Java程式的使用者。
-
JVM(Java Virtual Machine):就是我們常說的java虛拟機,它是整個java實作跨平台的最核心的部分,所有的java程式會首先被編譯為.class的類檔案,這種類檔案可以在虛拟機上執行。
也就是說class并不直接與機器的作業系統相對應,而是經過虛拟機(相當于中間層)間接與作業系統互動,由虛拟機将程式解釋給本地系統執行
隻有JVM還不能成class的執行,因為在解釋class的時候JVM需要調用解釋所需要的類庫lib,而jre包含lib類庫。JVM屏蔽了與具體作業系統平台相關的資訊,使得Java程式隻需生成在Java虛拟機上運作的目标代碼(位元組碼),就可以在多種平台上不加修改地運作。
所有的程式隻要有java虛拟機的支援,那麼就可以實作程式的執行,并且不同的作業系統上會有不同版本的jvm。
-
SE(J2SE),standard edition,标準版,是我們通常用的一個版本,從JDK5.0開始,改名為Java SE
EE(J2EE),enterprise edition,企業版,使用這種JDK開發J2EE應用程式,從JDK5.0開始,改名為Java EE
ME(J2ME),micro edition,用于移動裝置、嵌入式裝置上的java應用程式,從JDK5.0開始,改名為Java ME
bug的由來
bug:在電腦系統或程式中,隐藏着的一些未被發現的缺陷或問題統稱為bug(漏洞)
該詞語的創始人,是世界上第一台計算機mark 1的第三名程式員格蕾絲赫伯
1945年mark 1已經更新為mark 2了,有一天格蕾絲敲代碼的時候,電腦突然當機了
當時的計算機很大,于是他們排查龐大的處理器群,發現一隻蟲子受到光和熱的吸引而導緻的
蟲子當然也跪了,格蕾絲将它取下來粘在了記事本上,标注了"第一個出現bug的執行個體"
後來有捉蟲子意思的"debug",就成為了處理、修複漏洞的意思
為什麼要規定資料的範圍
早在計算機還不發達的時候,計算機記憶體非常小,是以對于定義的資料,有嚴格的規定,不能浪費
但是目前來說,記憶體已經不是天花闆了,是以這個規定沒有以前嚴格
但是在開發中,對于以數值計算為主的應用,提升性能有很大好處
java有基本類型和引用類型(對象),如果使用對象,需要建立對象執行個體,這時記憶體的開銷遠遠大于
直接使用的基礎資料類型,除此之外還有gc的一些操作,用來回收對象,都是開銷
經過大量的測試,明确肯定使用基本類型時的處理效率,明顯大于使用引用類型(4倍或更多)
java為什麼要保留基本類型:https://www.cnblogs.com/lbhym/p/11122716.html
day01 每日重點
- 說出Java跨平台原理
-
平台包含Windows、mac、Linux 通過JVM完成跨平台,但是JVM本身不跨平台 不同平台廠商提供對應的JVM虛拟機,去翻譯相同的位元組碼檔案
-
- 說出JDK、JRE和JVM的作用及關系
-
JDK:java開發工具包 JRE:java運作環境 JVM:java虛拟機 JDK包含JRE包含JVM(8以後我們安裝JDK就擁有了所有)
-
- 運用JDK的下載下傳與安裝
-
官網下載下傳,或者使用老師提供的安裝包(往後各類軟體安裝包儲存在自己的U盤) 安裝在develop檔案夾下,保留Java檔案夾(可能會裝多版本,便于管理)
-
- 配置JDK的環境變量
-
首先需要安裝JDK(以JDK11/12為例) 我的電腦 - 屬性 - 進階系統設定 - 環境變量 1. 建立變量名JAVA_HOME值為JDK的安裝路徑 2. 在原有變量Path中,建立變量%JAVA_HOME%\bin *. 在原有變量Path中,配置bin檔案夾的絕對路徑
-
- 會使用注釋、關鍵字、常量
-
注釋:對代碼進行解釋說明的文字資訊 分類:單行//、多行/* */、文檔 /** */ 關鍵字:被java賦予了特殊含義的英文單詞 特點:小寫、高亮 常量:在程式運作過程中,其值不發生改變的量 分類: 整數常量 小數常量 字元常量 字元串常量 布爾常量 空常量(不能直接列印)
-
- 會使用變量進行程式設計
-
變量:本質是記憶體中用于存儲經常改變的量的一塊可變區域 定義:資料類型 變量名 = 變量值; 使用:直接使用"變量名"即可
-
- 知道資料類型的分類,能寫出八種基本資料類型
-
Java中的資料類型分為: 一、基本資料類型:今天關心 二、引用資料類型:String、[]、接口 基本資料類型分為:四類八種 整數 byte short int(預設) long 浮點數 float double(預設) 字元 char 布爾 boolean
-
- 鍵盤錄入對象Scanner
-
使用步驟: 1.導包 improt java.util.Scanner; 2.建立對象 Scanner sc = new Scanner(System.in); 3.控制台提示 System.out.println("提示"); 4.調用方法,接收資料 int i = sc.nextInt(); //拿到i以後,有後續操作
-
- 會使用辨別符
-
辨別符:用來給常量、變量、類等,起名字的符号 組成規則: 1.由字母、數字、_、$組成 2.不能是Java的關鍵字 3.不能以數字開頭 4.嚴格區分大小寫 命名約定: 大駝峰命名法:用于類 小駝峰命名法:用于變量、方法
-
/*
重點案例:一個三遍(必須)
1.HelloWorld入門案例
2.常量練習:在輸出語句中,列印自我介紹資訊,姓名(String)、性别(char)、年齡(int)、體重(double)、愛好(String)
3.變量和鍵盤錄入:使用鍵盤對象,提示使用者輸入姓名(String)、年齡(int)、成績(double),接收并列印該使用者資訊,格式自拟
String name = sc.next();
int name = sc.nextInt();
double score = sc.nextDouble();
*/