并不是所有数据类型都可以指定直接量,通常只有三种类型可以指定。具体而言,java支持8种类型的直接量
int:在程序中直接给出的整型数值,可分为二进制(0b或0B开头),十进制,八进制(0开头),十六进制(0x或0X开头)4种
long:整型数值后添加l或L就变成long类型的直接量,例如3L,0X12L
float:浮点数值后添加f或F就变成float类型的直接量,这个浮点数可以为标准的小数形式,也可以科学计数法形式,例如 5.34f,3.14E5f
double:程序中直接给出标准小数形式或科学记数法形式的的浮点数就是double类型的直接量,例如5.34,3.14E5
boolean:直接量只有true和false,boolean类型的变量不能赋给其他类型
char:char类型的直接量有三种形式,分别是单引号括起来的字符,转义字符和Unicode值标识的字符。例如'a','\n','\u0061'
String:直接量是双引号括起来的字符序列。java使用常量池(constant pool)缓存字符串直接量,
java会确保字符串的常量只有一个,不会产生多个副本,编译时确定
public static void main(String[] args) { int a = 5; char c = 'a'; boolean b = true; float f = 5.12f; double d = 5.12; String author = "yumiaoxia"; String book = null; String s0 = "hello"; String s1 = "hello"; String s2 = "he"+"llo"; System.out.println(s0==s1); System.out.println(s0==s2); }