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

直接量的类型

并不是所有的数据类型都可以指定直接量,能指定直接量的通常只有三种类型:基本类型、字符串类型和 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 = "C语言中文网";

String url = "";

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

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

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

提示:本篇文章由 泉州SEO www.234yp.com 整理发布,Java教程 www.234yp.com/Article/198110.html 谢谢合作!由于 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. java基础项目_Java 教程整理:基础、项目全都有

    Java 在编程语言排行榜中一直位列前排,可知 Java 语言的受欢迎程度了. 网上有很多 Java 教程,无论是基础入门还是开发小项目的教程都比比皆是,可是系统的很少,对于Java 学习者来说找到系 ...

  2. java工具配置_Java™ 教程(配置实用工具)

    配置实用工具 本节介绍一些帮助应用程序访问其启动上下文的配置实用程序. 属性 Properties是作为键/值对管理的配置值,在每对中,键和值都是字符串值,键标识并用于检索值,就像变量名用于检索变量的 ...

  3. 2023年黑马Java入门到精通教程--Java基础入门

    推荐教程:java零基础入门到精通 如何使用Java Java语言的产品是 JDK(Java Development Kit :Java开发者工具包) ,必须安装JDK才能使用Java语言. JDK产 ...

  4. java 字符串 常量_Java进阶——Java中的字符串常量池

    字符串常量池 JVM为了减少字符串对象的重复创建,其内部维护了一个特殊的内存,这段内存被成为字符串常量池(方法区中).实际上还有整型常量池.浮点型常量池等等.字符串常量池存放的是对象的引用,而不是对象 ...

  5. java序列化 反序列化_Java序列化– Java序列化

    java序列化 反序列化 Serialization in Java was introduced in JDK 1.1 and it is one of the important feature ...

  6. java native 接口_Java本地接口--Java Native Interface (JNI)

    一.方法介绍 java native方法是指本地方法,当在方法中调用一些不是由java语言写的代码或者在方法中用java语言直接操纵计算机硬件时要声明为native方法. java中,通过JNI(Ja ...

  7. eclipse java web乱码_JAVA and JAVA WEB with TOMCAT and ECLIPSE 学习过程中遇到的字符乱码问题及解决方法汇总(随时补充)...

    JAVA语言具有跨平台,unicode字符集编码的特点. 但是在开发过程中处理数据时涉及到的字符编码问题零零散散,尤其是处理中文字符时一不留神就可能出现一堆奇奇怪怪的符号,俗称乱码. 对于乱码,究其原 ...

  8. java获取屏幕截图_java 利用java运行时的方法得到当前屏幕截图的方法

    将截屏图片保存到本地路径: package com.test; import java.awt.AWTException; import java.awt.Dimension; import java ...

  9. java 平台无关_Java | 为什么 Java 实现了平台无关性?

    前言从最初学习Java开始,我们就知道Java的口号是:"一次编写,到处运行".没有了平台的束缚,使得我们再编写Java时并不需要(那么)关心将来运行程序的平台. 那么,Java是 ...

最新文章

  1. PHP设计模式之装饰者模式
  2. java 单例 缓存hashmap_java 、HashMap 和单例
  3. 如何在服务器上运行python程序_在服务器上配置运行(每天一则段子python程序)...
  4. 启用密码管理之前创建的用户连接Oracle报ORA-28002处理一则
  5. 如何掌握“所有”的程序语言?没错,就是所有!
  6. [精品]CSAPP Bomb Lab 解题报告(二)
  7. java class _Java Class文件详解
  8. 计算机中 堆 、栈、
  9. Fiddler使用AutoResponder进行本地文件和线上文件的映射
  10. [Python] 最常见括号()、[]、{}的区别
  11. 怎样把pdf转换成word-多语言ocr支持
  12. 手把手教你批量保存花瓣图片到同一目录的技巧
  13. 如何让计算机查找不到无线网络,笔记本电脑搜索不到无线网络怎么办?
  14. 如何有效的避免空指针异常
  15. 在学校图书馆里进入WOS却依然无法搜索文献如何解决?
  16. mysql lag和lead_Oracle的LAG和LEAD分析函数
  17. 小铃铛shake动画
  18. 1111. Blash/Blah数集 (Standard IO)
  19. 引导修复第一类:关于Windows的引导修复
  20. CTFSHOW-web入门-XXE

热门文章

  1. 如何查看linux系统是32位还是64位
  2. 如何设置GridView的内框线颜色
  3. 良好编程习惯的重要性
  4. 好文转载——追求卓越之旅
  5. SAP HANA能否推动实时应用?
  6. UART 和 USART 的区别 == 通用异步收发传输器 通用同步/异步串行接收/发送器
  7. Matplotlib常见问题总结
  8. 八个最好的开源机器学习框架和库
  9. 计算最长公共数字串个数
  10. linux系统在硬盘上安装程序,在硬盘中安装Linux操作系统最简单的方法