国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - Java開發面試必問項!標識符、字面值、變量、數據類型

Java開發面試必問項!標識符、字面值、變量、數據類型

2021-08-02 22:41Java如何學 Java教程

從目前流行的開發技術、常見的面試問題以及問題的答案都已經寫的特別清楚了,今天我給寫一篇初級Java開發面試必問項!供大家閱讀參考。

最近事情太多,沒太時間寫博客。今天抽空再整理整理面試中的那點事吧,幫助那些正在找工作或想跳槽找工作的學弟學妹們。

從目前流行的開發技術、常見的面試問題以及問題的答案都已經寫的特別清楚了,今天我給寫一篇初級Java開發面試必問項!供大家閱讀參考。

Java開發面試必問項!標識符、字面值、變量、數據類型

標識符

 

關于java語言當中的標識符

1、什么是標識符

  • 在java源程序當中凡是程序員有權利自己命名的單詞都是標識符
  • 標識符在EditPlus編輯器當中以黑色字體高亮顯示
  • 標識符可以標識什么元素呢?
  • 類名 * 方法名 * 變量名 * 常量名 等等...

2、標識符的命名規則【不按照這個規則來,編譯器會報錯,這是語法】

  • 一個合法的標識符只能由“數字、字母、下劃線_、美元符號$”組成,不能含有其他符號
  • 不能數字開頭
  • 嚴格區分大小寫
  • 關鍵字不能做標識符
  • 理論上無長度限制,但是最好不要太長

3、表示符的命名規則【只是一種規范,不屬于語法,不遵守規范編譯器不會報錯】

  1. //最好見名知意 
  2.             public class UserService{ 
  3.                 public void login(String username,String password){ 
  4.                 } 
  5.             } 
  6. //遵守駝峰命名方式 
  7.  
  8.             SystemService  UserService  CustomerService 
  • 類名、接口名:首字母大寫,后面每個單詞首字母大寫
  • 變量名、方法名:首字母大寫,后面每個單詞首字母大寫
  • 長量名:全部大寫

4、合法和不合法的標識符

Java開發面試必問項!標識符、字面值、變量、數據類型

  1. */ 
  2. public class IdentifierTest01  
  3. //IdentifierTest01是一個類名,名字可以修改   
  4.     //main是一個方法名 
  5.     public static void main(String[] agrs){  
  6.     //args是一個變量名 
  7.     } 
  8.  
  9.     //doSome就是方法名 
  10.     public static void doSome(){ 
  11.         //i就是變量名 
  12.         int i = 10; 
  13.     } 

字面值

 

關于字面值:

  • 字面值:
  • 10、100、3.14、"abc"、'a'、true、false
  • 字面值就是數據
  • 字面值是java源程序的組成部分之一,包括標識符和關鍵字他們都是java源程序的組成部分。
  • 數據在現實世界當中是分門別類的,所以數據在計算機編程語言當中也是有類型的:【數據類型】

Java開發面試必問項!標識符、字面值、變量、數據類型

注意:

  • java語言當中所有的字符串字面值必須使用雙引號括起來,雙引號是半角
  • java語言當中所有的字符型字面值必須使用單引號括起來,單引號是半角
  1. */ 
  2. public class ConstTest01 
  3.     public static void main(String[] args){ 
  4.         System.out.println("abc"); 
  5.         System.out.println("你最近過得好嗎?"); 
  6.         System.out.println(10); 
  7.         System.out.println(false); 
  8.         System.out.println(true); 
  9.         System.out.println('A'); 
  10.         System.out.println(3.14); 
  11.         // 編譯報錯,因為單引號中只能存放單個字符,屬于字符型字面值 
  12.         // System.out.println('ABC'); 
  13.         //Java開發交流君樣:593142328 
  14.         // 100是一個字面值,是一個整數型數值,那么既然是數據存儲在內存當中,必定會占用一定的內存空間。 
  15.         System.out.println(100); 
  16.     } 

變量

 

一、關于java語言當中的變量:

1、什么是變量?

  • 變量本質上來說是內存中的一塊空間,這塊空間有:數據類型,有名字、有字面值。
  • 變量包含三部分:數據類型、名稱、字面值【數據】
  • 變量是內存中存儲數據的最基本的單元。

2、數據類型的作用?

  • 不同的數據有不同的類型,不同的數據類型底層會分配不同大小的空間。
  • 數據類型是指導程序在運行階段應該分配多大的內存空間。

3、變量要求:變量中存儲的具體的“數據”必須和變量的“數據類型”一致,當不一致的時候編譯報錯。

4、聲明/定義變量的語法格式:

  • 數據類型 變量名;
  • 數據類型:目前我們還沒有學習數據類型,但是有一種數據類型是整數型,叫做int
  • 變量名:只要是合法的標識符就行,規范中要求:首字母小寫,后面每個單詞首字母大寫
  • 例如: int i: 、int age; 、int length; 、int size;、 int num;其中int是數據類型,i,age,length,size,num 都是變量名。

