JAVA學習--JAVA基礎(一)

Zaroku發表於2020-12-19

JAVA基礎(一)


前言

本文為作者在學JAVA中容易遇到的一些坑以及一些零散的知識點的總結,所寫內容適合有一定JAVA基礎的同學看


一、變數

Java中有八種基本型別,都是Java語言預先定義好的

這八種基本型別分別是:

  1. 整型 (4種)
  2. 字元型 (1種)
  3. 浮點型 (2種)
  4. 布林型(1種)

1)整形

型別長度數的範圍
byte8位-128~127
short16位-32768~32767
int32位-2147483648~2147483647
long64位-9223372036854774808~9223372036854774807

表中長度是指在系統中所佔二進位制的位數

例如byte長度為8,即有八個2進位制位數,所能表示的最小數為 - 27,最大數為 27-1。


2)字元型

char型別用於存放一個字元,值用單引號’表示如 ’ A’
(雙引號表示字串),長度為16
只能存放一個字元,超過一個字元就會產生編譯錯誤


3)浮點型

float 長度為32位
double 長度為64位

注意: 預設的小數值是double型別的
所以 float f = 123.45會出現編譯錯誤,因為123.45的預設型別是 double,其型別 長度為64,超過了float的長度32
在數字後面加一個字母f,直接把該數字宣告成float型別
float f = 123.45f,
這樣就不會出錯了


4) 布林型

如: boolean b1 = true;
boolean b2 = false;

布林型用於表示真假
其長度為1
分別代表真假
布林型真正存放的資料是0(false) 1(true)
不能用 0或1 直接賦值 只能用 false 或 true

5) 補充

final : 當一個變數被final修飾的時候,該變數只有一次賦值的機會

java在基本型別進行算術運算的時候,會發生小位元組型別向大位元組型別轉換的現象。
自動向上轉型是按照 char->int -> long -> float -> double的順序。比如byte+byte=int,short+short=int,由於int是2的32次方,對於一般算術運算基本夠用,所以int+int=int,如果以後計算精度要求過高,以後版本的Java還可以向上轉型。

但是char、byte、short例外。
char、byte、short是同級,他們之間相互轉型的話是不安全的。因為編譯器在執行時會首先將這三者先擴充轉為int型別,然後繼續進行計算。

二、操作符

1.邏輯運算子

“&” (長路與) 和 “ && ” (短路與)的區別

無論長路與還是短路與
兩邊的運算單元都是布林值
都為真時,才為真
任意為假,就為假
區別
長路與 兩側都會被運算
短路與 只要第一個是false,第二個就不進行運算了

如:

public class HelloWorld {
    public static void main(String[] args) {
        //長路與  無論第一個表示式的值是true或者false,第二個的值,都會被運算
        int i = 1;
        System.out.println( i== 0 & i++ ==1  ); //無論如何i++都會被執行,所以i的值變成了2

        //短路與 只要第一個表示式的值是false的,第二個表示式的值,就不需要進行運算了
        int j = 1;
        System.out.println( j== 0 && j++ ==1  );  
        //因為j==1返回false,所以右邊的j++就沒有執行了,所以j的值,還是1      
    }
}

“|” (長路或) 和 “ || ” (短路或)也和上面類似

長路或 無論第一個表示式的值是true或者false,第二個的值,都會被運算
短路或 只要第一個表示式的值是true的,第二個表示式的值,就不需要進行運算了


2.位操作符

位運算子是要在二進位制之間進行的,利用 Integer.toBinaryString()可以將一個整數轉換為二進位制數

運算子用法描述
按位與( AND)a & b對於每一個位元位,只有兩個運算元相應的位元位都是1時,結果才為1,否則為0。
按位或(OR)a|b對於每一個位元位,當兩個運算元相應的位元位至少有一個1時,結果為1,否則為0。
按位異或(XOR)a ^ b對於每一個位元位,當兩個運算元相應的位元位有且只有一個1時,結果為1,否則為0。
按位非(NOT)~ a反轉運算元的位元位,即0變成1,1變成0。
左移(Left shift)a << b將 a 的二進位制形式向左移 b (< 32) 位元位,右邊用0填充。
有符號右移a >> b將 a 的二進位制表示向右移 b (< 32) 位,丟棄被移出的位。
無符號右移a >>> b將 a 的二進位制表示向右移 b (< 32) 位,丟棄被移出的位,並使用 0 在左側填充。

3.從鍵盤輸入Scanner

注意:使用Scanner類,需要在最前面加上 import java.util.Scanner;標頭檔案

利用Scanner類從鍵盤讀取資料的例子:

import java.util.Scanner;

public class HelloWorld {
  public static void main(String[] args) {
      Scanner s = new Scanner(System.in);    // 讀取標準輸入裝置資料。
      
      int a = s.nextInt();  //讀取整數
      System.out.println("讀取的整數是:"+a);
      
      double b = s.nextDouble();
      System.out.println("讀取的浮點數(double)的值是:"+b);
      
      float c = s.nextFloat();
      System.out.println("讀取的浮點數(float)的值是:"+c);
      
      String d = s.nextLine();
      System.out.println("讀取的字串是:"+d);
      
      s.close();  //讀完後關閉輸入流
  }
}

需要注意的是,如果在通過nextInt()讀取了整數後,再接著讀取字串,讀出來的是回車換行:"\r\n",因為nextInt僅僅讀取數字資訊,而不會讀取回車換行"\r\n".
所以,如果需要在讀取了整數後,接著讀取字串,那麼就應該連續執行兩次nextLine(),第一次是取走回車換行,第二次才是讀取真正的字串


本文出自 https://blog.csdn.net/Zaroku 轉載請註明出處。

本文僅為個人收藏,分享知識,並會不定期的進行修改,如有侵權,請聯絡我進行刪除

相關文章