直接量是指在程序中通过源代码直接给出的值,例如在int a = 5;代码中,为变量 a 所分配的初始值 5 就是一个直接量。

Java入门基础视频教程,java零基础自学就选黑马程序员Java入门教程(含Java项目和Java真题)

直接量的类型

并不是所有的数据类型都可以指定直接量,能指定直接量的通常只有三种类型:基本类型、字符串类型和 null 类型。具体而言,Java 支持如下 8 种类型的直接量。

1)int 类型的直接量

在程序中直接给出的整型数值,可分为二进制、十进制、八进制和十六进制 4 种,其中二进制需要以 0B 或 0b 开头,八进制需要以 0 开头,十六进制需要以 0x 或 0X 开头。例如 123、012(对应十进制的 10)、0x12(对应十进制的 18)等。

2)long 类型的直接量

在整型数值后添加 l 或 L 后就变成了 long 类型的直接量。例如 3L、0x12L(对应十进制的 18L)。

3)float 类型的直接量

在一个浮点数后添加 f 或 F 就变成了 float 类型的直接量,这个浮点数可以是标准小数形式,也可以是科学计数法形式。例如 5.34F、3.14E5f。

4)double 类型的直接量

直接给出一个标准小数形式或者科学计数法形式的浮点数就是 double 类型的直接量。例如 5.34、3.14E5。

5)boolean 类型的直接量

这个类型的直接量只有 true 和 false。

6)char 类型的直接量

char 类型的直接量有三种形式,分别是用单引号括起来的字符、转义字符和 Unicode 值表示的字符。例如‘a’,‘\n’和‘\u0061’。

7)String 类型的直接量

一个用双引号括起来的字符序列就是 String 类型的直接量。

在大多数其他语言中,包括 C/C++,字符串作为字符的数组被实现。然而,在 Java 中并非如此。在 Java 中,字符串实际上是对象类型。在教程后面你将看到,因为 Java 对字符串是作为对象实现的,因此,它有广泛的字符串处理能力,而且功能既强又好用。

8)null 类型的直接量

这个类型的直接量只有一个值,即 null。

在上面的 8 种类型的直接量中,null 类型是一种特殊类型,它只有一个值:null。而且这个直接量可以赋给任何引用类型的变量,用以表示这个引用类型变量中保存的地址为空,即还未指向任何有效对象。

直接量的赋值

通常总是把一个直接量赋值给对应类型的变量,例如下面代码都是合法的。

int a = 5;
char c = 'a';
boolean b = true;
float f = 5.12f;
double d = 4.12;
String name = "CSDN";
String url = "http://www.CSDN.net";

除此之外,Java 还支持数值之间的自动类型转换,因此允许把一个数值直接量直接赋给另一种类型的变量,这种赋值必须是系统所支持的自动类型转换,例如把 int 类型的直接量赋给一个 long 类型的变量。

String 类型的直接量不能赋给其他类型的变量,null 类型的直接量可以直接赋给任何引用类型的变量,包括 String 类型。boolean 类型的直接量只能赋给 boolean 类型的变量,不能赋给其他任何类型的变量。

关于字符串直接量有一点需要指出,当程序第一次使用某个字符串直接量时,Java 会使用常量池(constant pool)来缓存该字符串直接量,如果程序后面的部分需要用到该字符串直接量时,Java 会直接使用常量池(constantpool)中的字符串直接量。

提示:

  • 由于 String 类是一个典型的不可变类,因此 String 对象创建出来的就不可能改变,因此无需担心共享 String 对象会导致混乱。
  • 常量池(constant pool)指的是在编译期被确定,并被保存在已编译的 .class 文件中的一些数据,它包括关于类、方法、接口中的常量,也包括字符串直接量。

看如下程序:

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

运行结果为:

true
true

Java 会确保每个字符串常量只有一个,不会产生多个副本。例子中的 s0 和 s1 中的“hello”都是字符串常量,它们在编译期就被确定了,所以 s0 = s1 返回 true。

而“he”和“llo”也都是字符串常量,当一个字符串由多个字符串常量连接而成时,它本身也是字符串常量,s2 同样在编译期就被解析为一个字符串常量,所以 s2 也是常量池中“hello”的引用。

因此,程序输出 s0 == s1 返回 true,s1 == s2 也返回 true。

