【java基础】字面量

发布时间 2023-10-09 14:23:58作者: zzsuje
一.字面量的概念 
1. 什么是字面量
字面量是指在程序中无需变量保存,用于表示固定的值(fixed value)可直接表示为一个具体的数字或字符串的值,即数据在程序中的书写格式。
比如 a = b * 2 这个语句中,2就是一个字面值,它本身就是一个具体的值。
2. 字面量的分类
整型字面量
浮点字面量
字符和字符串字面量
特殊字面量
3.特殊字面量
制表符:\t 其他:\n \t
空类型:null
 二. 字面量的分类
1. 整型字面量
?int字面量
?long字面量两种
1.1整数型字面量的四种表示形式
int a = 10;//十进制表示法:以数字0-9组成的常数,默认为十进制表示法。 int b = 0b101;//二进制表示法:以0b或0B开头的常数,由0和1组合而成。 int c = 012;//八进制表示法:以0开头的常数,由数字0-7组成。 int d = 0x1F;//十六进制表示法:以0x或0X开头的常数,由0-9和A-F(大小写均可)组成。
1.2 整数型字面量默认当做int处理
int n1 = 100;//100这个字面量会被当做int类型处理
1.3 当整数型字面量没有超出byte的范围,可以直接赋值给byte类型的变量
byte b1 = 127; // 这是允许的 byte b2 = 128; // 如果超出了byte范围,编译报错
在整数类型中,除了byte有这个待遇之外,short同样也是支持的。也就是说:如果整数型字面量没有超出short取值范围时,也是支持直接赋值的。
1.4 当整数型字面量不足以表示大数,必须使用long类型
long z = 2147483648;
编译报错,原因是2147483648被当做int类型处理,而该数字本身已经超出了int最大值,如何修改?
long z = 2147483648L;
2. 浮点字面值
?float字面值
?double字面值
Java的浮点型字面量默认为double型,声明float型常量须后加'f'或'F'
浮点字面值支持科学技术法表示。
float f1 = 1.23e-4F; float f2 = 1.23E0F;
3 .字符及字符串字面量
char ch1 = 'a'; // 字符字面量为'a' char ch2 = '\U005A'; // Unicode编码的字符字面量,表示字符'Z'
3.1 Java中字符字面值用单引号括起来,如‘@’‘1’,所有的UTF-16字符集都包含在字符字面值中。
3.2 常见的转义字符序列有:
\ddd(八进制) 、 \uxxxx(十六进制Unicode字符)、\'(单引号)、\"(双引号)、\\ (反斜杠)\r(回车符) \n(换行符) \f(换页符) \t(制表符) \b(回格符)
4.特殊字面量
?Null字面量
?class literal字面量
1.null是一种特殊的类型(type),可以将它赋给任何引用类型变量,表示这个变量不引用任何东西。如果一个引用类型变量为null,表示这个变量不可用。
2.还有一种特殊的class literal,class literal就是诸如String.class 、Integer.class这样的字面值。
 
 三.字面量的思考
字面值是java源程序的组成部分之一,包括标识符和关键字它们都是java源程序的组成部分。
字面量(数据)在计算机编程中也是有类型:
//100是一个字面值,是一个整数型数值,那么既然是数据存储在内存中,必定会占用一定的内存空间。
System.out.println(11111000);
System.out.println(11111000);
问题:输出的1111000占用的是同一块内存空间吗?
答案:不是,它们都有自己的空间
重复访问某一空间--->用变量
 
//分析以下:如果只有字面量,没有变量机制的话有什么问题?//10是一个整数型数据,在内存中占有一定空间(CPU  内存 硬盘)
//10 + 20 = 30
 
//在内存中找一块空间存储10,再找一块空间存储20,CPU负责“+”运算,算完之后的结果是30,那么30也会在内存中找一块临时空间存储起来
思考:以下三个10在内存当中是一块空间,还是三块不同的空间?//以下虽然都是10,但是占用3个不同的内存空间
System.out.println(10);
System.out.println(10);
System.out.println(10);
//若想重复使用这块空间,则需要给这块空间起一个名字,引出  “变量”