【原】Java學習筆記003 - 數據類型

来源:http://www.cnblogs.com/iflytek/archive/2017/02/25/6443130.html
-Advertisement-
Play Games

1 package cn.temptation; 2 3 public class Sample01 { 4 public static void main(String[] args) { 5 System.out.println("第一個例子"); 6 } 7 } 1 package cn.te... ...


1 package cn.temptation;
2 
3 public class Sample01 {
4     public static void main(String[] args) {
5         System.out.println("第一個例子");
6     }
7 }
 1 package cn.temptation;
 2 
 3 public class Sample02 {
 4     public static void main(String[] args) {
 5         // Java的基本數據類型
 6         // 分為四大類,共八種數據類型
 7         /*                        占用位元組數
 8          * 1、整數類型
 9          * byte:    位元組類型            1            -128~127
10          * short:    短整型            2
11          * int:        整型                4
12          * long:    長整型            8
13          * 
14          * 2、浮點數類型
15          * float:    單精度類型        4
16          * double:    雙精度類型        8
17          * 
18          * 3、字元類型
19          * char:    字元類型            2
20          * 
21          * 4、布爾類型
22          * boolean:    布爾類型            1
23          */
24         
25         // 變數:在程式執行過程中發生變化的量
26         
27         // 思考:為什麼要使用變數?全部都使用常量行不行?
28 //        System.out.println(123);
29 //        System.out.println(123);
30 //        System.out.println(123);
31         
32         // 現在要進行修改,不要顯示123了,要顯示456,那麼需要把前面使用常量123的地方全部改為常量456
33 //        System.out.println(456);
34 //        System.out.println(456);
35 //        System.out.println(456);
36         
37         // 註意:使用變數是一種思想:通過封裝變化來達到擁抱變化的結果,即在變化時,只需要修改變數賦值的地方,不需要修改變數使用的地方
38         // int i = 123;
39         // 變化時,只要修改變數賦值的地方
40         // int i = 456;
41         
42         // 把變數使用的地方 和 變數賦值的地方 分離開
43 //        System.out.println(i);
44 //        System.out.println(i);
45 //        System.out.println(i);
46         
47         // 定義變數的格式:
48         // 數據類型        變數名        =       初始化的值;
49         
50         byte i = 3;
51         System.out.println(i);
52         
53         short j = 4;
54         System.out.println(j);
55         
56         int k = 123;
57         System.out.println(k);
58         
59         // Java中書寫整型數字,不加說明,預設認為是int類型
60         // The literal 12345678901 of type int is out of range
61         // long m = 12345678901;
62         // 要使用long類型,需要在數字後添加大寫的L 或是 小寫的l(因為小寫的l和數字1容易混淆,所以使用大寫的L)
63         long m = 12345678901L;
64         System.out.println(m);
65         
66         // Java中書寫浮點書數字,不加說明,預設認為是double類型
67         // Type mismatch: cannot convert from double to float
68         // float x = 123.456;
69         // 要使用float類型,需要在數字後添加大寫的F 或是 小寫的f(為了保持風格的一致,所以使用大寫的F)
70         float x = 123.456F;
71         System.out.println(x);
72         
73         double y = 987.654;
74         System.out.println(y);
75         
76         // 字元類型使用單引號把字元包含其中
77         char z = 'a';
78         System.out.println(z);
79         
80         // 布爾類型有兩個特殊值:true 和 false
81         boolean flag1 = true;
82         boolean flag2 = false;
83         System.out.println(flag1);
84         System.out.println(flag2);
85     }
86 }
 1 package cn.temptation;
 2 
 3 public class Sample03 {
 4 //    int i = 123;
 5     
 6     public static void main(String[] args) {
 7         // 使用變數的註意事項:
 8         /*
 9          * 1、作用範圍(作用域):通過大括弧來劃定作用範圍,變數不在該大括弧內且沒有其他的範圍描述時,是無法使用的
10          * 2、在同一作用域下,變數不能重覆命名
11          * 3、變數的初始化值:
12          *         變數沒有初始化就直接使用會語法出錯
13          *         要不在聲明變數的時候就進行變數的初始化;要不就在使用的時候進行初始化
14          */
15 //        int i = 123;
16         // 在主函數之外定義int類型的變數i,在主函數中(大括弧)中無法訪問到
17         // Cannot make a static reference to the non-static field i
18 //        System.out.println(i);
19         
20 //        int i = 3;
21 //        System.out.println(i);
22         // Duplicate local variable i
23 //        int i = 4;
24 //        System.out.println(i);
25         
26         // 只對變數進行聲明但是不賦值
27 //        int i;
28         // 對只聲明但是不賦值的變數直接使用
29         // The local variable i may not have been initialized
30 //        System.out.println(i);
31         
32         // 先做聲明
33 //        int i;
34         // 在使用前進行賦值
35 //        i = 5;
36         // 再使用變數,這樣沒有語法問題
37 //        System.out.println(i);
38         
39         // 聲明變數時並對變數進行初始化賦值(初始化)
40 //        int i = 2;
41         
42         // 如下寫法語法沒有問題,但是不建議這樣寫(可讀性差)
43 //        int i = 2; int j = 3;
44 //        System.out.println(i);
45 //        System.out.println(j);
46         
47         // 如下寫法也可以,但是不推薦這樣寫
48 //        int i = 2, j = 3;
49 //        System.out.println(i);
50 //        System.out.println(j);
51         
52         // 在一行語句中對多個變數進行聲明是可以的,並且多個變數之間使用英文的逗號分隔開
53         int i, j;
54         // 在一行語句中對於聲明好的多個變數進行賦值,不能使用英文的逗號分隔開進行賦值,而只能使用英文的分號分隔開進行賦值
55         // Syntax error on token ",", ; expected
56 //        i = 2, j = 3;
57         i = 2; j = 3;
58         // 上句等價於
59         i = 2;
60         j = 3;
61         System.out.println(i);
62         System.out.println(j);
63     }
64 }
 1 package cn.temptation;
 2 
 3 public class Sample04 {
 4     public static void main(String[] args) {
 5         // 兩個int類型的變數做加法
 6 //        int i = 2;
 7 //        int j = 3;
 8 //        int result = i + j;
 9 //        System.out.println(result);
10         
11         // byte類型的變數 和 int類型的變數做加法
12 //        byte i = 2;
13 //        int j = 3;
14 //        int result = i + j;
15 //        System.out.println(result);
16         
17         // int類型的變數 和 int類型的變數做加法,得到的結果賦值給一個byte類型的變數
18 //        int i = 2;
19 //        int j = 3;
20         // Type mismatch: cannot convert from int to byte
21         // 賦值號右側兩個int類型的變數相加,得到的結果還是一個int類型的結果,把這個int類型的結果賦值給byte類型的變數,提示類型不匹配
22 //        byte result = i + j;
23 //        System.out.println(result);
24         
25         // byte類型的變數 和 int類型的變數做加法,得到的結果賦值給一個byte類型的變數
26 //        byte i = 2;
27 //        int j = 3;
28         // Type mismatch: cannot convert from int to byte
29         // 賦值號右側byte類型的變數  和  int類型的變數相加,得到的結果還是一個int類型的結果(類型提升),把這個int類型的結果賦值給byte類型的變數,提示類型不匹配
30 //        byte result = i + j;
31 //        System.out.println(result);
32         
33         // 解決類型不匹配錯誤的方法:
34         /*
35          * 1、將結果的數據類型改為範圍大的數據類型
36          * 2、使用強制類型轉換,註意可能會發生精度丟失的問題
37          *         聯想一下:小碗盛米,大鍋里的米比較少的時候,倒入小碗中是沒有問題的;大鍋里的米比較多的時候,倒入小碗里就有問題了
38          */
39         
40         // 強制類型轉換的格式:(要轉換為的數據類型)(被轉換的數據內容);
41         int i = 2;
42         int j = 3;
43         byte result = (byte)(i + j);
44         System.out.println(result);
45     }
46 }
 1 package cn.temptation;
 2 
 3 public class Sample05 {
 4     public static void main(String[] args) {
 5         // 字面量常量整數不加說明,預設是int類型
 6 //        byte i = 127;
 7 //        System.out.println(i);
 8         
 9 //        byte i = (byte)127;
10 //        System.out.println(i);
11         
12         // Type mismatch: cannot convert from int to byte
13 //        byte j = 130;
14 //        System.out.println(j);
15         
16         byte j = (byte)130;
17         System.out.println(j);        // -126
18     }
19 }
20 /*
21  * 原碼、反碼 和 補碼
22  * 規則:
23  * 1、正數的原碼、反碼和補碼都相同
24  * 2、負數的反碼和原碼符號位相同,其他位取反;負數的補碼  = 負數的反碼 + 1;
25  * 3、電腦在進行運算時,使用的是補碼,最終顯示出來的是原碼
26  * 
27  * int類型的正整數130的原碼:0000 0000 0000 0000 0000 0000 1000 0010
28  * int類型的正整數130的反碼:0000 0000 0000 0000 0000 0000 1000 0010
29  * int類型的正整數130的補碼:0000 0000 0000 0000 0000 0000 1000 0010
30  * 
31  * 強制類型轉換做了截取
32  * 
33  * byte類型的           補碼:1000 0010        最高位是符號位
34  * byte類型的           反碼:1000 0001    
35  * byte類型的           原碼:1111 1110        -126
36  */
 1 package cn.temptation;
 2 
 3 public class Sample06 {
 4     public static void main(String[] args) {
 5         double i = 123.45;
 6         System.out.println(i);
 7         
 8         // 在單精度浮點數後添加F 和 對單精度浮點書進行強制類型轉換為float類型,效果一致
 9 //        float j = 987.65F;
10         float j = (float) 987.65;
11         System.out.println(j);
12     }
13 }
 1 package cn.temptation;
 2 
 3 public class Sample07 {
 4     public static void main(String[] args) {
 5         // 定義兩個byte類型的變數
 6 //        byte i = 2;
 7 //        byte j = 3;
 8         
 9         // Type mismatch: cannot convert from int to byte
10         // 使用加號進行加法計算時,對於比int類型範圍小的數據類型進行了類型提升
11 //        byte result = i + j;
12 //        byte result = (byte) (i + j);
13 //        System.out.println(result);
14         
15         // 第11行使用byte類型的變數相加提示語法錯誤,第16行使用int類型的字面量常量相加沒有語法錯誤
16         byte result = 2 + 3;
17         
18         // Type mismatch: cannot convert from int to byte
19 //        byte result = 2 + 126;
20         
21         System.out.println(result);
22         
23         // 註意:
24         // 變數相加,先看變數的數據類型是否有問題
25         // 常量相加,先看結果是否在被賦值的變數的數據類型範圍內
26     }
27 }
 1 package cn.temptation;
 2 
 3 public class Sample08 {
 4     public static void main(String[] args) {
 5         // char字元類型 和 整型存在轉換的關係
 6         System.out.println('a');            // a
 7         
 8         char i = 'b';
 9         System.out.println(i);                // b
10         
11         // 把字元'c' 和 int類型的數字1做加法,加出來的結果賦值給char類型的變數j
12         // 因為j的數據類型為char字元類型,所以輸出的結果還是字元
13         char j = 'c' + 1;
14         System.out.println(j);                // d
15         
16         // 字元類型和int類型做加法,得到的結果是int類型
17         System.out.println('c' + 1);        // 100
18         
19         // 字元類型和int類型做加法,得到的結果是int類型
20         System.out.println('B' + 'e' + 'i' + 'J' + 'i' + 'n' + 'g' + 2008);        // 2672
21         
22         // 字元類型和字元類型做加法,得到的結果是int類型
23         System.out.println('B' + 'e' + 'i' + 'J' + 'i' + 'n' + 'g');            // 664
24         
25         // 布爾類型不參與加法運算
26         // The operator + is undefined for the argument type(s) boolean, int
27 //        System.out.println(true + 1);
28         
29 //        boolean flag = false;
30         // The operator + is undefined for the argument type(s) boolean, int
31 //        System.out.println(flag + 1);
32     }
33 }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 簡介 ASP.NET Web API是一個可以簡化創建HTTP服務的框架 它支持包括瀏覽器和移動設備在內的各種客戶端 ASP.NET Web API是在.NET Framework上創建RESTful應用程式的理想平臺 譯者註:關於RESTful web服務可以參見這裡:http://zh.wiki ...
  • 0 Asp.Net Core 項目實戰之許可權管理系統(0) 無中生有 1 Asp.Net Core 項目實戰之許可權管理系統(1) 使用AdminLTE搭建前端 2 Asp.Net Core 項目實戰之許可權管理系統(2) 功能及實體設計 3 Asp.Net Core 項目實戰之許可權管理系統(3) 通過 ...
  • 前言 .NET Framework自2002年發佈以來,已經歷了十來個年頭。相應的,.NET平臺上的數據訪問技術也在不斷發展,從最基礎的ADO.NET,到SqlHelper簡單幫助類,到DAAB(Data Access Application Block),再到LINQ,最終演變為現在微軟主推的En ...
  • Entity Framework帶給我們的不僅僅是操作上的方便,而且使用上也很是考慮了用戶的友好交互,EF4.0與vs2010的完美融合也是我們選擇它的一個理由吧。相比Nhibernate微軟這方面做的的確是很不錯。 下麵我將使用CodeFirst方式來做個簡單是實際例子與大家分享。 我們還是和 前 ...
  • 四種引用類型的概念 強引用 StrongReference 如果一個對象具有強引用,那麼垃圾回收器絕對不會回收它,當記憶體不足時寧願拋出 OOM 錯誤,使得程式異常停止。 即是一個強引用。 軟引用 SoftReference 如果一個對象只具有軟引用,那麼垃圾回收器在記憶體充足的時候不會回收它,而在記憶體 ...
  • 一, java多線程 線程與進程 進程: 程式(任務)的執行過程,擁有資源(共用記憶體,共用資源)和線程(一個或者多個,至少一個)。 例如:打開任務管理器,qq,chrome,都屬於進程。 線程: 系統中最小的執行單元,同一進程中有多個線程,線程共用進程的資源。 例如:qq的聊天發送消息。 單線程:程 ...
  • 1. MyBaits基本概念:略 2. 案例:需求:建立資料庫查詢,一對一 3.開發步驟: (1).建立資料庫+表 (2).加包 (3).定義實體類 (4).編寫db.properties,將資料庫信息寫入其中;編寫MyBatis的配置文件conf.xml文件,引入db.properties;引入別 ...
  • 嗯,這篇講可用的多線程記憶體池。 零、上期彩蛋:不要重載全局new 或許,是一次很不愉快的經歷,所以在會有這麼一個“認識”。反正,大概就是:即使你足夠聰明,也不要自作聰明;在這就是不要重載全局new,無論你有著怎樣的目的和智商。因為: 這是一個不對稱的介面:只告訴了我們如何創建一個【堆】對象,但是釋放 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...