Java直接量(字面量)相关推荐

  1. 解析java中的字面量和字符类型

    解析java中的字面量和字符类型 1.字面量含义 固定不变的量,我们人为所给的一些数据.例如77和88都是整型字面量,1.88和1.99F是浮点型字面量,'中'是字符型字面量,"dfguyf ...

  2. Java 学习笔记 字面量

    Array 字面量 完整写法 char[] arr = new char[]{'a', 'b', 'c', 'd', 'e'}; String[] arr1 = new String[]{" ...

  3. Java: Java字面量、 变量和常量

    Java字面量. 变量和常量 先给出一段小代码,如下: int a = 10; //a为变量,10为字面量 final int b = 10; //b为常量,10为字面量 static str = & ...

  4. 【JAVA】——字面量与变量

    1.字面量:字面量就是数据/数值,编程与生活接轨,而生活中有很多数字,比如你的体重是70kg, 你的身高是172cm,西瓜价格是3元/kg等等,这些就是字面量(数据/数值),一门编程语言首先要能够表示 ...

  5. java 字面量_Java字面量

    Java字面量 本章节目标: 理解变量本质是什么,在开发中有什么用?变量三要素是什么?怎么声明变量?怎么给变量赋值?变量是如何分类的?变量的作用域? 知识框架: Java字面量 字面量就是数据/数值, ...

  6. java字面量和符号引用

    1.字面量 字面量就是直接量,举个例子. String str = "str"; int i = 1; "str"和1都是字面量,有别于变量. 2.符号引用 符 ...

  7. swift_012(Swift 的字面量)

    //***********swift学习之12--字面量--*************************** // 字面量:所谓字面量就是指像特定的数字,字符串或者是布尔值这样能够直接了当地指出 ...

  8. vfp字符转换数值_JS数据类型转换与字面量

    1. 转换为字符串 方式说明例子toString()转成字符串var num=1;alert(num.toString())String()强制转换转成字符串var num=1;alert(Strin ...

  9. (7)JavaScript字面量

    一.字面量 字面量(literal)是用于表达一个固定值的表示法,又叫常量. 通俗的理解,字面就是所见即所得,js 程序执行到代码中的字面量,会立即知道它是什么类型的数据,值是多少. 可以用于表示固定 ...

  10. python 3.3.3 字面量,正则,反斜杠和原始字符串

    两个不起眼但是比较重要的设定 Python str类型的字面量解释器 当反斜杠及其紧接字符无法构成一个具有特殊含义的序列('recognized escape sequences')时,Python选 ...

最新文章

  1. MIT自然语言处理第三讲:概率语言模型
  2. 计算机组成流水系统可以,计算机组成原理实验十三建立指令流水系统实验
  3. Spring boot actuator端点启用和暴露
  4. 微信小程序时代,哪些人能赚到第一桶金
  5. 6. 以下耦合度中最松散的耦合是_什么是程序设计中的高内聚、低耦合?
  6. 课程题目 : 1003. 简单字符串匹配
  7. C++ STL之vector详解
  8. java 继承list_Java集合—List—继承关系
  9. 畅销书看得不过瘾?KU电子书包月服务了解一下
  10. es 修改mapping
  11. react 调用webIm
  12. laravel从入门到精通之 时区设置
  13. React实现局部刷新
  14. 单片机课程设计——基于51单片机温湿度检测系统的设计与实现
  15. 朴素贝叶斯算法新闻文本分类
  16. Linux内核之PCI设备
  17. python从入门到实践18章答案
  18. The requested contract was not found
  19. Kali系统IP地址配置及SSH开启
  20. Linux下的自动化工具xdotool

热门文章

  1. c# json 按照key顺序排序。。。
  2. vs code中的platformIO插件,完成Arduino的程序编写,导入,安装开发板管理库
  3. 费启鸣的美食美刻上线,将代言菲仕乐锅具,CP感好强!
  4. 随风潜入夜,润物细无声----听朱正辉老师谈3G与现代化信息生活
  5. 8 - 三重积分、曲线、曲面积分
  6. 实现线下教育转线上—知识付费系统(多版本)
  7. 阿里云mysql 连接数_阿里云mysql最大连接数
  8. 软件工程常见费用参考标准
  9. js计时器实现页面刷新和幻灯片效果
  10. win7 64位连接oracle11g,win7 64位系统下使用32位PLSQL连接64位Oracle 11g