标识符命名规则:
标识符必须以字母、下划线、美元符开头。
标识符其他部分可以是字母、下划线、美元符和数字的任意组合。
数据类型
java是一种强类型语言,每个变量都必须声明其类型。
基本数据类型有8种
1,整数类型
八进制数,以0开头,例如:012
十六进制数,以0x或0X开头,例如:0x12
java的整型常数默认是int型,声明long型常量可以后加‘l'或’L‘
例如:
long a=55555555;//不出错,在int表示的范围内(21亿内)
long b=88888888888;//不加L出错,超出int表示的范围
类型 | 占用存储空间 | 表数范围 |
byte | 1字节 | -128到127 |
short | 2字节 | -32768到32767 |
int (integer) | 4字节 | -2147483648到2147483647 |
long | 8字节 |
<span style="white-space: pre;">注:1个字节有8位</span>
int a = 10;
Integer.toBinaryString(a); //10进制转成2进制字符串
Integer.toOctalString(a); //10进制转成8进制字符串
Integer.toHexString(a); //10进制转成16进制字符串
byte b = 100;//如果数据的大小没有超过byte/short/char的表数范围,则可以自动转型
2,浮点数
默认是double。
浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。
类型 | 占用存储空间 | 表数范围 |
float | 4字节 | -3.403E38到3.403E38 |
double | 8字节 | -1.798E308到1,798E308 |
注意:
float a = 0.1f;
double b = 1.0/10;
System.out.println(a==b); //false
3,字符型
单引号表示字符常量;
Char是在0到65535范围,运算时直接当做整数来运算
Char c3 = ‘\’’;//输出引号
Char c4 = ‘\\’;//输出反斜杠
char c = ‘a’;
int i = c + 2;
System.out.println(i); //输出结果是99
4,布尔型
一位,不是一个字节
类型转换
自动类型转换:
容量小的数据类型可以自动转换为容量大的数据类型
此处的容量大不是指字节数多,而是表数的范围大,例如:long可以转为float
特例:可以将整型常量直接赋值给byte、short、char等类型变量,而不需要进行强制类型转换,只要不超过其表数范围
Short a=12; //合法
Short a=1234567; //不合法
注意:
1,表达式中的类型提升问题
int a =1;
long b = 2;
int c = a+b; //所有的二元运算符,都会有类型提升的问题!
2,如下
int a=1000000000; //10亿
int b=20;
int total = a*b; //返回的是负数 应改为long total = ((long)a)*b; //外层括号可要可不要
因为int乘以int结果返回还是int,已经溢出,需要强制类型转换
局部变量和实例变量
局部变量:
方法或语句块内部定义的变量。
使用前必须声明和初始化(赋初值)。
实例变量(成员变量):
方法外部、类的内部定义的变量
如果不自行初始化,他会自动初始化成该类型的默认初始值(数值型变量初始化成0或0.0,
字符型变量的初始化值是16位的0,布尔型默认是false)\u0000
public void aa(){
int a;
int b=a+1;//出错,a未初始化
}
final修饰的变量为常量,只能被初始化一次,常量一般使用大写。