5、變量聲明之后怎么賦值?

- 語法格式:變量名 = 字面值;

- 要求:字面值的數據類型必須和變量的數據類型一致。

= 等號是一個運算符,叫做賦值運算符,賦值運算等號右邊的表示,表示式執行結束之后的結果賦值給左邊的變量。

6、聲明和賦值可以放到一起完成。

  1. int i = 10; 

7、變量賦值之后,可以重新賦值,變量的值可變化:

  1. int i = 10; System.out.println(i); //10 
  2.           int i = 20; System.out.println(i); //20 
  3.           int i = 100; System.out.println(i); //100 

8、有了變量的概念之后,內存空間得到了重復的使用;

  1. int i = 10;  System.out.println(i); ...  System.out.println(i); 

9、通常訪問一個變量包括兩種訪問形式:

  • 第一種:讀取變量中保存的具體數據 get/獲取
  • 第二種:修改變量中保存的具體數據 set/設置
  1. i = 20: //set 
  2.               System.out.println(i); //get 

10、變量在一行上可以聲明多個

  1. int a,b,c; 

11、變量必須先聲明,再賦值,才能訪問。

  • int i; 程序執行到這里,內存空間并沒有開辟出來,變量i并沒有初始化。所以沒有賦值之前是無法訪問的。
  1. public class VarTest01 
  2.     public static void main(String[] args){ 
  3.      
  4.         //聲明一個int類型的變量,起名i 
  5.         int i; 
  6.         // 編譯報錯,變量i并沒有初始化 
  7.         // System.out.println(i); 
  8.          
  9.  
  10.         // 給i變量賦值,i 變量在這里完成初始化,內存開辟 
  11.         i = 100; 
  12.         System.out.println(i); 
  13.  
  14.         // i 再次重新賦值 
  15.         i = 200; 
  16.         System.out.println(i); 
  17.  
  18.         // 一行上可以同時聲明多個變量 
  19.         // a和b尚未初始化,c賦值300 
  20.         // int a,b,c = 300; 
  21.     } 

二、關于java語言當中的變量:使用所有的基礎語法開發系統業務

1、在方法體當中的java代碼,是遵守自上而下的順序依次執行的,逐行執行。

  • 第一行;第二行;第三行;

特點:第二行的代碼必須完整的結束之后,第三行程序才能執行。

2、在同一個“作用域”當中,變量名不能重名,但是變量可以重新賦值。

  1. public class VarTest02 
  2.     public static void main(String[] args) 
  3.         int i = 100; 
  4.         System.out.println(i); //100 
  5.  
  6.         i = 200; 
  7.         System.out.println(i); //200 
  8.  
  9.         // 以下代碼順序有錯誤,先聲明然后復制再訪問 
  10.         /* 
  11.         System.out.println(k); 
  12.         int k = 100; 
  13.         */ 
  14.         /* 
  15.         int i = 90; 
  16.         System.out.println(i); 
  17.         */ 

三、關于java中的變量;

  1. 變量的作用域 

1、什么是作用域?

  1. - 變量的作用域,其實描述的就是變量的有效范圍。 
  2.          在什么范圍之內是可以被訪問的,只要出了這個范圍該變量就無法訪問了。 

2、變量的作用域只要記住一句話:

  1. 出了大括號就不認識了。 
  1. public class VarTest03 
  2.     //注意: 這里在static不要去掉 
  3.     static int k = 90; 
  4.  
  5.     public static void main(String[] args) 
  6.         // 變量i的作用域是main方法 
  7.         // 在整個main方法當中是有效的,可見的,可以訪問的 
  8.         int i = 100; 
  9.         System.out.println(i): // 可以 
  10.         System.out.println(k): // 可以 
  11.  
  12.         // 以下會編寫一個for循環語句 
  13.         // 這個for循環后面的控制語句的時候詳細講解 
  14.         for(int a=0;a<10;a++){ //a變量的作用域是整個for循環,for循環結束之后,a變量的內存就釋放了 
  15.         } 
  16.         // 這里無法訪問a變量 
  17.         // System.out.println(a): 
  18.  
  19.         int j; // 作用域是main方法 
  20.         for (int j=0;j<10;j++){ 
  21.         } 
  22.         System.out.println(j): // 訪問的是main方法中的j變量 
  23.          
  24.     } 
  25.     public static void doSome(String[] args) 
  26.         // 這里無法訪問main方法當中的變量i 
  27.         // 已經出了i變量的作用域。 
  28.         // System.out.println(i): 
  29.  
  30.  
  31.         // 可以 
  32.         System.out.println(k): 
  33.     } 

四、關于變量的分類:

