1. 程式人生 > 實用技巧 >SUSE12/15 安裝docker-ce19.03.13版本

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