变量就是可以变化的值,相当于内存中一个数据存储空间的表示。可以把变量看做一个房间的门牌号,通过门牌号可以找到对应房间。
变量三要素:🎉名称+值+类型🎉
注意:
1.变量必须先声明,后使用;(而Python中是直接使用)
2.变量在同一作用域内不能重名;
3.变量=数据类型+变量名+值
1.基本数据类型
1.1整型
类型 | 占用存储空间 | 范围 |
---|---|---|
byte字节 | 1字节 | -128~127 |
short短整型 | 2字节 | -32768~32767 -215~215-1 |
int整型 | 4字节 | -2147483648~2147483647 -231~231-1 |
long长整型 | 8字节 | -263~263-1 |
- 注意细节
- Java各整数类型有固定的范围和字段长度,不受os影响,以保证Java程序的可移植性。
- Java的整型常量默认int类型,声明long型要在常量后加’l’或’L’,前面的类型也要改成long。
- bit:计算机中最小存储单位。
- byte(字节):计算机中基本存储单位,1byte=8bit。
1.2浮点型
分类:
类型 | 占用存储空间 | 范围 |
---|---|---|
float单精度 | 4字节 | -3.403E38~3.403E38 |
double双精度 | 8字节 | -1.798E308~1.798E308 |
浮点数在机器中存放形式:符号位+指数位+尾数
尾数部分可能丢失,造成精度损失(小数都是近似值)
- 注意细节
- 与整数类型类似,Java浮点类型有固定范围和字段长度,不受OS影响
- Java浮点型常量默认为double型,声明float型常量须后加’f’或’F’
- 浮点型常量的两种表示方式:
十进制:7.77 777.0f .777
科学计数法:7.77e2( 7.77 × 1 0 2 7.77\times10^2 7.77×102) 7.77E-2( 7.77 × 1 0 − 2 7.77\times10^{-2} 7.77×10−2) - 通常情况下,一般用double类型
- 小陷阱: 2.7 ≠ 8.1 / 3 2.7\neq 8.1/3 2.7=8.1/3;计算机舍入误差
1.3字符型
可以用来表示单个字符,字符类型是char,char是2个字节(可以存放汉字);多个字符存放用string
public class xiaoye{
public static void main(String[] args){
char c1='椰';
char c2=97;
char c3='a';
System.out.println(c1);
System.out.println(c2);
System.out.println((int)c3);
System.out.println('a'+97);
}
}
output:
椰
a
97
194
- 注意细节
- 字符常量用单引号(’ '),双引号表示的字符串
- Java中允许使用转义字符’'将其后面的字符变成特殊字符类型
- Java中char的本质是一个整数,输出的是Unicode码对应的字符
- char类型是可以进行运算的,因为它都对应有Unicode码
1.4布尔类型
- boolean类型只允许取值true/false,无null
- boolean类型只占用1个字节
- boolean类型适用于逻辑运算
1.5数据类型转换
1.5.1自动数据类型转换🤔
Java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的类型
- 注意细节
- (byte,short)与char之间不会自动转换
- byte,short,char三者之间可以运算,在计算时首先转换为int类型;哪怕是这三种中同类型之间的运算,结果都是int类型;
- boolean类型不参与转换
- 变量赋值判断类型;具体数赋值先判断该数是否在给定类型范围之内,在的话就没毛病
- 表达式结果的类型自动提升为操作数中最大类型
1.5.2强制数据类型转换
自动数据转换的逆过程,将容量大的数据类型转换为容量小的数据类型,使用时要加上强制转换符 ( ) ,但可能造成精度降低或溢出
public class xiaoye{
public static void main(String[] args){
//精度损失
int n1=(int)1.9;
System.out.println("n1="+n1);
//数据溢出
int n2=2000;
byte n3=(byte)n2;
System.out.println("n3="+n3);
}
}
->
n1=1
n3=-48
- 强制转换的细节
- 当进行数据从大到小的转换就要用到强制转换
- 强转符号只对最近的操作数有效,往往会使用小括号提升优先级
- char,short,byte类型可以保存int的常量值,但不能保存int的变量值,需要强转
- byte,short,char类型在运算时,当做int类型处理
1.6String类型与基本数据类型的转换
- 基本类型转String类型
基本类型的值+" "
public class xiaoye{
public static void main(String[] args){
int n1 = 10;
String s1 = n1 + "";
float n2 = 1.1f;
String s2 = n2+"";
System.out.println(s1+" "+s2);
}
}
10 1.1
- String类型转基本类型
通过基本类型的包装类调用parseXX方法;转字符是转不了的,直接取出字符串中某个字符
String s1 = "123";
int num1 = Integer.parseInt(s1);
double num2 = Double.parseDouble(s1);
short num3 = Short.parseShort(s1);
float num4 = Float.parseFloat(s1);
long num5 = Long.parseLong(s1);
byte num6 = Byte.parseByte(s1);
boolean b = Boolean.parseBoolean("true");
//string -/-> char
System.out.println(s1.charAt(0));
- 注意细节
- 在将字符串转成基本数据类型时,要确保String类型能转换成有效的数据。
- 如果格式不正确,就会抛出异常,程序会终止。