Java學習記錄
1.程式語言
語言: 英文、中文.... 作用: 交流溝通
計算機 - 能夠識別的: 二進位制 0 1
開關: 0 關閉 1 開啟
0101 方向向上 0100 方向向下
將計算機認識的編碼 轉成人類方便識別和記憶的方式: 計算機語言
iadd 加法
組合語言 : 指令 。 吃、走、睡...
高階語言: 相對於低階而言 , 實現邏輯上面的程式設計。
1.2Java語言
語言的鼻祖: C 語言 最底層是C (高階語言)
C 語言的兒子 C++ (類的概念)
Java 是 C++ 的兒子 (自動垃圾回收 GC)
java早期的名字 oak
java的起源公司: Sun
2009年:java被甲骨文收購 (Oracle)
java的創始人(java之父): 詹姆斯 高斯林java的特性:
-
高階語言 : 相對於彙編而言
-
嚴格檢查資料型別 : 儲存資料之前,先確定、宣告要儲存的資料是什麼型別
-
面向物件: 相對的是面向過程
-
與平臺無關: 一次編寫,到 處執行 (java提供了不同作業系統的Jvm虛擬機器 - 安卓模擬器)
-
安全 (所有的語言都說自己的安全的)
1.3面向物件 (Java)VS 面向過程 (C )
需求: 需要一臺電腦玩遊戲
\1. 自己瞭解電腦的每個元件的配置 : 耗費時間 面向過程
\2. 找個一個精通電腦的人 : 簡單 面向物件
當需求變更的時候: 影視的圖形處理 工作站
\1. 自己重新瞭解
\2. 找個一個精通電腦的人
面向物件和麵向過程的區別: 面向物件利於維護和擴充套件 , 面向過程適合底層開發(不會變的)
C語言: 主要用於系統繼承開發
Java: 應用伺服器
1.4一次編寫,到 處執行
java是執行在JVM虛擬機器上
JVM虛擬機器執行在作業系統上
不同的作業系統Java提供了不同的虛擬機器
2.JDK的安裝
2.1JDK(記住)
java的開發工具包: 包含JRE ,開發工具
JRE : java的執行環境,包含JVM
JVM: java虛擬機器
2.2Java的開發平臺(記住)
J2SE(Java 2 Platform Stand Edition) 嵌入式開發,java語言基礎 例如:手機等小型電子裝置的軟體
J2EE(Java 2 Platform Enterprise Edition ) 分散式開發 ,基於網際網路的開發 例如:網路電子商務等
J2ME(Java 2 Platform Micro Edition ) 桌面應用軟體 我的世界(java,不怎麼使用) 例如: 單機軟體
2.3環境變數
PATH: 預設執行命令的路徑, 多個路徑之間使用 分號隔開
操作環境變數常用的命令
set 變數名=變數值 : 給變數賦值
set 變數名 : 檢視變數的值
引用變數 : %變數名%
系統變數:所有的使用者都可以使用的變數
使用者變數:window是一個多使用者作業系統, 只註冊提供給當前使用者使用的變數
使用set命令只能夠臨時生效,如果需要永久生效則需要修改配置
環境變數在修改後要重新開啟終端
2.4 JDK的安裝
注意點: JDK的安裝路徑不要有中文、特殊字元、空格..
建議: 建立一個資料夾用來管理JDK,解壓jdk到制定的路徑
切換碟符
C:\Users\jack>d:
D:\>cd D:\tools\java\jdk1.8.0_181\bin
D:\tools\java\jdk1.8.0_181\bin>
配置環境變數
新建JAVA_HOME變數
配置PATH變數
測試: 重新開啟終端
C:\Users\jack>java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
注意:
JDK1.8之後不需要配置CLASSPATH,配置的通訊請刪除
3.第一個小程式
建立一個資料夾 java01
在java01檔案加中建立 HelloWorld.java 檔案 (java的源程式,編碼環境)
在 HelloWorld.java 中完成編碼
public class HelloWorld{
public static void main(String[] args){
System.out.println("hello world");
}
}
在notepad++裡寫下這個程式碼,然後在終端通過(javac)編譯成可以執行的檔案,然後執行。
D:\QQ\data\2269133874\FileRecv\java01筆記>javac HelloWorld.java
D:\QQ\data\2269133874\FileRecv\java01筆記>java HelloWorld
HelloWorld
D:\QQ\data\2269133874\FileRecv\java01筆記>
注意:
/**
main: 固定格式, 模板寫法. 程式的入口, 和程式的出口
String[] args:程式接收的引數, 可以是多個引數, 多個引數之間使用空格
*/
4.變數和基本資料型別
資料型別(8種)
1.整數型別:
1.byte: 位元組型:1 byte=8 bit
0000 0000 ~ 1111 1111
第一位是符號為 : 表示正數 還是 負數
其他的是指數位
-128 ~ 127
2.short:短整型:16bit
0000 0000 0000 0000 ~ 1111 1111 1111 1111
第一位是符號為 : 表示正數 還是 負數
其他的是指數位
3.int:整型:32bit
第一位是符號為 : 表示正數 還是 負數
其他的是指數位
4.long:長整型:64bit
// 長整型 : java中將整數字面量預設位是 int 型別
long l = 2147483648L; // 養成習慣加一個L , 不區分大小寫。 要求大寫
// 如果整型字面量的範圍是 int 範圍可以不加L 。 要求加
System.out.println(l);
2.浮點型別
1.float:單精度浮點型 32bit (字面量後面要加“F”)
1位符號位 8位指數為 23位尾數位(小數)
2.double: 雙精度浮點型 64bit
1位符號位 8位指數為 23位尾數位(小數)
3.字元型 : char字元型:16bit
字元: 英文字面。 數字。 特殊符號 。 中文字 ....
java中以單引號來表示
布林型:boolean只有兩個值true false(都是關鍵字)
引用資料型別(物件型別)
1.String:字串
2.陣列
3.java類
public class Test{
public static void main(String[] args){
String word = "abc";
System.out.println(word);
char letter = 'c';
int x = 100;
System.out.println(word+x); // 當字串和其他的數值使用+ 的時候 表示連線
System.out.println(letter+x);// 這裡是加法
}
}
棧:基本資料型別、區域性變數、儲存資料量比較偏小、先進後出、以壓棧的方式儲存資料
堆:引用資料型別、儲存資料量比較大、隨機儲存
基本資料型別轉換
小型別向大型別轉化
完成的是自動轉換,不需要程式設計師操作
byte-short-int-long-float-double
整型和浮點之間轉換的時候可能缺失精度,因為浮點的尾數可能會不夠
大型別向小型別轉化
double-float-long-int-short-byte
強制轉換有可能失敗
比如float轉向int會捨去小數部分
int型別向char型別的轉化
char是unicode碼的形式儲存
int->char 強制轉換
char->int 自動轉換
public static void main(String[] args){
char c = 'A';
int x = c; // 自動
System.out.println(x);
char cs = (char)x;
System.out.println(cs);
}
5.運算子
算術運算子
+ - * / %(取模) +=(自增) -=(自減) ++ --
算術運算的規則: java中在運算的時候會將運算子左右的資料型別自動轉型一致後在進行運算
也就是說只能是兩個相同的資料型別進行運算, 如果資料型別不同,則判斷能否做型別轉換
public class Test{
public static void main(String[] args){
int a = 10;
int b = 10;
int s = a + b ;
System.out.println(s);
long l = 20;
System.out.println(l + a); // 直接輸出計算後的結果
// 下面的表示式會編譯報錯
// int s1 = l + a; // l + a 計算的結果是 long 型別
// 下面的程式碼也會報錯
// byte bt = 10 + a; // 區分於 byte bt = 10 + 10; 10+10 看作是常量
byte x = 10;
// 這裡也會報錯
// byte bt = x + 10;
// + 在和字串一起使用的時候表示 連線
System.out.println(x + "100");
// 除法
int a1 = 10 ;
int b1 = 3;
System.out.println(a1/b1); // 如果不能整除, 則捨去小數部分. 不是四捨五入
}
}
public class Test{
// 自增 += 自減 -=
public static void main(String[] args){
// % 取餘數
int a = 10;
int b = 3;
System.out.println(a%b);
int x = 2;
x+=3; // x = x + 3;
System.out.println(x); // 5
x-=4;
System.out.println(x); // 1
// 如果自增的增量位1
x++; // x+=1 ; x = x + 1;
System.out.println(x); // 2
++x; // 在計算結果上面和 x++ 是一樣的
System.out.println(x); // 3
System.out.println("--------------------------");
// 計算過程 ++ 在前和++在後的計算過程
int y = 1;
System.out.println(y++ + 1);// 1 + 1 : ++先引用在計算
System.out.println(y); // 表示式執行後的結果
int h = 1;
System.out.println(++h + 1);// 2 + 1 : ++先計算在引用
System.out.println(h); // 表示式執行後的結果
}
}
關係運算符
< <= >= == !=
計算結果是boolean型別
邏輯運算子
&&(並且) : 2邊為true - true 否則全是 false
||(或者) : 2邊為false 結果是 false 否則全為true
!(取反) :true | false
&(並且) : 2邊為true - true 否則全是 false
| (或者) : 2邊為false 結果是 false 否則全為true
位運算子
運算效能優於十進位制