Java變數(標識符;數據類型;變數分類)

来源:https://www.cnblogs.com/bpf-1024/archive/2020/03/12/12481911.html
-Advertisement-
Play Games

Java變數 一、變數的命名 ——標識符 標識符由數字、字母、下劃線_、美元符$組成,但不能以數字開頭。 標識符對字母大小寫敏感。 標識符無長度限制。 不能以關鍵字作為標識符。 /* 合法的標識符: */ int amount = 17; int $apple = 8; int _index = 3 ...


Java變數

一、變數的命名

——標識符

  • 標識符由數字、字母、下劃線_、美元符$組成,但不能以數字開頭。
  • 標識符對字母大小寫敏感。
  • 標識符無長度限制。
  • 不能以關鍵字作為標識符。
/* 合法的標識符: */
int amount = 17;
int $apple = 8;
int _index = 3;
int 身高 = 180;
/* 不合法的標識符: */
int float = 3.14;  // 不能使用關鍵字
int #Index = 2;    // 不能使用#
int 3a = 9;        // 不能以數字開頭

 

二、變數的數據類型

——基本數據類型、引用類型

變數的數據類型

 

三、變數的分類

——局部變數、成員變數、靜態變數

(一)局部變數:在方法內或語句塊中定義,生命周期從聲明處開始到方法或語句塊結束處。

★ 使用局部變數前必須先聲明和初始化。

public class TestVarible {
    public static void main(String args[]) {
        {
            int age;    // age是局部變數,只屬於本語句塊
            System.out.printf("age = %d", age); // 編譯出錯, age沒有初始化
        }
        age = 18;       // 編譯出錯, age沒定義
    }
}

 

(二)成員變數:在方法外部、類的內部定義的變數,生命周期伴隨對象始終。

★ 聲明成員變數時會自動初始化,預設初始值見下表:

預設初始值
數據類型 初始值
int 0
char '\u0000'
double 0.0
boolean false
public class TestVarible {
    int testValue;  // 成員變數, 初始值為0
}

 

(三)靜態變數:使用static定義的變數,生命周期伴隨類始終。

★ 聲明靜態變數時會自動初始化,預設初始值與成員變數相同。

public class TestVarible {
    static double score;    // 靜態變數, score屬於類, 初始值為0.0
    boolean flag;           // 成員變數, flag屬於對象, 初始值為false
    public static void main(String args[]) {
        {
            int age;        // 局部變數, age只屬於本語句塊
            age = 17;
        }
        int fighting = 88;  // 局部變數,fighting屬於方法
    }
}

 

 四、變數、常變數

——聲明、初始化

★ 常變數與變數的唯一區別是:常變數初始化後不可再改變。

數據類型  變數名;           // 變數聲明
final 數據類型  變數名;     // 常變數聲明
變數名 = 值;               // 變數初始化

★ 初始化變數時,整數預設為int類型,浮點數預設為double類型。

五、基本數據類型

——boolean、byte、short、char、int、long、float、double

★ 低範圍變數可賦值給高範圍變數,超出範圍時需加轉換!

(一)整型:byte、short、int、long

1. 基本信息

數據類型 占用記憶體 表示範圍 定義
byte 1位元組 -128~127 -
short 2位元組 -32768~32767 -
int 4位元組 約21億 -
long 8位元組 -263~263-1 在末尾增加'L'或'l'

2. 表示形式

  • 10進位:-
  • 16進位:以0x或0X開頭
  •   8進位:以0開頭
  •   2進位:以0b或0B開頭
public class TestVarible {
    public static void main(String args[]) {
        /* 正確的聲明和初始化 */
        int a = 320000;
        int b = '對';
        long c = a;
        long d = 3200000000L;  // 數值超出21億, 需要增加轉換:在末尾加上"L"或"l"

        /* 非法的初始化 */
        byte e = 128;           // 超出範圍
        unsigned int f = 200;   // 不存在unsigned
    }
}

 

(二)浮點型:float、double

1. 基本信息

