不知道取啥標題=-=

来源:https://www.cnblogs.com/2979100039-qq-con/archive/2020/07/20/13347641.html
-Advertisement-
Play Games

今天的學習內容,老師就給我們上了一份大餐,電腦的 進位 ,當然我們學習肯定不會像百度百科那樣的一點點的詳細的去瞭解。畢竟我們學習的是java語言,所以根據java的內容來學二進位的。(內容與標題不太相同見諒啊QAQ,我也不知道該取啥標題) 基本數據類型: 數據類型關鍵字記憶體占用取值範圍 位元組型 b ...


 

今天的學習內容,老師就給我們上了一份大餐,電腦的 進位 ,當然我們學習肯定不會像百度百科那樣的一點點的詳細的去瞭解。畢竟我們學習的是java語言,所以根據java的內容來學二進位的。(內容與標題不太相同見諒啊QAQ,我也不知道該取啥標題

基本數據類型:

數據類型關鍵字記憶體占用取值範圍
位元組型 byte 1個位元組 -128 至 127
短整型 short 2個位元組 -32768 至 32767
整型 int(預設) 4個位元組 -2^31^ 至 2^31^-1
長整型 long 8個位元組 -2^63^ 至 2^63^-1 19位數字
單精度浮點數 float 4個位元組 1.4013E-45 至 3.4028E+38
雙精度浮點數 double(預設) 8個位元組 4.9E-324 至 1.7977E+308
字元型 char 2個位元組 0 至 2^16^-1
布爾類型 boolean 1個位元組 true,false

Java中的預設類型:整數類型是int 、浮點類型是double

e+38表示是乘以10的38次方,同樣,e-45表示乘以10的負45次方。

變數在定義(使用代碼展示):

public static void main(String[] args) {

        byte b = (byte) 128;
        System.out.println(b);
        
        char char1 = 'a';
        System.out.println(char1);
        
        short short1 = 21292;
        System.out.println(short1);
        
        float float1 = 212212.3123213f;
        System.out.println(float1);
        
        long long1 = 1213312l;
        System.out.println(long1);
        
        double double1 = 121.3112;
        System.out.println(double1);
        
        boolean boo = true;
        System.out.println(boo);
        
        int int1 = 1;
        System.out.println(int1);
        
        int int2 = 1, int3 = 2;
        System.out.println(int2 + "" + int3);
        
        int i, j;
        i = 2;
        j = 3;
        System.out.println(i + "" + j);

    }

聲明變數的註意點:

 

 

 數據類型之間的轉換:

類型轉換,分為自動轉換,強制轉換。

自動轉換: 根據數據類型的範圍來覺定:byte-->short,char-->int-->long-->float-->double-->String

就如byte可以自動轉換為int類型,反之int類型不能自動轉換為byte類型。

強制轉換:

public static void main(String[] args) {
        /*
         * 強制轉換 案例
         * 
         */
        int a = 1;
        char b = (char) a;  /*
                             * ==>這裡因為a的範圍比b的範圍要大, 所以編譯器不確定變數啊的大小,
                             * 為了避免a的值超過char 範圍所以需要進行強轉
                             */
        double d = 213.21312;
        float f = (float) d; /* 同樣這裡的原理也是一樣的 */

        double d1 = 21231.121;
        int i = (int) d1; /* 當然也適用於浮點型轉化為整型 */
        
        /* 
         * 不過需要註意的是當自動轉換時,變數不會因為 轉換而丟失精度,
         * 例如:int a =2 轉換為 double d = a時。d的值會為2.0。
         * 強轉時,變數會因為強轉而丟失精度
         * 例如:double d = 3.121322,轉換為int a = (int)d; a的值為3,就等於丟失了小數部分
         * */
    }

插入一個小知識點:Ascll編碼 ,下麵有一個例子:

    public static void main(String[] args) {
        /* Ascll編碼表案例 */
        char a = 'a';
        int i = 1; 
        System.out.println(a + i);   //輸出98
        
        /* 我們知道  char類型能自動轉換為int類型從輸出值為98可以反過來算出 變數a為97,
         *為什麼為97,因為在Ascll表中a的Ascll值為97。
         * */
        
    }

關於類型的強轉,下麵還有一個細節的知識點:

下麵的程式有問題嗎?

public static void main(String[] args){
 short s = 1;
 s+=1;
 System.out.println(s);
}

分析: s += 1 邏輯上看作是s = s + 1 計算結果被提升為int類型,再向short類型賦值時發生錯誤,因為不能將取值範圍大的類型賦值到取值範圍小的類型。但是,s=s+1進行兩次運算+= 是一個運算符,只運算一次,並帶有強制轉換的特點,也就是說s += 1 就是s = (short)(s + 1),因此程式沒有問題編譯通過,運行結果是2。

因此,這裡要說一點的是,賦值運算符預設進行了強制類型轉換。

/*   ========================================================================   */

其實還學了運算符,但對於我的用處不怎麼大所以就不撰寫了。無非是一些加減乘除,我就直接扣兩張圖放著。

運算符:

算數運算符:

算數運算符作用例子(a=11,b=2)
+ 加法運算,字元串連接運算 13=a+b;
- 減法運算 9=a-b;
* 乘法運算 22=a*b;
/ 除法運算,取整除結果 5=a/b;
% 取模運算,兩個數字相除取餘數 1=a%b;
++ 自增: 操作數的值增加1 a++或++a,a的值都為13
-- 自減: 操作數的值減少1 a--或--a,a的值都為10

賦值運算符:

符號作用說明
= 賦值 a=10,將10賦值給變數a
+= 加後賦值 a+=b,將a+b的值給a
-= 減後賦值 a-=b,將a-b的值給a
*= 乘後賦值 a*=b,將a×b的值給a
/= 除後賦值 a/=b,將a÷b的商給a
%= 取餘後賦值 a%=b,將a÷b的餘數給a

關係運算符:

符號說明
== a==b,判斷a和b的值是否相等,成立為true,不成立為false
> a>b,判斷a是否大於b,成立為true,不成立為false
>= a>=b,判斷a是否大於或者等於b,成立為true,不成立為false
< a<b,判斷a是否小於b,成立為true,不成立為false
<= a<=b,判斷a是否小於或者等於b,成立為true,不成立為false
!= a!=b,判斷a和b的值是否不相等,成立為true,不成立為false

邏輯運算符:

符號作用說明
& 邏輯與 a&b,a和b都是true,結果為true,否則為false
| 邏輯或 a|b,a和b都是false,結果為false,否則為true
^ 邏輯異或 a^b,a和b結果不同為true,相同為false
邏輯非 !a,結果和a的結果正好相反
&& 短路與 1. 兩邊都是true,結果是true 2. 一邊是false,結果是false 短路與特點:符號左邊是false,右邊不再運算
|| 短路或 1. 兩邊都是false,結果是false 2. 一邊是true,結果是true 短路或特點: 符號左邊是true,右邊不再運算
取反 1. ! true 結果是false 2. ! false結果是true

三元運算符:

            數據類型 變數名 = 布爾類型表達式?結果1:結果2

           格式:int a = 3>4? 12312 :123213;

位運算符:

有個帖子寫的還不錯:https://cloud.tencent.com/developer/article/1528990

 

二進位: 由 0和1組成,逢二進一    例如   1的二進位為 0000 0001 ;  2的二進位為 0000 0010;

2進位轉換為10進位:  十進位整數轉換成二進位採用“除2倒取餘”,十進位小數轉換成二進位小數採用“乘2取整”。

列如 :6轉換為2進位, 6除以2 =3 餘0  接著 3除以2 = 1 餘 1 即為 110   所以6的二進位為 0000 0110;

二進位轉十進位採用按權相加法:https://blog.csdn.net/yuanxiang01/article/details/82503568

位運算:位運算符指的是兩個數之間的位運算,運算過程中都轉換為位元組類型參與運算。比如:數字3轉換為位元組數為0000 0011。

符號作用說明
& 按位與 兩數同位對比,有0則為0
| 按位或 兩數同位對比,有1則為1
^ 按位異或 兩數同位對比,不同為1,相同為0
~ 按位取反 針對一個數,操作數的每一位都取反
<< 按位左移 針對一個數,操作數的每位向左移動指定位數,最高位丟棄,尾部空位補0(相當於乘以2的n次方)
>> 按位右移 針對一個數,操作數的每位向右移動指定位數,頭部空位補符號位數,移除部分丟棄
>>> 無符號右移 針對一個數,操作數的每位向右移動指定位數,無論符號數頭部都補0,移除部分丟棄

如下有代碼案列:

    public static void main(String[] args) {
        /*
         * 位運算符案列
         */

        System.out.println(2 & 3);
        /*                           按位與
         * 2的二進位數為 0000 0010 ;2的二進位為0000 0011 兩數同位對比有0則0,
         * 所以值為 0000 0010; 所以輸出的值為2。
         */
        System.out.println(2 | 3);
        /*                           按位或和與恰巧反過來
         * 2的二進位數為 0000 0010 ;2的二進位為0000 0011 兩數同位對比有1則1,
         * 所以值為 0000 0011; 所以輸出的值為3。
         */
        System.out.println(2^3);
        /*                           按位異或
         * 2的二進位數為 0000 0010 ;2的二進位為0000 0011 兩數同位對比不同為1,相同為0,
         * 所以值為 0000 0001; 所以輸出的值為1。
         */
       System.out.println(~2);
          /*                           按位取反
         * 2的二進位數為 0000 0010 ; 操作數的每一位都進行取反,
         * 所以值為 1111 1101; 所以輸出的值為-3。
         */
       System.out.println(2<<3);
         /*                           按位左移
         * 2的二進位數為 0000 0010   相當於把2的二進位每位左移3位,尾部用0補齊
         * 所以值為 0001 0000; 所以輸出的值為16。
         */
       System.out.println(-16>>3);
        /*                           按位右移
         * 2的二進位數為0001 0000   相當於把2的二進位每位右移3位,頭部用0補齊移出部分丟棄
         * 所以值為 0000 0010; 所以輸出的值為2。
         */
       System.out.println(15>>>2);
       /*                           無符號右移
         * 無符號右移運算符和右移運算符的主要區別在於負數的計算,因為無符號右移是高位補0,移多少位補多少個0。
         * 15的二進位位是0000 1111 , 右移2位0000 0011,結果為3。
         */
       
    }

 同樣正在學習的你下麵的題怎麼回答:

1. 簡答題:簡述Java數據類型有哪些

2. 簡答題:簡述Java變數定義及初始化賦值時要註意的問題。

3. 簡答題:簡述下麵的程式是否有問題,指出問題位置並說明。

1 public static void main(String[] args){

2    byte b1=134;

3    byte b2=21;

4 byte b3=1 + 2;

5    byte b4=b1 + b2;

6    System.out.println(b3);

7    System.out.println(b4);

8 }

4. 編程題:下列程式執行結果為?

public static void main(String[] args){

  int x=10;

  double y=20.2;

  long z=10;

  String str=""+x+y*z;

  System.out.println("str= " + str);

   }

5. 簡答題:下麵程式執行結果為。

public static void main(String[] args){

int i=1;

int j=i++;

int k=i + ++i * j--;

System.out.println(i=+i +“,j=+j + ,k=+k);

   }

6. 簡述題:簡述&與&&的區別。

7. 編程題:使用最有效的方式計算3<< 4的結果。

8. 編程題:兩個變數 int a = 1; int b = 2;如何將兩個變數的值互換。

 

個人學習,內容簡略


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

-Advertisement-
Play Games
更多相關文章
  • class ListNode: def __init__(self, x): self.val = x self.next = None# 快慢指針的做法,定義兩個指針,一個走一步,一個走兩步# 如果他們不相遇的話,那就是沒有環,如果在某一時刻相遇,# 就說明是有環的。class Solution: ...
  • 隨著人工智慧以及腳本開發火熱,Python已經被推上一個非常火熱的巔峰! 那麼,想要學習Python卻又不知道從哪裡開始的朋友,看這裡呀~ Python在整個編程語言來說,是比較容易上手,而且“見效”特別快的! 下麵我就來推薦一些比較好上手,而且會讓整個學習過程變得更加輕鬆而快速! 基礎學習 進階技 ...
  • # Definition for singly-linked list.class ListNode: def __init__(self, x): self.val = x self.next = Nonea = ListNode(1)b = ListNode(2)a.next = b# 有關鏈表 ...
  • 如果不是領導強制要求,可能根本不會留意到這款號稱世界上功能最強大的開源資料庫——PostgreSQL。如果你不讀這篇文章,或許也會錯過一個躍躍欲試想擠進前三的優秀資料庫。 為了能夠熟練運用,特意買書研究,發現這款資料庫還真有點意思。彙總一篇文章與大家分享,目的只有一個:讓大家多少瞭解一下這款資料庫。 ...
  • 函數的本質就是**一段有特定功能、可以重覆使用的代碼**,這段代碼已經被提前編寫好了,並且為其起一個好聽的名字。在後續編寫程式過程中,如果需要同樣的功能,直接通過起好的名字就可以調用這段代碼。 ...
  • JDBC 獲取自增長id以及表的元數據 步驟 1 : 獲取自增長id 在Statement通過execute或者executeUpdate執行完插入語句後,MySQL會為新插入的數據分配一個自增長id,(前提是這個表的id設置為了自增長,在Mysql創建表的時候,AUTO_INCREMENT就表示自 ...
  • from typing import List# 這道題很容易能夠想到,只需要遍歷兩邊列表就可以了# 兩層迴圈class Solution: def twoSum(self, numbers: List[int], target: int) -> List[int]: # 第一次遍歷列表 for i ...
  • 作者:我恰芙蓉王 原文:https://www.cnblogs.com/-tang/p/13283216.html 業務場景 在很多項目中,都有類似數據彙總的業務場景,查詢今日註冊會員數,線上會員數,訂單總金額,支出總金額等。。。這些業務通常都不是存在同一張表中,我們需要依次查詢出來然後封裝成所需要 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...