数据类型
基本数据类型
1.整数型
整型数据类型,用于存储 整数
数据类型 | 占用内存空间字节数 | 数据范围 |
---|---|---|
byte | 1 | -128 ~ 127 |
short | 2 | -32768 ~ 32767 |
int(默认) | 4 | -2^31 ~ 2^31 -1 |
long | 8 | -2^63 ~ 2^63 -1 |
2.浮点型数据类型
小数类型,浮点型可能只是一个近似值,并非精确的值
数据类型 | 占用内存空间字节数 | 数据范围 |
---|---|---|
float | 4 | 10^308 |
double(默认) | 8 | 10^38 |
3.字符类型
字符常量是英文单引号包含的单个元素
数据类型 | 占用内存空间字节数 | 数据范围 |
---|---|---|
char | 2 | 可以存储中文 |
4.布尔类型
数据类型 | 占用内存空间字节数 | 数据范围 |
---|---|---|
boolean | 1. 占用一个字节 2. 占用四个字节 3. boolean类型数组 每一个布尔类型占用一个 bit 位 | true false |
引用数据类型
类,接口,数组,字符串
数据类型转换
自动类型转换
小容量可以直接赋值给大容量,称为自动类型转换。
代码示例:
/*
在java中有一条非常重要的结论:
在任何情况下,整数型的“字面量/数据”默认被当做int类型处理。(记住就行)
如果希望该“整数型字面量”被当做long类型来处理,需要在“字面量”后面添加L/l
建议使用大写L,因为小写l和1傻傻分不清。
*/
public class IntTest{
public static void main(String[] args){
// 分析这个代码存在类型转换吗,以下代码什么意思?
// 不存在类型转换
// 100 这个字面量被当做int类型处理
// a变量是int类型,所以不存在类型的转换。
// int类型的字面量赋值给int类型的变量。
int a = 100;
System.out.println(a);
// 分析这个程序是否存在类型转换?
// 分析:200这个字面量默认被当做int类型来处理
// b变量是long类型,int类型占4个字节,long类型占8个字节
// 小容量可以自动转换成大容量,这种操作被称为:自动类型转换。
long b = 200;
System.out.println(b);
// 分析这个是否存在类型转换?
// 这个不存在类型转换。
// 在整数型字面量300后面添加一个L之后,300L联合起来就是一个long类型的字面量
// c变量是long类型,long类型赋值给long类型不存在类型转换。
long c = 300L;
System.out.println(c);
}
强制类型转换
大容量不能直接赋值给小容量,需要使用强制类型转换符进行强转。
但需要注意的是:加强制类型转换符之后,虽然编译通过了,但是运行的时候可能会损失精度。
代码示例:
public class IntTest03{
public static void main(String[] args){
// 不存在类型转换
// 100L是long类型字面量,x是long类型的变量。
long x = 100L;
// x是long类型,占用8个字节,而y变量是int类型,占用4个字节
// 在java语言中,大容量可以“直接”赋值给小容量吗?不允许,没有这种语法。
// 编译错误信息:错误: 不兼容的类型: 从long转换到int可能会有损失
//int y = x;
// 大容量转换成小容量,要想编译通过,必须加强制类型转换符,进行强制类型转换。
int y = (int)x; // 这个(int)就是强制类型转换符,加上去就能编译通过。
// 但是要记住:编译虽然过了,但是运行时可能损失精度。
System.out.println(y); // 100
// 定义变量a int类型,赋值100
int a = 100;
System.out.println(a);
int b = a; // 将变量a中保存的值100复制一份给b变量。
System.out.println(b);
}
}
变量
变量定义需符合 AJCG 阿里巴巴 Java 代码开发规约
1. 字符使用范围:
a. 数字 0 ~ 9
b. 英文字母 a ~ z A ~ Z
c. 唯一可以使用的标点符号 _ 下划线
2. 变量定义对应的标识符要求英文字母开头
3. 标识符要求严格区分大小写
4. 标识符没有严格的长度限制,但是会根据实际的开发情况决定标识符的长度。
5. 标识符要求见名知意,动宾结构
【语义性要求】
int a,b,c; 不建议,禁止使用
payBeizhu 不可以使用
studentAge studentName studentJavaScore studentMathScore
findAllStudent findStudentById searchStudentUseName updateStudentById
deleteStudentById sortStudentUsingComparator
6. 标识符命名要求
a. 驼峰命名法
小驼峰
首字母小写,之后的每一个单词首字母大写
适用于:
变量,方法名
大驼峰
每一个单词首字母大写,
适用于:
类名,接口名
b. 下划线命名法
所有单词全部大写,使用 _ 下划线分割。
适用于:
带有名称的常量
7. 已经被 Java 占用的关键字和保留字不得用于自定义标识符使用
8. 标识符在一定范围内唯一。