1. 程式人生 > 其它 >一、java基礎補充

一、java基礎補充

1.java執行流程

  1. 原始檔由編譯器編譯成位元組碼(ByteCode),也就是.class檔案
  2. 位元組碼由java虛擬機器解釋執行

通過命令列操作java程式:

javac test.java
java test

使用萬用字元編譯:

javac test*.java

帶有test字首的原始檔都會被編譯

2.八大基本型別

2.1儲存特性

  1. 整型

    型別 儲存
    int 4位元組
    short 2位元組
    long 8位元組
    byte 1位元組

    長整型會有l或L為字尾,如5000000L

    十六進位制字首0x或0X

    二進位制字首0b或0B

  2. 浮點型別

    型別 儲存
    float 4位元組
    double 8位元組

    float字尾f或F,沒有後綴預設為double

    • 三個特殊浮點數

      Double.POSITIVE_INFINITY:正無窮

      Double.NEGATIVE_INFINITY:負無窮

      Double.NaN:非數值

      不能通過==判等,只能通過靜態方法Double.isNaN()

  3. char型別

    表示單個字元,可表示為十六進位制值

  4. boolean型別

    只有兩個值:true,false

    不能與整型相互轉換

2.2型別轉換

小型別轉換為大型別,整型轉浮點

例如二元運算時,有double型別優先轉換double,否則轉換float,再否則...

3.變數

從java 10開始,出現了var關鍵字,可通過變數值自動識別變數型別

注意:只能是方法中的區域性變數

var a=12;			//a is an int
var str="hhhh";		//str is a String

3.1常量

使用final關鍵字

final:不允許賦值之後再修改

static final:可以在多個地方直接引用

3.2列舉型別

定義一個集合

enum Size{big,small};		//定義列舉型別Size
Size s=Size.big;			//為列舉變數賦值

列舉型別只能賦集合中的值或者null

3.3運算子

  1. 三元運算子

    x<y?x:y
    //若x<y,取x,否則取y
    
  2. 位運算

    與:&
    或:|
    非:~
    異或:^
    左移:<<
    右移,高位補符號位:>>
    高位補0右移:>>>
    

    位運算,顧名思義就是把數值轉換為二進位制按位進行操作

4.字串

4.1字串

String str0="Hello";
String str1=str0.substring(0,3);//str1="Hel"

4.2拼接

通過+進行拼接字串

4.3不可變字串

String物件是不可變的

所謂的修改String物件實際上是new了一個新的String物件並指向他

4.4檢查字串是否相等

使用.euqals()判等

"Hello".equals(str)

4.5空串與null

空串是長度為0的串,“”

空串並非null,null是未被初始化的串

4.6碼點

Java字串由char序列組成

char是一個UTF-16的程式碼單元,表示Unicode碼點

問題:有的Unicode字元需要不止一個程式碼單元表示

相關方法:CodePoint

4.6高效構建字串

StringBuilder類

為何高效:避免了每次修改都new一個新的String物件,修改都是再容器裡進行,只有最後生成時才new一個字串

常用方法:

builder.append();//追加字串
String str = builder.toString();//生成字串

5.輸入輸出

5.1輸入

標準輸入流:System.in

首先需要一個Scanner

Scanner in = new Scanner(System.in);
String name = in.nextLine();	//讀取一行

幾種常用方法區別:

nextLine();	//遇到回車結束
next();		//遇到空格結束
nextInt();	//讀取整數
hasNext();	//檢測是否還有輸入

5.2輸出

格式化輸出,可以用佔位符替換輸出

相應的佔位符要用時查表

5.3檔案輸入輸出

  1. 用Scanner讀取檔案

    Scanner in = new Scanner(Path.of("123.txt"),StandardCharsets.UTF_8); //指定路徑和字符集
    
  2. 寫入檔案

    需要PrintWriter物件

    PrintWriter out = new PrintWriter("123.txt",StandardCharsets.UTF_8);
    

6.陣列

6.1一維陣列

//以下幾種建立都是可以的
int[] a = new int[100];
int a = {1,2,3};
int a = {1,2,3,};

可以用以下方法拷貝

int a = Arrays.copyOf(b,b.length);

可以通過foreach語法遍歷

for(int b : a){
    ...
}//b會遍歷a

6.2多維陣列

Java沒有真正意義上的多維陣列,實際上只有陣列的陣列

所有陣列可以是不規則的

//建立方式
int[][] two = new int[100][50];
int[][] two = {
    {1,2,3},
    {4,5,6,7}
};