根據變量聲明的位置分類;

  • 局部變量
  • 在方法體當中聲明的變量叫做局部變量
  • 成員變量
  • 在方法體外【類體之內】聲明的變量叫做成員變量
  • 在不同的作用域當中,變量名是可以相同的。
  • 在同一個作用域當中,變量名不能重名。
  1. public class VarTest04 
  2. {     
  3.     // 成員變量 
  4.     int k = 200; 
  5.  
  6.     // 主方法:入口 
  7.     public static void main(String[] args){ 
  8.         // i變量就是局部變量 
  9.         int i = 10; 
  10.          
  11.         // java遵循“就近原則” 
  12.         System.out.println(i); 
  13.     } 
  14.  
  15.     // 成員變量 
  16.     int i = 100; // 什么變量 
  17.     // 類體中不能直接編寫java語句【除聲明變量之外】 
  18.     // System.out.println(i): 
  19.  
  20.     // doSome方法 
  21.     public static void doSome(){ 
  22.         // 局部變量 
  23.         int i = 90; 
  24.  
  25.          
  26.     } 

數據類型

 

一、關于java中的數據類型:

1、數據類型的作用是什么?

  • 程序當中有很多數據,每一個數據都是有相關類型的,不同的數據類型的數據占用空間大小不同。
  • 數據類型的作用是指導JVM在運行程序的時候給該數據分配多大的內存空間。

2、java中的數據類型包括兩種:

  • 基本數據類型
  • 引用數據類型【后邊解釋】
  • 類、接口、數據、等等...

3、關于基本數據類型:

  • 基本數據類型包括四大類八小種:

第一類:整數型

  • byte、short、int、long

第二類:浮點型

  • float、double

第三類:布爾型

  • boolean

第四類:字符型

  • char

4、字符串“abc”不屬于基本數據類型,屬于"引用數據類型",字符屬于基本數據類型:

  • 字符串使用雙引號 "abc"
  • 字符使用單引號 'a'

5、八種基本數據類型各自占用空間大小是多少?

Java開發面試必問項!標識符、字面值、變量、數據類型

6、計算機在任何情況下都只能識別二進制。例如:只認識101000101...

現代的計算機底層采用交流電的方式,接通和斷開就兩種狀態,計算機只識別1或0,其他不認識】

7、什么是二進制?

數據的一種表示形式,十進制表示滿十進一原則。二進制表示滿二進一原則。

  1. /  例如:十進制 
  2.                   0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20  
  3.           /  例如:二進制 
  4.                   0 1 10 11 100 101 110 111 1000 1001 ... 
  5.                   0 1 2  3  4    5  6   7    8     9 

8、字節(byte)

  1. 1 byte = 8 bit 【1個字節 = 8個比特位】1比特位表示一個二進制位: 1/0 
  2.            1 KB = 1024 Byte、1 MB = 1024 KB、1 GB = 1024 MB、1 TB = 1024 GB 
  3.            1 TB = 1024 * 1024 * 1024 * 1024 * 8 
  4.             

9、整數型當中的byte類型,占用1個字節,所以byte類型的數據占用9個比特位,那么byte類型的取值范圍是什么?

  • 關于java中的數字類型,數字都是有正負之分的,所以在數字的二進制當中有一個二進制位被稱為”符號位“。并且這個”符號位“在所有二進制的最左邊,0表示正數,1表示負數。
  • byte類型最大值:01111111 【0000010000000(二進制) - 1】
  • byte類型最大值:2的7次方-1,結果是:127
  • byte類型最小值: -128 【具體的怎么用二進制表示,這個和源碼、反碼、補碼有關】
  • byte類型取值范圍:【-128~127】
  • bytp類型可以標識256個不同的數字【256個不同的二進制】

10、二進制和十進制之間的轉換規則:

  • 二進制轉換成十進制
  • 十進制轉換成二進制

11、計算機只認識二進制,那么計算機是怎么表示現實世界當中的文字的呢?

  • 八種基本數據類型當中,byte、short、int、long、float、double、boolean這7種數據類型計算機在表示的時候比較容易,因為底層都是數字,十進制的數字和二進制之間存在一種固定的轉換規則。
  • 但是八種基本數據類型當中char類型表示的是現實世界中的文字,文字和計算機二進制之間”默認“情況下是不存在任何轉換關系的。
  • 為了讓計算機可以表示現實世界當中的文字,我們需要進行人為的干涉,需要人負責提前制定好”文字“和”二進制“之間的對照關系。這種對照轉換關系被稱為:字符編碼。
  • 計算機最初只支持英文,最先出現的字符編碼是:ASCII碼
  1. 'a' -> 97 【01100001】 
  2.                'A' -> 65 
  3.                '0' -> 48 
  4.  
  5.                'a' -- (按照ASCII解碼) --> 01100001 
  6.                01100001 -- 按照ASCII編碼 --> 'a' 

編碼和解碼的時候采用同一套字典/對照表,不會出現亂碼。

當解碼和編碼的時候采用的不是同一套對照表,會出現亂碼問題,

  • 跟著計算機的發展,后來出現了一種編碼方式,是國際標組織ISO制定,這種編碼方式支持西歐語言,向上兼容ASCII碼仍然不支持中文,這種編碼方式是:ISO-8859-1,又被稱為latin-1
  • 跟著計算機向亞洲發展,計算機開始支持中文、日文、韓文等國家文字,其中支持簡體中文的編碼方式:GB2312 < GBK < GB18030
  • 支持繁體中文:大五碼
  • 后來出現了一種編碼方式統一了全球所有的文字,容量較大,這種編碼方式叫做:unicode編碼
  • unicode編碼方式有很多種具體的實現:
  • UTF-8、UTF-16、UTF-32....
  • java語言采用的是哪一種編碼方式呢?
  • java語言源代碼采用的是unicode編碼方式,所以標識符可以寫中文。
  • 現在在實際開發中,一般使用UTF-8編碼方式較多。【統一編碼方式】

12、八種基本數據類型的取值范圍:

Java開發面試必問項!標識符、字面值、變量、數據類型

注意:short和char所表示的種類總數是一樣的,只不過char可以標識更大的正整數。

因為char沒有負數。

13、以下java程序主要講解的是數據類型之,char類型

  1. public class DataTypeTest01 
  2.     public static void main(String[] args){ 
  3.         // 定義一個char類型的變量,起名c,同時賦值字符'a' 
  4.         char c = 'a'
  5.         System.out.print(c); 
  6.  
  7.         // 一個中文占用2個字節,char類型正好是2個字節 
  8.         // 所以java中的char類型變量可以存儲一個中文字符 
  9.         char x = '國'; 
  10.         System.out.print(x); 
  11.          
  12.         // 編譯錯誤 
  13.         // ab是字符串不能使用單引號括起來 
  14.         // char y = 'ab'
  15.  
  16.         // "a"是字符串類型 
  17.         // k變量是char類型 
  18.         // 類型不兼容,編譯錯誤 
  19.         char k = "a"
  20.          
  21.         // 聲明 
  22.         char e; 
  23.  
  24.         // 賦值 
  25.         e = "e"
  26.  
  27.         // 再次賦值 
  28.         System.out.print(e); 
  29.     } 

二、關于八種數據類型的默認值

Java開發面試必問項!標識符、字面值、變量、數據類型

八種基本數據類型的默認值是一切向0看齊。

  1. public class DataTypeTest02 
  2.         // 這里的static必須加,別問。 
  3.         static int k = 1000; 
  4.          
  5.         // 變量還是遵守這個語法:必須先聲明,在賦值,才能訪問。 
  6.         // 成員變量沒有手動賦值系統會默認賦值【局部變量不會】 
  7.         static int f; //成員變量 
  8.  
  9.         public static void main(String[] args){ 
  10.             /* 
  11.                 int i; //局部變量 
  12.                 System.out.print(i); 
  13.             */ 
  14.             System.out.print(k); 
  15.  
  16.             System.out.print(f); 
  17.         } 

三、關于java語言中的char類型:

轉義字符

轉義字符出現在特殊字符之前,會將特殊字符轉換成普通字符。

  • \n 換行符
  • \t 制表符
  • ' 普通的單引號
  • \ 普通的反斜杠
  • " 普通的雙引號
  1. public class DataTypeTest03 
  2.     public static void main(String[] args){ 
  3.  
  4.         // 普通的n字符 
  5.         char c1 = 'n'
  6.         System.out.print(c1); 
  7.          
  8.         // 依照目前所學知識,一下程序無法編譯通過,因為顯示是一個字符串,不能使用單引號括起來 
  9.         // 但是經過編譯,發現編譯通過了,這說明以下并不是一個字符串,而是“一個”字符 
  10.         // 這是一個“換行符”,屬于char類型的數據 
  11.         // 反斜杠在java語言當中具有轉義功能。 
  12.         char c2 = '\n'
  13.  
  14.         /* 
  15.         System.out.print("Hello"); 
  16.         System.out.print("World!"); 
  17.         */ 
  18.          
  19.         // System.out.println()和System.out.print()區別: 
  20.         // println輸出之后換行,print表示輸出,但是不換行 
  21.         /* 
  22.         System.out.print("Hello"); 
  23.         System.out.println("World!"); 
  24.         */ 
  25.  
  26.         System.out.print("A"); 
  27.         // System.out.print(c2); 
  28.         System.out.println("B"); 
  29.  
  30.         // 普通的t字符 
  31.         char x = 't'
  32.         System.out.print("t"); 
  33.  
  34.         // 制表符tab 
  35.         // 強調:制表符和空格不一樣,他們的ASCII不一樣,體現在鍵盤上兩個不同的“按鍵” 
  36.         char y = '\t'
  37.         System.out.println("A"); 
  38.         System.out.print(y); 
  39.         System.out.println("B"); 
  40.  
  41.         // 要求在控制臺上輸出“反斜杠字符” 
  42.         /* 
  43.         // 反斜杠蔣后面的單引號轉義成不具備特殊含義的普通單引號字符,左邊的單引號缺少了結束的單引號字符,編譯報錯 
  44.         char k = '\'
  45.         System.out.println(k); 
  46.         */ 
  47.         /* 
  48.           // 解釋:第一個反斜杠具有轉義功能,將后面的反斜杠轉義為普通的反斜杠字符。 
  49.           結論:在java當中兩個反斜杠代表一個普通的反斜杠字符 
  50.         */ 
  51.         char k = '\\'
  52.         System.out.println(k); 
  53.  
  54.         // 在控制臺上輸出一個普通的單引號字符 
  55.         // java中不允許這樣編寫程序,編譯報錯 
  56.         // char a = '';  
  57.  
  58.         // 以下編譯報錯:第一個單引號和第二個單引號配對兒,最后的單引號找不到另一半! 
  59.         // char a = '''; 
  60.         // System.out.println(a); 
  61.          
  62.         // 反斜杠具有轉義功能,將第二個單引號轉換成普通的單引號字符,第一個單引號和最后單引號配對。 
  63.         char a = '\''
  64.         System.out.println(a); 
  65.  
  66.         char f = '"'
  67.         System.out.println(f); 
  68.  
  69.         // 編譯錯誤 
  70.         // System.out.println(""HelloWorld!""); 
  71.  
  72.         // 糾正 
  73.         System.out.println("\"HelloWorld!\""); 
  74.  
  75.         char m = '中'
  76.         System.out.println(m); 
  77.  
  78.         // JDK中自帶的native2ascii.exe命令,可以將文字轉換成unicode編碼形式 
  79.         // 怎么使用這個命令: 
  80.         // 在命令行輸出native2ascii,回車,然后輸入文字之后回車即可得到unicode編碼 
  81.         char n = "\u4e2d"; // '中'對應的unicode編碼是 4e2d 
  82.         System.out.println(n); 
  83. //vx小助手:xiehuangbao1123 領取資料面試真題 
  84.         // 編譯錯誤 
  85.         // char g = '4e2d'
  86.  
  87.         // 編譯錯誤 
  88.         // char g = 'u4e2d'
  89.  
  90.         // 通過:反斜杠u聯合起來后面的一串數字是某個文字的unicode編碼 
  91.         char g = '\u4e2d'
  92.         System.out.println(g); 
  93.          
  94.         // char類型的默認值 
  95.         char c = '\u0000'; 
  96.         System.out.println(c); 
  97.  
  98.  
  99.  
  100.     } 

四、關于java語言當中的整數型:

數據類型 占用空間大小 默認值 取值范圍

  1. 數據類型            占用空間大小        默認值            取值范圍 
  2.        ---------------------------------------------------------------- 
  3.        byte                1                    0                [-128 ~ 127] 
  4.        short                2                    0                [-32768 ~ 32767] 
  5.        int                    4                    0                [-2147483648 ~ 2147483647] 
  6.        long                8                    0L 

1、java語言當中的“整數型字面值”被默認當做int類型來處理,要讓這個“整數型字面值”被當做long類型來處理的話,需要在“整數型字面值”后面添加1/L,建議使用大寫的L

2、java語言當中的整數型字面值有三種表示方式:

  • 第一種方式:十進制【是一種缺省的默認的方式】
  • 第二種方式:八進制【在編寫八進制整數型字面值的時候需要以0開始】
  • 第三中方式:十六進制【在編寫十六進制整數型字面值的時候需要以0x開始】
  1. public class DataTypeTest04 
  2.     public static void main(String[] args){ 
  3.         int a = 10;      // 缺省 
  4.         int b = 010;  // 整數型字面值以開頭的,后面那一串數字就是八進制形式 
  5.         int c = 0x10; // 整數型字面值以0x開頭的,后面一串數字就是十六進制形成 
  6.  
  7.         System.out.println(a); // 10 
  8.         System.out.println(b); // 8 
  9.         System.out.println(c); // 16 
  10.  
  11.         System.out.println(a + b + c); //34 
  12.  
  13.         // 123這個整數型字面值int類型 
  14.         // i 變量聲明的時候也是int類型 
  15.         // int類型的123賦值給int類型的變量i,不存在類型轉換 
  16.         int i = 123; 
  17.         System.out.println(i); 
  18.  
  19.         // 456整數型字面值被當做int類型,占用4個字節 
  20.         // x變量在聲明的時候是long類型,占用8個字節 
  21.         // int類型的字面值456賦值給long類型的變量x,存在類型轉換 
  22.         // int類型轉換成long類型 
  23.         // long類型是大容量 
  24.         // 小容量可以自動轉換成大容量,稱為自動類型轉換機制。 
  25.         long x =456; 
  26.         System.out.println(x); 
  27.         //vx小助手:xiehuangbao1123 領取資料面試真題 
  28.         // 2147483647字面值是int類型,占用4個字節 
  29.         // y是long類型,占用8個字節,自動類型轉換 
  30.         long y = 2147483647; 
  31.         System.out.println(y); 
  32.  
  33.         // 編譯錯誤:過大的整數,2147483648 
  34.         // 2147483648 被當做int類型4個字節處理,但是這個字面值超出int類型范圍 
  35.         // long z = 2147483648; 
  36.  
  37.         // 解決錯誤 
  38.         // 2147483648字面值一上來就當做long類型來處理,在字面值后面添加L 
  39.         // 2147483648L是8個字節的long類型 
  40.         // z是long類型變量,以下程序不存在類型轉換 
  41.         long z = 2147483648L; 
  42.         System.out.println(z); 
  43.      
  44.     } 

五、關于java中的整數型

  • byte
  • short
  • int
  • long
  1. public class DataTypeTest05 
  2.     public static void main(String[] args){ 
  3.          
  4.         // l00L是long類型字面值 
  5.         // x是long類型變量 
  6.         // 不存在類型轉換,直接賦值 
  7.         long x = 100L; 
  8.  
  9.         // x變量是long類型,8個字節 
  10.         // y變量是int類型,4個字節 
  11.         // 以下程序可以編譯通過嗎? 
  12.         // 編譯報錯,大容量不能直接賦值給小容量 
  13.         // int y = x; 
  14.  
  15.         // 大容量轉換成小容量,需要進行強制類型轉換 
  16.         // 強制類型轉換需要加“強制類型轉換符” 
  17.         // 加上強制類型轉換符之后編譯通過了,但是運行階段可能損失精度。 
  18.         // 所以強制類型轉換謹慎使用,因為損失精度之后可能損失很嚴重。 
  19.         // 強轉原理: 
  20.            // 原始數據:00000000 00000000 00000000 00000000 00000000 00000000 00000000 01100100 
  21.            // 強轉之后的數據;00000000 00000000 00000000 01100100 
  22.            // 將左邊的二進制砍掉【所有的數據強轉的時候都是這樣完成的】 
  23.         int y = (int)x; 
  24.         System.out.println(y); 
  25.          
  26.         // 原始數據:00000000 00000000 00000000 00000000 10000000 00000000 00000000 00000000 
  27.         // 強轉之后的數據;10000000 00000000 00000000 00000000 
  28.         // 10000000 00000000 00000000 00000000 目前存儲在計算機內部,計算機存儲數據都是采用補碼的形式存儲 
  29.         // 所以 10000000 00000000 00000000 00000000 現在是一個補碼形式 
  30.         // 將以上的補碼轉換到原碼就是最終的結果 
  31.         long k = 2147483648L; 
  32.         int e = (int)k; 
  33.         System.out.println(e); // 損失精度嚴重,結果是負數 【-2147483648】 
  34.  
  35.         // 分析以下程序是否可以編譯通過? 
  36.         // 依據目前所學內容,以下程序是無法編譯通過的 
  37.         // 理由:50是int類型的字面值,b是byte類型的變量,顯然是大容量int轉換成小容量byte 
  38.         // 大容量轉換成小容量是需要添加強制類型轉換符的,以下程序沒有添加強轉符號,所以編譯報錯。 
  39.         // 但是,在實際編譯的時候,一下代碼編譯通過,這說明:在java語言中,當一個整數型字面值 
  40.         // 沒有超過byte類型取值范圍的話,該字面值可以直接賦值給byte類型的變量。 
  41.         byte b = 50; // 可以 
  42.  
  43.         byte c = 127;  // 可以 
  44.  
  45.         // 編譯報錯,128這個int類型的字面值已經超出了byte類型的取值范圍,不能直接賦值給byte類型的變量 
  46.         // byte b1 = 128;   
  47.  
  48.         // 糾正錯誤,需要使用強制類型轉換符 
  49.         // 但是一定會損失精度 
  50.         // 原始數據:10000000 00000000 00000000 00000000 
  51.         // 強轉之后:10000000 【這是存儲在計算機內部的,這是一個補碼,它的原碼是什么?】 
  52.         byte b1 = (byte)128; // -128 
  53.         System.out.println(b1); 
  54.  
  55.         /* 
  56.             計算機二進制有三種表示形式: 
  57.                 原碼、反碼、補碼 
  58.             計算機在任何情況下底層表示和存儲數據的時候采用了補碼形式。 
  59.             整數的補碼:和原碼相同 
  60.             負數的補碼:負數的絕對值對應的二進制碼所有二進制拉取反,再加1 
  61. //vx小助手:xiehuangbao1123 領取資料面試真題 
  62.             補碼:10000000 
  63.             原碼計算機過程: 
  64.                 - 10000000 - 1 --> 01111111 
  65.                 - 10000000 --> 128 
  66.                 - -128 
  67.         */ 
  68.         // 原始數據:00000000 00000000 00000000 11000110 
  69.         // 強制類型轉換之后:11000110 
  70.         // 11000110 - 1 --> 11000101 
  71.         // 00111010 【2 + 8 + 16 + 32】 --> 58 
  72.         // 58 
  73.         byte m = (byte)198; 
  74.         System.out.println(m);  // -58 
  75.  
  76.         short s = 32767;  // 通過 
  77.         // short s = 32768;  // 編譯報錯 
  78.  
  79.         // 65535是int類型,4個字節 
  80.         // cc是char類型,2個字節 
  81.         // 按照以前所學知識點來說,以下程序是編譯報錯的。 
  82.         // char cc = 65535;  // 通過 
  83.         // cc = 65536; //編譯報錯 
  84.  
  85.         /* 
  86.             當一個整數字面值沒有超出byte,short,char的取值范圍,這個字面值 
  87.             可以直接賦值給byte,short,char類型的變量,這種機制SUN允許了,目的是為了方便程序員的編程。 
  88.         */ 
  89.     } 

六、關于浮點型數據類型:

float單精度【4個字節】

double 雙精度【8個字節,精度較高】

double的精度太低【相對來說的】,不適合做財務軟件。

財務涉及到錢的問題,要求精度較高,所以SUN在基礎SE類庫當中

為程序員準備了精確度更高的類型,只不過這種類型是一種引用數據類型,不屬于基本數據類型,它是:

java.math.BigDecimal

其實java程序中SUN提供了一套龐大的類庫,java程序員是基于這套基礎的類庫來進行開發的,所以要知道java的SE類庫的字節碼在哪里,要知道java的SE類庫的源碼在哪里。

  • SE類庫字節碼:\Java\jdk1.8.0_101\jre\lib\rt.jar
  • SE類庫源碼: D:\Java\jdk1.8.0_101\src.zip
  • 例如;String.java和String.class
  • 我們的(String[] args)中的String使用的就是String.class字節碼文件

在java語言當中,所有的浮點型字面值【3.0】,默認被當做double類型來處理

要想改字面值當做float類型來處理,需要在字面值后面添加F/f

注意:

double和float在計算機內部二進制存儲的時候存儲的都是近似值。

在現實世界當中有一些數字是無限循環的,例如:3.3333333333333......

計算機的資源是有限的,用有限的資源存儲無限的數據只能存儲近似值

  1. public class DataTypeTest06 
  2.     public static void main(String[] args){ 
  3.         // 3.0是double類型的字面值 
  4.         // d是double類型的變量 
  5.         // 不存在類型轉換 
  6.         double d = 3.0; 
  7.         System.out.println(d); 
  8.         //vx小助手:xiehuangbao1123 領取資料面試真題 
  9.         // 5.1是double類型的字面值 
  10.         // f是float類型的變量 
  11.         // 大容量轉換成小容量需要加強制類型轉換符,所以以下程序編譯錯誤。 
  12.         // float f = 5.1; 
  13.  
  14.         // 解決方案: 
  15.         // 第一種方式:強制類型轉換 
  16.         // float f = (float)5.1; 
  17.  
  18.         // 第二種方式:沒有類型轉換 
  19.         float f = 5.1f; 
  20.     } 

七、關于布爾型數據類型

boolean

在java語言當boolea類型只有兩個值:turefals,沒有其他值。

不像C語言當中,0和1可以表示假和真。

在底層存儲的時候boolean類型占用1個字節,因為實際存儲的時候false底層是0,true底層是1.

布爾類型在實際開發當中非常重要,經常使用在邏輯運算和條件控制語句當中。

  1. public class DataTypeTest07 
  2.     public static void main(String[] args){ 
  3.         // 編譯錯誤:不兼容的類型 
  4.         // boolean flag = 1; 
  5.  
  6.         //boolean loginSuccess = true;  
  7.         boolean loginSuccess = false;//vx小助手:xiehuangbao1123 領取資料面試真題 
  8.  
  9.         // if語句以后在解釋【條件控制語句】 
  10.         if(loginSuccess){ 
  11.             System.out.println("恭喜你,登錄成功"); 
  12.         }else
  13.             System.out.println("對不起,用戶名不存在或者密碼錯誤!"); 
  14.             } 
  15.     } 

