文档章节

5. Java字面量(直接量)

brucelee80
 brucelee80
发布于 2013/09/13 11:23
字数 883
阅读 1134
收藏 1

转载自:http://my.oschina.net/brucelee80/blog

Java字面量(Java直接量)

int i = 1;把整数1赋值给int型变量i,整数1就是Java字面量,
同样,String s = "abc";中的abc也是字面量。

数据类型

直接量描述

举例

int

整数直接量(可用二、十、八、十六进制表示)

12

-12

+12

0b12

012

0x12

long

在整数直接量(也就是int型)后面,加上字母l或L

12l

-12L

float

在数字(包括整数和小数)后面,加上字母f或F

3f

-3.14F

3.14e5F

-3.14E-5f

.5f

double

1.浮点数直接量

2.科学计数法直接量

3.在数字(包括整数和小数)后面加上字母d或D

3d

3.14e-5

-.5

boolean

布尔直接量true、false

true

false

char

1.单引号内的单个字符

2.单引号内的转义字符

‘a’

‘中’

‘\n’

‘\u0000’

String

双引号内的字符序列

“abc”

“中国”

null

引用类型的空指向

null

举例:

int i1 = 123; // 十进制123
int i2 = +0b101; // 二进制101
int i3 = -0123; // 八进制123
int i4 = 0xA9E3F; // 十六进制A9E3F

long l1 = 123456789l;
long l2 = 0b101L;
long l3 = +0123L;
long l4 = -0xA9E3FL;

float f1 = 3.14f;
float f2 = -3e-5f;
float f3 = +.5F; // float型数 正0.5

double d1 = 3.0;
double d2 = +314e-2;
double d3 = -.5; // double型数 负0.5

boolean b = true;

char c1 = 'a';
char c2 = '中';
char c3 = '\\'; // 转义字符,最终的字符是反斜杠
char c4 = '\123'; // \+三位八进制数
char c5 = '\u000f'; // Unicode 000f

String s1 = "abc";
String s2 = "中国";
String s3 = "\n\r"; // 转义字符串,最终的字符串是换行回车

Object o = null;
String s = null; // 因为String是引用类型,所以可以赋null

错误的字面量

  1. 比int的最大值还要大1的直接量2147483648是错误的,因为超过int表示的范围,应该使用2147483648L表示。

  2. 比long的最大值大1的直接量9223372036854775808L是错误的,因为超过long表示的范围,应该使用 BigInteger类来表示:BigInteger b = new BigInteger("9223372036854775808");

  3. 下面四个字面量是错误的:
             一个单引号:'''
             一个反斜杠:'\'
            带有"引号的字符串:"abc"xyz"
            带有\反斜杠的字符串:"abc\xyz"
    正确的写法是转义:
            '\''
            '\\'
            "abc\"xyz"
            "abc\\xyz"

说明

  1. 整数直接量的四种表示:十进制、二进制(JDK7支持)、八进制、十六进制。
      八进制:以数字0开头的整数,如012,表示十进制的10;
      十六进制:以数字0和字母X(或x)组合开头的整数,如0x12,表示十进制的18。
      二进制:以数字0和字母B(或b)组合开头的整数,如0b11,表示十进制的3;

  2. Java中,数字前多余的0,会自动去掉。如00.1表示0.1,0012表示八进制012。

  3. Java中,小数可省略0.部分或.0部分,如.3表示0.3,3.表示3.0。

  4. 对于数字直接量,需要根据直接量类型以及各类型的取值范围来规范赋值,不能将高取值范围的直接量赋值给低取值范围的类型,如:

    float f1 = 3.14; // 错误,3.14是double型,float型取值范围小于double
    float f2 = 3.14f; // 正确
    double d1 = 3.14; // 正确
    double d2 = 12; // 正确,直接量12是int型,而double型取值范围大于int,d2的值将变成12.0

  5. 笔者认为还有一种字面量,叫数组字面量,如{元素1,...,元素N},它只能赋给数组。

  6. JDK1.7新增特性
      二进制表示数字:以数字0和字母B(或b)组合开头的整数;
      下划线分割符:int one_million = 1_000_000;

转载自:http://my.oschina.net/brucelee80/blog

© 著作权归作者所有

共有 人打赏支持
brucelee80
粉丝 1
博文 18
码字总数 12525
作品 0
深圳
程序员
我终于搞清楚了和String有关的那点事儿。

String,是Java中除了基本数据类型以外,最为重要的一个类型了。很多人会认为他比较简单。但是和String有关的面试题有很多,下面我随便找两道面试题,看看你能不能都答对: Q1:定义了几个对...

06/24
0
0
java永久代,元空间,常量池,方法区详解

1,java内存模型简介 《深入理解java虚拟机》里将java内存分为如下五个模块: 堆-堆是所有线程共享的,主要用来存储对象。 其中,堆可分为:新生代和老年代两块区域。使用NewRatio参数来设定...

Kingram
08/14
0
0
通过Java字节码发现有趣的内幕之String篇(一)

很多时候我们在编写Java代码时,判断和猜测代码问题时主要是通过运行结果来得到答案,本博文主要是想通过Java字节码的方式来进一步求证我们已知的东西。这里没有对Java字节码知识进行介绍,如...

jaffa
2015/08/28
0
7
Programcreek -Java基础之String---用""还是用new String("")

Java里可以用两种方法来创建一个String: String x = "abc";String y = new String("abc"); 这两种方法有什么不同? 1. 双引号 Vs. 构造函数 用两个简单的代码来回答这个问题。 Example 1: S...

YangEphraim
2015/03/19
0
0
Android冷知识——Java中的字符串常量池

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

qq_30379689
05/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
今天
1
0
AVA中CAS-ABA的问题解决方案AtomicStampedReference

了解CAS(Compare-And-Swap) CAS即对比交换,它在保证数据原子性的前提下尽可能的减少了锁的使用,很多编程语言或者系统实现上都大量的使用了CAS。 JAVA中CAS的实现 JAVA中的cas主要使用的是...

码代码的小司机
今天
2
0
Android JNI开发系列(十三) JNI异常处理

JNI 异常处理 JNI异常与JAVA处理异常的区别 JAVA 有异常处理机制,而JNI没有 如果JAVA中异常没有捕获,后面的代码不会执行,JNI会执行 JAVA编译时的异常,是在方法显示的声明了某一个异常,编...

蔡小鹏
今天
2
0
简单介绍Java 的JAR包、EAR包、WAR包区别

WAR包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。War专用于Web方面。大部分的JAVA WEB工程,都是打成WAR包进行发布的。 War是...

Linux就该这么学
今天
3
0
Qt那些事0.0.7

在帮助文档(Overview - QML and C++ Integration)中随缘遇到一张图,是关于C++对象与QML整合介绍的,值得标记下来,虽然大部分功能也有所涉猎,但是还是留个记号,万一哪天我失忆了还想写Q...

Ev4n
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部