什么是变量
是内存中的一个存储区域,该区域的数据可以在同一数据类型范围内不断变化。
Java中声明并初始化变量的基本格式:
数据类型 变量名 = 变量值;
变量都有其作用域,变量只在其作用域内有效,出了作用域就失效了,在同一作用域内不能声明两个相同名字的变量。
Java的数据类型
八大基本数据类型
整型:byte short int long
浮点型:float double
字符型:char
布尔类型:boolean
整型
类型 | 所占用存储空间 | 赋值范围 |
byte | 1字节(8比特) | -128 ~ 127(2^7 -1) |
short | 2字节 | -2^15 ~ 2^15-1 |
int | 4字节 | -2^31 ~ 2^31-1 |
long | 8字节 | -2^63 ~ 2^63-1 |
定义long类型的变量,赋值时以" L "结尾
整型常量默认为int类型
浮点类型
类型 | 所占用存储空间 | 赋值范围 |
单精度float | 4字节 | -3.403E38 ~ 3.403E38 |
双精度double | 8字节 | -1.798E308 ~ 1.798E308 |
定义float类型的变量,赋值时以" f "结尾
浮点型常量默认为double类型
float f = 1.03f;
double d1 = 0.03;
double d2 = .03; //如果整数位为0则可以省略
double d3 = 3.0E-2; //科学计数法表示
浮点数在计算机中存放形式简单说明:
浮点数 = 符号位 + 指数位 + 尾数位
并不是所有的小数都可以使用二进制浮点数表示,二进制浮点数不能表示0.1、0.01这样的10的负次幂,所以在开发中如果需要极高的精度,需要使用BigDecimal类替换浮点型变量
System.out.println(0.1 + 0.2); //打印:0.30000000000000004
字符型
char类型的变量所占用存储空间:2字节
java中的所有字符都使用Unicode编码
char ch1 = 'A'; //单引号内有且只能有一个字符,不能没有字符
char ch2 = '\t'; //转义字符
char ch3 = 97; //表示ASCII码中的 a
char ch4 = '\u0000' //字符的Unicode码点值
转义字符
转义字符 | 说明 |
\n | 换行符 |
\t | 制表符 |
\" | 双引号 |
\' | 单引号 |
\\ | 反斜杠 |
布尔类型
boolean类型的数据只有falst和true这两个值,常常在流程控制语句中使用
引用数据类型
类class 数组array 接口interface 枚举enum 注解annotation 记录record
自动类型提升
Java中可以做运算的数据类型有byte、short、int、long、float、double、char
自动类型提升的规则:当数据类型容量小的变量与容量大的变量做运算时,结果自动转换为容量大的数据类型。此处的容量大小并非值得时所占的内存空间大小,而指的是可以赋值范围的大小。如long(8byte)与float(4Byte)做运算时结果转化为float类型。
float f = 10L; //long类型自动类型提升为float类型
float f1 = 10L + 10.0f; //long类型自动类型提升为float类型
当byte、short、char类型的变量进行运算的时候,会自动类型提升为int类型。
byte b1 = 1;
byte b2 = 1;
short s1 = 1;
short s2 = 1;
char c1 = 1;
char c2 = 1;
int sum1 = b1 + b2;
int sum2 = s1 + s2;
int sum3 = c1 + c2;
int sum4 = b1 + s1;
byte、short、char --> int --> long -> float --> double
强制类型转换
如果需要将容量大的数据类型赋值给容量小的数据类型,需要使用到强制类型转换
float f = 10L;
long l = (long) f; //float类型的变量强制类型转换为int类型的变量
注意:强制类型转换容易出现精度损失
float f = 12.9f;
int i = (int) f;
System.out.println(i); //打印:12
int i = 128;
byte b = (byte) i;
System.out.println(b); //打印:-128
引用数据类型-String类
String类型的变量使用一对双引号进行赋值
String str1 = "Hello World !";
String str2 = "";
字符串拼接
String类型的变量与基本数据类型的变量只能做拼接运算,使用 + 进行字符串拼接,运算结果是String类型
String str = "Hello";
int i = 123;
short s = 1;
boolean b = true;
String str1 = str + i + b; //字符串拼接
String str2 = i + s + str; //字符串拼接
String str3 = i + ""; //表示"123"
System.out.println(str1); //打印:Hello123true
System.out.println(str2); //打印:124Hello
那么如何把String类型的数字字符串转换为int类型呢?
String str = "123";
int i = Integer.parseInt(str);