Java直接量

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

直接量的类型

并不是所有的数据类型都可以指定直接量,能指定直接量的通常只有三种类型:基本类型、字符串类型和 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.36、3.1415。

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

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

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

在大多数其他语言中,包括 C/C++,字符串作为字符的数组被实现。然而,在 Java 中并非如此。在 Java 中,字符串实际上是对象类型。

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

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

直接量的赋值

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

int a = 5;
char c = 'a';
boolean b = true;
float f = 5.22f;
double d = 4.17;
String name = "中国第一";
String url = "http://www.baidu.com";

除此之外,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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/news/564946.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zabbix 监控 db2_zabbix-第二章-第二节 zabbix添加简单主机监控

首先我们需要了解下监控的整体流程,如下下图所示:整体流程就是这样子的,我们后期也会将上面的功能一一实现,不过这个目标还有点儿远,毕竟“罗马城不是一天建成的”现在我们先学会添加 “主机组” 和 “主机” &#xf…

mysql数据库(1):连接与断开服务器

目录 查看初始密码 更改初始密码 登录 退出 重启mysql:(停止mysql再执行,不然会报错) 拒绝访问解决 停止MySQL 再次打开MySQL 用户名:root 我的初始密码:不知道 现密码:123456 查看初始密码 在MySQL安装目录的 bin 目录…

java 各种数据类型的互相转换

java 各种数据类型的互相转换 StringBuilder转化为String String str "abcdessahdfkhkdsj";StringBuilder stb new StringBuilder(str);整型数组转化为字符串 StringBuilder s new StringBuilder();for(i1;i<n;i) {s.append(String.valueOf(a[i]));}String s…

mysql数据库(2):输入查询

目录 &#xff08;1&#xff09;查看日期和版本 &#xff08;2&#xff09;用作计算器&#xff1a;select计算的式子 &#xff08;3&#xff09;可以在一行上输入多条语句&#xff0c;只需要以一个分号间隔开各语句 &#xff08;4&#xff09;mysql接受自由格式的输入&…

OFDM子载波频率 知乎_通过基于SDR的信号处理实现的低复杂度便携式无源无人机监控...

摘要&#xff1a;本文概述了被动无人机的检测。开发了基于SDR的便携式通用软件无线电外围设备&#xff08;USRP&#xff09;原型&#xff0c;用于在两种情况下进行检测。在无人机与地面控制器通信的情况下&#xff0c;采用无人机信号的循环平稳性特征和伪多普勒原理。对于无人机…

Java自动类型转换和强制类型转换

数据类型的转换可以分为隐式转换&#xff08;自动类型转换&#xff09;和显式转换&#xff08;强制类型转换&#xff09;两种。 隐式转换&#xff08;自动类型转换&#xff09; 满足2 个条件&#xff0c;那么将一种类型的数据赋给另外一种类型变量的时&#xff0c;将执行自动…

mysql数据库(3):使用数据库

目录 &#xff08;1&#xff09;使用SHOW语句找出服务器上当前存在什么数据库 &#xff08;2&#xff09;访问某个数据库 &#xff08;3&#xff09;查看数据库用户名和密码 &#xff08;1&#xff09;使用SHOW语句找出服务器上当前存在什么数据库 show databases; 返回&a…

面向对象方法的优势简化软件开发的过程_软件开发技巧的途径

软件开发的复杂性每天都在增加。几乎每年都会发布一个新的框架&#xff08;例如AngularJS&#xff0c;ReactJS&#xff09;和一个新的构建工具&#xff08;例如Webpack&#xff0c;Rollup&#xff09;。甚至每年都会发布新的JavaScript版本&#xff08;ECMAScript 2015、2016和…

Java String字符串和整型int的相互转换

String 在编程中被广泛使用&#xff0c;所以掌握 String 和 int 的相互转换方法是极其重要的。 String转换为int String 字符串转整型 int 有以下两种方式&#xff1a; Integer.parseInt(str)Integer.valueOf(str).intValue()注意&#xff1a;Integer 是一个类&#xff0c;是…

mysql数据库(4): 创建并选择数据库

