SUSE12/15 安裝docker-ce19.03.13版本
Java基礎
JDK:Java Development Kit
JRE:Java Runtime Environment
JVM:Java Virtual Machine
HelloWorld
public class HelloWorld{
public static void main(String[] args){
System.out.println("HelloWorld!");
}
}
編譯javac java檔案,會生成一個class檔案
執行class檔案,java class檔案
Java程式執行機制
- 編譯型
- 解釋型
比如一個美國人要讀中文的小說,但是他不會中文所以需要想個辦法來讀懂,而編譯型語言其實就是把整本書全部翻譯一遍,解釋型是找一個翻譯來逐句對整本書進行翻譯。編譯型效率更高一點,但是解釋型
編譯型語言:C C++
解釋型語言:js python vb
Java基礎語法
註釋
- 單行註釋
- 多行註釋
- 文件註釋
idea快捷鍵 command+d 複製貼上當前行
文件註釋在idea中敲出/**後直接敲回車就出來了
識別符號
Java所有的組成部分都需要名字。 類名、變數名以及方法名都被成為識別符號。
所有的識別符號都應該以字母(A-Z或者a-z),美元符($)、或者下劃線(_)開始
首字元之後可以是字母(A-Z或者a-z),美元符($)、下劃線(_)或數字的任何字元組合
不能使用關鍵字作為變數名或方法名
識別符號是大小寫敏感的
可以使用中文命名,但是一般不建議這樣去使用,也不建議使用拼音,很LOW
資料型別
-
強型別語言
- 要求變數的使用要嚴格符合規定,所有變數都必須先定義後才能使用
-
弱型別語言
Java的資料型別分為兩大類
- 基本型別
- 數值型別
- 整數型別:byte short int long(要在數字後面加個L)
- 浮點型別:float(要在數字後面加個F) double
- 字元型別:char
- boolean型別:true false
- 數值型別
- 引用型別:類、介面、陣列
資料型別的一些拓展
整數的拓展
進位制:二進位制0b 十進位制 八進位制0 十六進位制0x
int i = 0b10; //二進位制 int i1 = 10; //十進位制 int i2 = 010; //八進位制 int i3 = 0x10; //十六進位制0x System.out.println(i); //2 System.out.println(i1); //10 System.out.println(i2); //8 System.out.println(i3); //16
浮點數的拓展
兩個例子
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);//表示輸出f是否等於d的結果,返回false,表示二者不等
float d1 = 23132132131231213f;
float d2 = d1 + 1;
System.out.println(d1 == d2);//返回true
浮點數是有限 離散 舍入誤差 大約 接近但不等於,所以最好完全避免使用浮點數進行比較
字元的拓展
char c1 = 'A';
char c2 = '中';
System.out.println(c1); //A
System.out.println((int)c1); //65
System.out.println(c2); //中
System.out.println((int)c2); //20013
所有的字元本質還是數字
編碼 Unicode表:(97=a 65=A)2位元組 0-65535 常常用U0000 UFFFF來表示
char c3 = '\u0062'; // \u表示轉義
System.out.println(c3); //a
int c4 = 97;
System.out.println((char)c4); //a
轉義字元
\t表示製表符
\n表示換行符
型別轉換
由於Java是強型別語言,所以要進行有些運算的時候,需要用到型別轉換
低---------------------------------------------------------->高
byte,short,char -> int -> long -> float -> double
//操作比較大的數的時候,注意溢位問題
//JDK7新特性,數字之間可以用下劃線分割,並不會被輸出
int money = 10_0000_0000;
System.out.println(money); //1000000000
int years = 20;
int total = money*years;
System.out.println(total); //-1474836480,計算的時候溢位了
long total2 = money*years; //仍然不行,還是溢位,因為預設是int,轉換之前已經存在問題了
long total3 = money*((long)years); //先把一個數轉化為Long
System.out.println(total3); //20000000000 溢位問題得到解決
變數
變數是什麼?就是可以變化的量
Java是一種強型別語言,每個變數都必須宣告其型別
Java變數是程式中最基本的儲存單元,其要素包括變數名,變數型別和作用域
type varName = value
注意:
- 每個變數都有型別,型別可以使基本型別,也可以是引用型別
- 變數名必須是合法的識別符號
- 變數宣告是一條完整的語句,因此每一個宣告都必須以分號結束
變數作用域
- 類變數
- 例項變數(從屬於物件)
- 區域性變數(必須宣告和初始化值)
public class Variable{
static int allClicks = 0; //類變數
String str = "hello world"; //例項變數
public void method(){
int i = 0; //區域性變數
}
}
變數的命名規範
所有變數、方法、類名:見名知意
類成員變數:首字母小寫和駝峰原則:monthSalary 除了第一個單詞以外,後面的單詞首字母大寫
區域性變數:首字母小寫和駝峰原則
常量:大寫字母和下劃線:MAX_VALUE
類名:首字母大寫和駝峰原則:Man,GoodMan
方法名:首字母小寫和駝峰原則:run(),runRun()
常量
常量(Constant):初始化(initialize)後不能再改變值!不會變動的值。
所謂常量可以理解成一種特殊的變數,它的值被設定後,在程式執行過程中不允許被改變。
final 型別 常量名 = 值;
final double PI = 3.14;
常量名一般使用大寫字元
修飾符不存在先後順序
運算子
不同型別的變數進行運算會自動轉換為容量大的資料型別
自增運算子
int a = 1;
int b = a++;
System.out.println("a="+a); //a=2
System.out.println("b="+b); //b=1
int a = 1;
int b = ++a;
System.out.println("a="+a); //a=2
System.out.println("b="+b); //b=2
短路運算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d); //false
System.out.println(c); //5
//c的值並未發生變化,說明(c<4)判false後&&後面的運算沒有執行就退出了
位運算
A = 0011 1100
B = 0000 1101
A&B = 0000 1100 //兩者均為1才為1,其餘為0
A|B = 0011 1101 //有一個1就為1,其餘為0
A^B = 0011 0001 //相同為0,不同為1
~B = 1111 0010 //全部取反
字串連線符"+"
運算順序的不同結果也不同
int a = 10;
int b = 20;
System.out.println(""+a+b); //1020
System.out.println(a+b+""); //30