八、關于基本數據類型之間的互相轉換:轉換規則

1.八種基本數據類型當中出布爾類型之外剩下的7種類型之間都可以互相轉換【白嫖資料】

2.小容量向大容量轉換,稱為自動類型轉換,容量從小到大排序:

byte < short < int < long < float < double char <

注:任何浮點類型不管占用多少個字節,都比整數型容量大。char和short可表示的種類數量相同,但是char可以取更大的正整數

3.大容量轉換成小容量,叫做強制類型轉換,需要加強制類型轉換符,程序才能編譯通過,但是在運行階段可能會損失精度,所以謹慎使用。

4.當整數字面值沒有超出byte,short,char的取值范圍,可以直接賦值給byte,short,char類型的變量

5.byte,short,char混合運算的時候,各自先轉換成int類型在做運算。

6.多種數據類型混合運算,先轉換成容量最大的那種類型再做運算。

注意:

byte b = 3; 可以編譯通過,3沒有超出byte類型取值范圍

int i = 10;

byte b = i / 3; 編譯報錯,編譯器只檢查語法,不會“運算” i / 3

  1. public class DataTypeTest08 
  2.     public static void main(String[] args){ 
  3.  
  4.         // 出現錯誤,1000超出了byte的范圍 
  5.         // byte a = 1000; 
  6.  
  7.         // 正確,因為20沒有超出byte范圍 
  8.         byte a = 20; 
  9.  
  10.         // 變量不能重名 
  11.         // short a = 1000; 
  12.  
  13.         // 正確,因為數值1000沒有超出short類型的范圍 
  14.         // 所以賦值正確 
  15.         short b = 1000; 
  16.  
  17.         // 正確,因為默認就是int,并沒有超出int范圍 
  18.         int c = 1000; 
  19.  
  20.         // 正確,可以自動轉換 
  21.         long d = c; 
  22.  
  23.         // 錯誤,出現精度丟失問題,大類型-->>小類型會出現問題 
  24.         // int e = d; 
  25.  
  26.         // 將long強制轉換成int類型 
  27.         // 因為值1000,沒有超出int范圍,所以轉換是正確的 
  28.         int e = (int)d; 
  29.  
  30.         // 因為java中的運算會轉成最大類型 
  31.         // 而10和3默認為int,所以運算后的最大類型也是int 
  32.         // 所以是正確的 
  33.         int f = 10/3; // 3 
  34.  
  35.         // 聲明10為long類型 
  36.         long g = 10; 
  37.  
  38.         // 出現錯誤,多個數值在運算過程中,會轉換成容量大的類型 
  39.         // 以下示例最大的類型為double,而h為int,所以就會出現大類型(long)到小類型(int)的轉換,將會出現精度丟失問題 
  40.         // int h = g/3; 
  41.          
  42.         // 可以強制轉換,因為運算結果沒有超出int范圍 
  43.         // int h = (int)g/3; 
  44.  
  45.         // 可以采用long類型來接受運算結果 
  46.         // long h = g/3; 
  47.  
  48.         // 出現精度損失問題,以下問題主要是優先級的問題 
  49.         // 將g轉換int,然后又將int類型的g轉換成byte,最后byte類型的g和3運算,那么它的運算結果類型就是int,所以int賦值給byte就出現了精度損失問題 
  50.         // byte h = (byte)(int)g/3; 
  51.         //vx小助手:xiehuangbao1123 領取資料面試真題 
  52.         // 正確 
  53.         // byte h = (byte)(int)(g/3); 
  54.  
  55.         // 不能轉換,還有因為優先級問題 
  56.         // byte h = (byte)g/3; 
  57.  
  58.         // 可以轉換,因為運算結果沒有超出byte范圍 
  59.         // byte h = (byte)(g/3); 
  60.  
  61.         // 可以轉換,因為運算結果沒有超出short范圍 
  62.         short h = (short)(g/3); 
  63.         short i = 10; 
  64.  
  65.         // 錯誤,short和byte運算,首先會轉換成int再運算 
  66.         // 所以運算結果為intint賦值給short就會出現精度丟失問題 
  67.         // short k = i + j; 
  68.  
  69.         // 可以將運算結果強制轉換成short 
  70.         // short k = (short)(i + j); 
  71.  
  72.         // 因為運算結果為int,所以可以采用int類型接手 
  73.         int k = i + j; 
  74.         char l = 'a'
  75.         System.out.println(l); // a 
  76.  
  77.         // 輸出結果為97,也就是a的ascii值 
  78.         System.out.println((byte)l);  // 97 
  79.  
  80.         int m = l + 100; 
  81.         // 輸出結果為197,取得a的ascii碼值,然后與100進行先加運算 
  82.         System.out.println(m); // 197 
  83.  
  84.     } 

