java基础之数据类型和变量

数据类型

基本数据类型
1.整数型

整型数据类型,用于存储 整数

数据类型占用内存空间字节数数据范围
byte1-128 ~ 127
short2-32768 ~ 32767
int(默认)4-2^31 ~ 2^31 -1
long8-2^63 ~ 2^63 -1
2.浮点型数据类型

小数类型,浮点型可能只是一个近似值,并非精确的值

数据类型占用内存空间字节数数据范围
float410^308
double(默认)810^38
3.字符类型

字符常量是英文单引号包含的单个元素

数据类型占用内存空间字节数数据范围
char2可以存储中文
4.布尔类型
数据类型占用内存空间字节数数据范围
boolean1. 占用一个字节
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. 标识符在一定范围内唯一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值