**
数据类型与运算符
**
1.1变量和类型
(1)java中有8种内置类型
类型 | 字节大小 |
---|---|
byte | 1 |
char | 2 |
short | 2 |
int | 4 |
float | 4 |
long | 8 |
double | 8 |
boolean | 无 |
(2)引用类型
String–>字符串
final --> 常量
String:定义字符串,可以使用“+”进行拼接字符串
final:定义常量。被赋值后不能被修改,但可以在定义时候不初始化,之后赋值。
【注】
1.部分变量在定义时与c语言不同(例如:float 所定义的单精度浮点数后边需加f,long需加L)
2.boolean类型只有turn与false,而不是0与非零的差别,并且布尔类型没有明确的字节大小
1.2命名规则
硬性指标:
- 一个变量名只能包含数字, 字母, 下划线
- 数字不能开头.
- 变量名是大小写敏感的. 即 num 和 Num 是两个不同的变量.
【注】: 虽然语法上也允许使用中文/美元符($)命名变量, 但是 强烈 不推荐这样做.
软性指标:
- 变量命名要具有描述性, 见名知意.
- 变量名不宜使用拼音(但是不绝对).
- 变量名的词性推荐使用名词.
- 变量命名推荐 小驼峰命名法, 当一个变量名由多个单词构成的时候, 除了第一个单词之外, 其他单词首字母都大写.
(详情参考阿里巴巴java开发手册)
1.3类型转换
java作为一个强类型编程语言,当不同的类型直接的变量相互赋值时,有严格的校验。
例1:int和long相互赋值
int a = 10;
long b = 20;
a = b; //编译出错,损失精度
b = a; //编译通过
long 表示的范围更大, 可以将 int 赋值给 long, 但是不能将 long 赋值给 int.
结论: 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型, 反之则不行.
例2:int与boolean
int a = 10;
boolean b =ture;
b = a; //编译错误,提示不兼容类型
a = b; //编译错误,提示不兼容类型
结论: int 和 boolean 是毫不相干的两种类型, 不能相互赋值
强制类型转换
int a = 0;
double b = 10.5;
a = (int)b;
int a = 10;
boolean b = false;
b = (boolean)a; // 编译出错, 提示不兼容的类型.
结论: 使用 (类型) 的方式可以将 double 类型强制转成 int.
【注】
- 强制类型转换可能会导致精度丢失. 如刚才的例子中, 赋值之后, 10.5 就变成 10 了, 小数点后面的部分被忽略.
- 强制类型转换不是一定能成功, 互不相干的类型之间无法强转.
小结1.
1.不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型.
2. 如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失.
3. 将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检查.