目录 (1)创建数据库yang (2)使用yang这个数据库&#xff0c;让yang变成当前数据库 (3)每次启动mysql会话时在使用前先选择这个固定的数据库 (1)创建数据库yang create database yang; 返回&#xff1a; (2)使用yang这个数据库&#xff0c;让yang变成当前数据库 use yang;…

flowjo软件使用方法_管家婆软件使用方法出库教程,管家婆软件做账流程视频_双全科技...

管家婆软件的使用方法出库&#xff0c;管家婆软件做账流程视频想要做好财务管理工作&#xff0c;那么财务人员就要经常对自己进行总结&#xff0c;归纳工作中的得失&#xff0c;对工作存在的问题要及时进行整改&#xff0c;提升工作效率。下面就由管家婆软件小编介绍一下管家婆…

Java 字符串拼接的各种玩法

java中字符串拼接各种方式与执行效率 由于String对象是不可变对象&#xff0c;因此在需要对字符串进行修改操作时&#xff08;如字符串连接和替换&#xff09;&#xff0c;String对象总是会生成新的对象&#xff0c;所以其性能相对较差。   String常量的累加操作&#xff1a;…

mysql数据库(5): 创建表

目录 &#xff08;1&#xff09;查看有哪些表 &#xff08;2&#xff09;创建一个宠物表关于名字&#xff0c;主人&#xff0c;种类&#xff0c;性别。 &#xff08;3&#xff09;查看下创建的表 &#xff08;4&#xff09;查看某个表内容 &#xff08;1&#xff09;查看有…

谷歌浏览器外贸版_外贸 网站移动端优化 浅析

外贸 网站移动端优化 浅析自2015年推出所谓的Mobilegeddon以来&#xff0c;移动设备的重要性一直在不断增长&#xff0c; 网站移动端优化 就成了不得不引起重视的问题&#xff0c;同学们从事谷歌SEO优化工作就必须考虑不断变化的环境&#xff0c;从而在对应的项目上进行相关的操…

开机f8修复电脑步骤_电脑无法开机怎么办,8 种情况的修复方法

电脑故障千奇百怪&#xff0c;其中最令人慌张的一定是无法开机。导致电脑无法开机的原因太多了&#xff0c;但线索却是最少&#xff0c;我们唯一知道的事实就是&#xff1a;什么都不起作用了。作为非专业维修人员&#xff0c;如果解决电脑无法开机的问题&#xff1f;老实说小A并…

mysql数据库(6):将数据装入表中

目录 &#xff08;1&#xff09;一条数据一条数据的插入 &#xff08;2&#xff09;批量插入 &#xff08;1&#xff09;一条数据一条数据的插入 INSERT INTO pet VALUES(hanhan,洋洋,hehe,f,2022/2/5,NULL); 返回&#xff1a; 空就填为 null &#xff08;2&#xff09;…

Java Pattern类和Matcher类的使用

java.util.regex 是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类&#xff1a;Pattern 和 Matcher。 Pattern 对象是正则表达式编译后在内存中的表示形式&#xff0c;因此&#xff0c;正则表达式字符串必须先被编译为 Pattern 对象&#xff0c;然…

mysql数据库(7):表中检索信息

目录 &#xff08;1&#xff09;选择所有数据 &#xff08;2&#xff09;修改表内容 方法一 方法二 &#xff08;3&#xff09;单独选择某一行 &#xff08;4&#xff09;选择特殊列 &#xff08;5&#xff09;分类行 &#xff08;6&#xff09;日期计算 &#xff08;…

saas- -m ihrm 项目_Convertlab等企业入选腾讯SaaS加速器二期名单

全球TMT2020年10月30日&#xff0c;10月29日&#xff0c;腾讯SaaS加速器二期入选名单正式公布。Convertlab从超过1500个报名项目中脱颖而出&#xff0c;入选腾讯SaaS加速器全球40强。入选的40家企业覆盖零售、医疗、金融、教育、工业、地产等13个领域&#xff0c;总估值超700亿…

20个正则表达式必知(前端开发)

正则表达式(regular expression)描述了一种字符串匹配的模式&#xff0c;可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。 列目录时&#xff0c; dir .txt或ls .txt中的.txt就不是一个正则表达式,因为这里与正则式的*的含义…