1. 程式人生 > >Java初認識--基本資料型別(int 和byte之間賦值)預設值 型別強轉

Java初認識--基本資料型別(int 和byte之間賦值)預設值 型別強轉

主類和主方法 Test.java–是原始檔,原始檔必須與主類名(public class )保持一致,一個原始檔只能有一個主類 ,主方法存在與主類中。 Test.java 原始檔 主類:public class Test 主方法 : public static void main(String[] args) Java程式編譯–執行流程 編譯:javac Test.java —>Test.class(二進位制檔案)(若程式中出現中文,可以加上 -encoding UTF-8) 解釋:java Test(主類名稱) 命令列向主方法傳參 java 主類名稱 引數1 引數2 (引數1是args[0],引數2是args[1]) JDK JRE

JDK:java開發工具包,包含JRE,多了編譯器javac 以及除錯工具 JConsole、jstack,針對java程式設計師; JRE: java執行時環境,包含JVM以及Java核心類庫,是執行Java程式的環境,針對使用Java程式的客戶; JAM: java虛擬機器,(Java移植性的關鍵) 資料型別 在這裡插入圖片描述 int 在java中,任何一個整型常量都是int型別。 整型溢位:

public class Int
{
    public  static void main(String[] args)
    {
        //int 的包裝類是Integer
        int maxValue=Integer.MAX_VALUE+1;//整型最大值+1,會溢位
        int minValue=Integer.MIN_VALUE-1; //整型最小值-1,會溢位
        System.out.println(maxValue);
        System.out.println(minValue);
    }
}

在這裡插入圖片描述 到達整型最大值或最小值後,需要轉換資料型別:

  int maxValue=Integer.MAX_VALUE;
  int minValue=Integer.MIN_VALUE; 
  long max=maxValue+1;
  long min=minValue-1;
  System.out.println(max);
  System.out.println(min);

在這裡插入圖片描述 結果依然是溢位,是因為執行順序是從右向左,右邊是int型別相加,這時已經溢位,那麼max裡存的就是溢位值。 解決方法如下:

long maxValue=Integer.MAX_VALUE+1L;  //int 和long相加,int會自動提升成long
long minValue=(long)(Integer.MIN_VALUE-1);  //強轉為long

在這裡插入圖片描述 Java中小的資料與大的資料做數值運算,小的資料型別會自動提升為大的資料型別,當把I(int)宣告為long(在數字後加L或l,但推薦使用L,如num=11+1l=12,而不是22,推薦寫成11+1L,不容易造成混淆)。 在java中,大的資料轉換為小的資料,必須強轉,但會造成資料丟失。 long num = 2147483648L; int result = (int) num; //需要強轉 int 和byte

       //整型常量在byte範圍內
        byte a=120;  //byte取值範圍是 -128-127
        System.out.println(a);  //120

        //整型常量不在byte範圍內--》需要強轉
        //byte b=130;// 錯誤(從int轉換到byte可能會有損失)
        byte  b=(byte)130;  //強轉為byte
        System.out.println(b); //-126 
        byte  c=(byte)300;
        System.out.println(c); // 44  取的是300的低吧8位即44

        //整型變數--》需要強轉
        int num=12;
        //byte d=num;  //錯誤(從int轉換到byte可能會有損失)
        byte d=(byte)num;
        System.out.println(d); //12

整型常量若在byte型別的儲存範圍內,可以直接賦給byte變數,不用強轉; 整型常量若不在byte型別的儲存範圍內,必須強轉; 整型變數無論值是否在byte範圍內,都需要強轉; 上述只限於int 和byte。 對於int 和byte取值範圍可參考這篇部落格:https://blog.csdn.net/sophia__yu/article/details/81143145 預設值 在最上面一張圖,有各個型別變數的預設值,但是預設值需要結合類來觀察,主方法中變數必須先賦值再使用,在主方法中不存在預設值否則會報錯;

public class Int
{
    public  static void main(String[] args)
    {
       int value; //錯誤
       System.out.println(value);
    }
}

在這裡插入圖片描述 解決辦法如下:

public class Int
{
    int value;
    public  static void main(String[] args)
    {
        Int i1=new Int();  //需要結合類來看
        System.out.println(i1.value);  //0 
    }
}