原文鏈接:https://www.toutiao.com/i6987261616643473953/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 人人澡人人射 | 久久久久久亚洲 | 黑人巨大精品欧美一区免费视频 | 久久蜜桃av一区二区天堂 | 亚洲激情久久 | 亚洲国产精品va在线看黑人 | 欧美一区二区视频免费观看 | 97久久精品午夜一区二区 | 五月婷婷综合网 | 久久久网 | 欧美一区二区大片 | 国产日韩欧美在线 | 久国产精品韩国三级视频 | 精品久久99 | 精品视频一区二区三区四区 | 久9re热视频这里只有精品 | 久久亚洲高清 | 狼人综干网 | 久久久久久久久久久久99 | 久久99精品久久久久久水蜜桃 | 欧洲黄色 级黄色99片 | 久久国产综合 | 一区二区三区精品视频 | 国产精品美女久久久久久久久久久 | 不卡黄色 | 国产人成精品一区二区三 | 久久精品小视频 | 中文字幕 亚洲一区 | 国产电影一区二区三区 | 中文字幕在线观看 | 狠狠干最新网址 | 麻豆av一区二区 | 亚洲精品在线免费看 | 一区二区免费在线观看 | 狠狠色狠狠色合久久伊人 | 亚洲精品成人18久久久久 | 日本不卡一区二区三区 | 成人福利网站 | 国产免费天天看高清影视在线 | 中文字幕一区在线观看视频 | 亚洲国产精品一区二区久久,亚洲午夜 |