Java中常量的分类包括字面值常量 和自定义常量,字面值常量包括字符串常量、整数常量、小数常量、字符常量、布尔常量、空常量。
特点:变量必须先声明后使用。
里面的值可以改变,一个变量只能存一个值。
变量是有作用域的作用域只在声明它的那个{}。
变量的三要素:数据类型、变量名、变量值。
3、变量的数据类型:
基本数据类型:
整形:byte 一个字节
short2个字节
int4个字节
long8个字节
浮点型:float 4个字节 十进制科学技术法小数点后6—7位
double 8个字节十进制科学技术法小数点后15—16位
字符型:char 2个字节采用Unicode字符集,每个字符都有唯一一个二进制代码
布尔型:boolean 只有两个值true和false
引用数据类型:
类:例如String (String不是数据类型)
接口
数组
4、基本数据类型转换:
自动类型转换(隐式转换、自动类型提升):取值范围小的数据类型与取值范围大的数据类型进行运算,会先将小的数据类型提升为大的再运算。char、byte、short之间不会相互转换,它们三者在计算时首先转为int类型。
字符串与任何基本数据类型进行运算,都将转换为字符串类型,但是要考虑优先级(就近)。
例如:
int i = 10;
int j =10;
String s = "sss";
System.out.println(i+j+s);//结果为“20sss”System.out.println(s+i+j);//结果为“sss1010”
字符串不能直接转为基本数据类型,但可以转为对应的包装类再自动拆箱。
强制类型转换:将取值范围大的数转换为取值范围小的数据类型时需要加上强制转换符(),但可能造成精度降低或移除。自动类型提升: 强制类型转化
int a = 10;int a =10;
byte b = 10;byte b = 10;
a =a+b;b = (byte)(a+b);
5、数据类型相关的细节问题汇总:
1)Java中的整形常量默认为int型;声明long型常量后面需加L或者l。
2)Java中的浮点型常量默认为double型;声明float型常量后边需加F或者f。
例如:long i = 10;//这样是不报错的 自动类型提升。
floate i = 1.0; //报错,需要强转。
3)char类型是可以进行运算的因为它有对应的Unicode码。(‘0’ = 48,‘A’ = 65,'a' = 97)。
4)可以直接使用Unicode值来表示字符型常量:‘\Uxxxx’ 其中xxxx代表一个十六进制整数
特殊:‘\U0000’ 是个换行符 //char c = '\U0000a' 会编译报错。