华南俳烁实业有限公司

java

當(dāng)前位置:中華考試網(wǎng) >> java >> java基礎(chǔ) >> 文章內(nèi)容

Java直接量(字面量)

來源:中華考試網(wǎng)  [2020年11月27日]  【

  直接量是指在程序中通過源代碼直接給出的值,例如在int a = 5;代碼中,為變量 a 所分配的初始值 5 就是一個直接量。

  直接量的類型

  并不是所有的數(shù)據(jù)類型都可以指定直接量,能指定直接量的通常只有三種類型:基本類型、字符串類型和 null 類型。具體而言,Java 支持如下 8 種類型的直接量。

  1)int 類型的直接量

  在程序中直接給出的整型數(shù)值,可分為二進(jìn)制、十進(jìn)制、八進(jìn)制和十六進(jìn)制 4 種,其中二進(jìn)制需要以 0B 或 0b 開頭,八進(jìn)制需要以 0 開頭,十六進(jìn)制需要以 0x 或 0X 開頭。例如 123、012(對應(yīng)十進(jìn)制的 10)、0x12(對應(yīng)十進(jìn)制的 18)等。

  2)long 類型的直接量

  在整型數(shù)值后添加 l 或 L 后就變成了 long 類型的直接量。例如 3L、0x12L(對應(yīng)十進(jìn)制的 18L)。

  3)float 類型的直接量

  在一個浮點(diǎn)數(shù)后添加 f 或 F 就變成了 float 類型的直接量,這個浮點(diǎn)數(shù)可以是標(biāo)準(zhǔn)小數(shù)形式,也可以是科學(xué)計數(shù)法形式。例如 5.34F、3.14E5f。

  4)double 類型的直接量

  直接給出一個標(biāo)準(zhǔn)小數(shù)形式或者科學(xué)計數(shù)法形式的浮點(diǎn)數(shù)就是 double 類型的直接量。例如 5.34、3.14E5。

  5)boolean 類型的直接量

  這個類型的直接量只有 true 和 false。

  填寫下面表單即可預(yù)約申請免費(fèi)試聽java課程!害怕學(xué)不會?助教陪讀,隨時解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可全國推薦就業(yè)!

預(yù)約申請免費(fèi)聽java課程

  • 地區(qū):
  • 姓名:
  • 手機(jī):

  6)char 類型的直接量

  char 類型的直接量有三種形式,分別是用單引號括起來的字符、轉(zhuǎn)義字符和 Unicode 值表示的字符。例如‘a(chǎn)’,‘\n’和‘\u0061’。

  7)String 類型的直接量

  一個用雙引號括起來的字符序列就是 String 類型的直接量。

  在大多數(shù)其他語言中,包括 C/C++,字符串作為字符的數(shù)組被實(shí)現(xiàn)。然而,在 Java 中并非如此。在 Java 中,字符串實(shí)際上是對象類型。在教程后面你將看到,因?yàn)?Java 對字符串是作為對象實(shí)現(xiàn)的,因此,它有廣泛的字符串處理能力,而且功能既強(qiáng)又好用。

  8)null 類型的直接量

  這個類型的直接量只有一個值,即 null。

  在上面的 8 種類型的直接量中,null 類型是一種特殊類型,它只有一個值:null。而且這個直接量可以賦給任何引用類型的變量,用以表示這個引用類型變量中保存的地址為空,即還未指向任何有效對象。

  直接量的賦值

  通?偸前岩粋直接量賦值給對應(yīng)類型的變量,例如下面代碼都是合法的。

  int a = 5;

  char c = 'a';

  boolean b = true;

  float f = 5.12f;

  double d = 4.12;

  String name = "C語言中文網(wǎng)";

  String url = "http://c.biancheng.net";

  除此之外,Java 還支持?jǐn)?shù)值之間的自動類型轉(zhuǎn)換,因此允許把一個數(shù)值直接量直接賦給另一種類型的變量,這種賦值必須是系統(tǒng)所支持的自動類型轉(zhuǎn)換,例如把 int 類型的直接量賦給一個 long 類型的變量。

  String 類型的直接量不能賦給其他類型的變量,null 類型的直接量可以直接賦給任何引用類型的變量,包括 String 類型。boolean 類型的直接量只能賦給 boolean 類型的變量,不能賦給其他任何類型的變量。

  關(guān)于字符串直接量有一點(diǎn)需要指出,當(dāng)程序第 一次使用某個字符串直接量時,Java 會使用常量池(constant pool)來緩存該字符串直接量,如果程序后面的部分需要用到該字符串直接量時,Java 會直接使用常量池(constantpool)中的字符串直接量。

  提示:

  由于 String 類是一個典型的不可變類,因此 String 對象創(chuàng)建出來的就不可能改變,因此無需擔(dān)心共享 String 對象會導(dǎo)致混亂。

  常量池(constant pool)指的是在編譯期被確定,并被保存在已編譯的 .class 文件中的一些數(shù)據(jù),它包括關(guān)于類、方法、接口中的常量,也包括字符串直接量。

  看如下程序:

  String s0 = "hello";String s1 = "hello";String s2 = "he" + "llo";System.out.println(s0 == s1);System.out.println(s0 == s2);

  運(yùn)行結(jié)果為:

  true

  true

  Java 會確保每個字符串常量只有一個,不會產(chǎn)生多個副本。例子中的 s0 和 s1 中的“hello”都是字符串常量,它們在編譯期就被確定了,所以 s0 = s1 返回 true。而“he”和“l(fā)lo”也都是字符串常量,當(dāng)一個字符串由多個字符串常量連接而成時,它本身也是字符串常量,s2 同樣在編譯期就被解析為一個字符串常量,所以 s2 也是常量池中“hello”的引用。因此,程序輸出 s0 == s1 返回 true,s1 == s2 也返回 true。

責(zé)編:fushihao

上一篇:JavaInteger類詳解

下一篇: 沒有了

  • 會計考試
  • 建筑工程
  • 職業(yè)資格
  • 醫(yī)藥考試
  • 外語考試
  • 學(xué)歷考試
新营市| 双城市| 交口县| 安化县| 齐河县| 济阳县| 新建县| 绥中县| 合作市| 上高县| 油尖旺区| 腾冲县| 崇礼县| 即墨市| 汉源县| 太和县| 曲麻莱县| 嘉鱼县| 静宁县| 忻州市| 讷河市| 同江市| 宝山区| 临武县| 贵南县| 库伦旗| 西乌珠穆沁旗| 绥宁县| 义乌市| 哈尔滨市| 阳泉市| 红河县| 衡阳县| 乌拉特中旗| 德令哈市| 茌平县| 轮台县| 信阳市| 新津县| 文成县| 红原县|