數據類型 占用記憶體 表示範圍 定義
float 4位元組 -3.403E38~3.403E38 在末尾增加'F'或'f'
double 8位元組 -1.798E308~1.798E308 在末尾增加'D'或'd'

2. 表示形式

  • 10進位:-
  • 科學計數法:aEb或aeb (a為實數,b為整數)
public class TestVarible {
    public static void main(String args[]) {
        /* 正確的聲明和初始化 */
        float a = 3.14F;
        float b = (int)6.89;
        float c = 0x0123;           // 0x0123=291, 在21億範圍內

        /* 非法的初始化 */
        float d = 1e4;              // 編譯錯誤, 1e4為double型
        float e = 3.03d;            // 編譯錯誤, 3.03d為double型

        /* float型與double型最好不要進行比較 */
        float m = 0.1f;
        double n = 0.1;
        System.out.println(m==n);   // 輸出為false
    }
}

 

(三)字元型:char

1. 基本信息

char類型占2位元組,使用Unicode編碼形式,其表示範圍是0~65535。

2. 表示形式

  • 字元常量:'x'
  • 16進位:'\uxxxx' (x在0~f範圍內)
  • 轉義字元:'\x' (x有不同含義)
public class TestVarible {
    public static void main(String args[]) {
        /* 正確的聲明和初始化 */
        char a = '步';
        char b = 24179;
        char c = '\u51e1';
        System.out.printf("%c%c%c", a, b, c);

        /* 非法的初始化 */
        char d = '\uabcg';  // g超出0~f範圍
        int e = 'a';
        char f = e;         // e為int型, 高於char類型
    }
}

 

(四)布爾型:boolean

boolean類型占1位(1bit),只有true和false兩個值。

 

 【參考資料】:

變數的數據類型圖片:速學堂

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 有天上飛的概念,就要有落地的實現 概念十遍不如代碼一遍,朋友,希望你把文中所有的代碼案例都敲一遍 先贊後看,養成習慣 SpringBoot 圖文教程系列文章目錄 1. "SpringBoot圖文教程1—SpringBoot+Mybatis 環境搭建" 2. "SpringBoot圖文教程2—日誌的使 ...
  • 轉載至:https://www.cnblogs.com/skywang12345/p/3324958.html 本章的內容主要解決下麵幾個問題: 1 equals() 的作用是什麼? 2 equals() 與 == 的區別是什麼? 3 hashCode() 的作用是什麼? 4 hashCode() ...
  • ***************************APPLICATION FAILED TO START*************************** Description: Failed to configure a DataSource: 'url' attribute is no ...
  • Android系統測試, 開始測試前,我們需要先確認所測試的系統版本是否正確, 還有報bug的時候,開發需要你提供具體的系統版本信息。 還有系統打版時間等, 不同的版本修複了不同的bug,合入了不同的新功能等, 如果測試人員測試的系統版本都不對,會直接被開發懟到哭。 如何一鍵獲取Android系統版 ...
  • 模板模式 作用:定義一個操作中的演算法的骨架。而將一些步驟延遲到子類中,模板方法使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。其關鍵是將通用演算法(邏輯)封裝在抽象基類中,並將不同的演算法細節放到子類中實現。 在我看來,模板模式的好處在於能減少代碼段的復用,把公共行為封裝到基類中,把行為 ...
  • 前幾天本猿的大學同學,一個漂亮的小姐姐工作時遇到了一個問題,她的需求是,在公司區域網的電腦上下載大量的圖片重命名成指定得1、2、3.....以此類推,需要當天完成,我就臨時給寫了一個小demo。 我的想法是採用linux的原理不就好實現嗎,直接mv到指定文件夾下再給一個新的名字不就實現了嗎 我給出的 ...
  • 題目地址:https://www.luogu.com.cn/problem/P4850 題解原地址:https://createsj.blog.luogu.org/solution-p4850 ...
  • 什麼是類載入器: public class ClassInit { public static void main(String[] args) { ClassLoader c=ClassInit.class.getClassLoader(); } } 上面這個ClassLoader就是類載入器 打 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...