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
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
}
}