Java直接量(字面量)
直接量是指在程序中通过源代码直接给出的值,例如在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直接量(字面量)相关推荐
- 解析java中的字面量和字符类型
解析java中的字面量和字符类型 1.字面量含义 固定不变的量,我们人为所给的一些数据.例如77和88都是整型字面量,1.88和1.99F是浮点型字面量,'中'是字符型字面量,"dfguyf ...
- Java 学习笔记 字面量
Array 字面量 完整写法 char[] arr = new char[]{'a', 'b', 'c', 'd', 'e'}; String[] arr1 = new String[]{" ...
- Java: Java字面量、 变量和常量
Java字面量. 变量和常量 先给出一段小代码,如下: int a = 10; //a为变量,10为字面量 final int b = 10; //b为常量,10为字面量 static str = & ...
- 【JAVA】——字面量与变量
1.字面量:字面量就是数据/数值,编程与生活接轨,而生活中有很多数字,比如你的体重是70kg, 你的身高是172cm,西瓜价格是3元/kg等等,这些就是字面量(数据/数值),一门编程语言首先要能够表示 ...
- java 字面量_Java字面量
Java字面量 本章节目标: 理解变量本质是什么,在开发中有什么用?变量三要素是什么?怎么声明变量?怎么给变量赋值?变量是如何分类的?变量的作用域? 知识框架: Java字面量 字面量就是数据/数值, ...
- java字面量和符号引用
1.字面量 字面量就是直接量,举个例子. String str = "str"; int i = 1; "str"和1都是字面量,有别于变量. 2.符号引用 符 ...
- swift_012(Swift 的字面量)
//***********swift学习之12--字面量--*************************** // 字面量:所谓字面量就是指像特定的数字,字符串或者是布尔值这样能够直接了当地指出 ...
- vfp字符转换数值_JS数据类型转换与字面量
1. 转换为字符串 方式说明例子toString()转成字符串var num=1;alert(num.toString())String()强制转换转成字符串var num=1;alert(Strin ...
- (7)JavaScript字面量
一.字面量 字面量(literal)是用于表达一个固定值的表示法,又叫常量. 通俗的理解,字面就是所见即所得,js 程序执行到代码中的字面量,会立即知道它是什么类型的数据,值是多少. 可以用于表示固定 ...
- python 3.3.3 字面量,正则,反斜杠和原始字符串
两个不起眼但是比较重要的设定 Python str类型的字面量解释器 当反斜杠及其紧接字符无法构成一个具有特殊含义的序列('recognized escape sequences')时,Python选 ...
最新文章
- MIT自然语言处理第三讲:概率语言模型
- 计算机组成流水系统可以,计算机组成原理实验十三建立指令流水系统实验
- Spring boot actuator端点启用和暴露
- 微信小程序时代,哪些人能赚到第一桶金
- 6. 以下耦合度中最松散的耦合是_什么是程序设计中的高内聚、低耦合?
- 课程题目 : 1003. 简单字符串匹配
- C++ STL之vector详解
- java 继承list_Java集合—List—继承关系
- 畅销书看得不过瘾?KU电子书包月服务了解一下
- es 修改mapping
- react 调用webIm
- laravel从入门到精通之 时区设置
- React实现局部刷新
- 单片机课程设计——基于51单片机温湿度检测系统的设计与实现
- 朴素贝叶斯算法新闻文本分类
- Linux内核之PCI设备
- python从入门到实践18章答案
- The requested contract was not found
- Kali系统IP地址配置及SSH开启
- Linux下的自动化工具xdotool
热门文章
- c# json 按照key顺序排序。。。
- vs code中的platformIO插件,完成Arduino的程序编写,导入,安装开发板管理库
- 费启鸣的美食美刻上线,将代言菲仕乐锅具,CP感好强!
- 随风潜入夜,润物细无声----听朱正辉老师谈3G与现代化信息生活
- 8 - 三重积分、曲线、曲面积分
- 实现线下教育转线上—知识付费系统(多版本)
- 阿里云mysql 连接数_阿里云mysql最大连接数
- 软件工程常见费用参考标准
- js计时器实现页面刷新和幻灯片效果
- win7 64位连接oracle11g,win7 64位系统下使用32位PLSQL连接64位Oracle 11g