一、变量的定义
计算机用来存储变量可变数据的内存空间。
/**
* 声明变量的语法:
* 变量数据类型 变量名1 [=变量值1[,变量名2[=变量值2]...]]
*/
eg: int b1 = 88; System.out.println("b1");//输出字符串:b1 System.out.println(b1);//输出:88
①变量命名规则
以字母、下划线、$开始,可以包含数字,但不能含有特殊符号,也不能使用 Java 关键字
②变量命名规范
驼峰命名法:首字母小写,如果有多个单词组成,从第二个单词开始首字母大写。 如:startGame
使用变量应注意:
①赋值时不能超过数据类型所能表示的范围;
②如果定义long类型的数据,需要在后面加L或l,float类型加F或f。
二、变量的数据类型
(1)基本数据类型(8种)
整型 | 占用空间 | 取值范围 |
---|---|---|
byte | 8位(1个字节) | -2^7 ~ 2^7-1 |
short | 16位(1个字节) | 2^15 ~ 2^15-1 |
int(默认) | 32位(1个字节) | 2^31 ~ 2^31-1 |
long | 64位(1个字节) | 2^63 ~ 2^63-1 |
浮点型 | 占用空间 | 说明 |
float | 32位(1个字节) | 单精度小数(不常用) |
double(默认) | 64位(1个字节) | 双精度小数(常用) |
③字符型:char 16位(2字节) 0-65535
用单引号包含的可打印的单个字符:'A' , 'B' , '我' 等
④布尔类型:boolean 只有两个值 true和false
用单引号包含的可打印的单个字符:'A' , 'B' , '我' 等
注:基本数据类型的最值和位数都是用引用数据类型计算的。
(2)引用数据类型(2种)
Java 中 jdk 封装的类,以及自定义的 java 类,都属于引用数据类型。
每一种基本数据类型都对应有引用数据类型(称为基本数据类型的包装类)。
基本数据类型 | 引用数据类型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
注:这些引用数据类型封装了对基本数据类型进行操作的方法和数据。比如:求基本数据类型的最大值、最小值以及位数都可以使用对应的引用·数据类型来进行获取。
/**
* 求基本数据类型的最值及位数
*/
public class Demo02 {
public static void main(String[] args) {
//求基本数据类型byte、short、int、long、char的最值以及位数
System.out.println("byte的最大值:"+Byte.MAX_VALUE);
System.out.println("byte的最小值:"+Byte.MIN_VALUE);
System.out.println("byte的位数:"+Byte.SIZE);
//short、int、long与byte的求法类似
System.out.println("char的最大值:"+(int)Character.MAX_VALUE);
System.out.println("char的最小值:"+(int)Character.MIN_VALUE);
System.out.println("char的位数:"+Character.SIZE);
}
}
运行结果:
三、变量的类型转换
(1)自动类型转换(隐式类型转换) 小——>大
byte b = 125 ;
int i = b ; // byte类型的b会自动转化为int类型
(2)强制类型转换(显式类型转换) 大——>小 慎用
int i = 125 ;
byte b = (byte) i ; // int类型的 i 会强制转化为byte类型
经典面试题:
/**
* 面试题
*/
public class Demo01 {
public static void main(String[] args) {
// 强制类型转换
int i1 = 130;
byte b1 =(byte) i1;
System.out.println(b1);
int i2 = -130;
byte b2 =(byte) i2;
System.out.println(b2);
short s = 1;
//对于byte、short、char类型而言,当发生运算时,运算结果会被隐式转换成int类型
// short s1 = s + s;//报错
//可改为
// short s1 = (short) (s+s);
//或改为
int s1 = s +s;
//s += 1 <==> 等价于s = (s的类型)(s+1);
s += 1;//等价于s = (short)(s+s);
System.out.println(s);
}
}
运行结果:
又如:
int a = 500;
byte b = (byte) a;
System.out.println(b);
答案为:-12