1.2 基础变量声明
/* 例1.2-1: 变量声明 */
public class demo01 {
public static void main(String[] args) {
// 声明类型 标识符 = 类型量;
// 声明整数型
int integers = 1; // 声明一个int(整数)类型
long longIntegers = 1L; // 声明一个long(长整数)类型
byte bytes = 2; // 声明一个byte(字节)类型
short shortIntegers = 15; // 声明一个short(短整数)类型
// 声明浮点型
float floats = 1.0F; // 声明一个float(单精度浮点)类型
double doubles = 1.0D; // 声明一个double(双精度浮点)类型
// 声明字符
char character = 'A'; // 声明一个字符类型
// 声明布尔值
boolean flags = true; // 声明一个布尔值
// 声明字符串
String str = "1111"; // 声明一个字符串
}
}
1.2.1 常用类型
基础类型(整数型) | 类型量 | 说明 |
---|---|---|
int |
数字 | 默认整数类型 |
long |
数字L | 长整数类型, 可取范围比int 类型大, 必须在整数后面加L 标记 |
short |
数字 | 短整数类型, 可取范围比int 类型小 |
byte |
数字 | 字节类型, 可取范围为 [-128~128] |
char |
'单个字符' | 字符类型, 本质是Unicode码点渲染, 所以只能存在一个字符 必须包括在半角单引号 ' ' 内 |
基础类型(浮点型) | 类型量 | 说明 |
float |
小数F | 必须在小数后面加F 标记 |
double |
小数 / 小数D |
默认浮点数类型, 可以在小数后面使用D 标记 |
基础类型(布尔值) | 类型量 | 说明 |
boolean |
true / false | 判断值 |
引用类型(字符串) | 类型量 | 说明 |
String |
"多个字符" | 字符串类型, 用于输入字符串, 必须包括在半角双引号 " " 内 |
1.2.2 类型转换
整数型和浮点型之间可以互相转换, 分为强制类型转换和自动类型转换.
1.2.2.1 自动类型转换
byte类型相加会自动转化成int型:
/* 例1.2-2: 类型返回值 */
byte a = 1;
byte b = 2;
byte c = a + b; // 会报错, 因为 a+b 返回的是int型
int c = a + b; // 正确的语法
浮点数与整数型进行计算, 自动转化为浮点型:
/* 例1.2-3: 简单的自动类型转换 */
double a = 10.4;
int b = 2;
double c = a / b; // 输出double类型变量c
System.out.println(c); // 输出5.2
自动类型转换
当参与运算中有的值属于高位类型时, 所有值都会被升位运算.
优先级: byte, short < int, char < long < float < double
1.2.2.2 强制类型转换
int类型加减乘除只能输出int类型:
/* 例1.2-4: 整数类型运算返回值 */
int a = 1;
int b = 2;
System.out.println(a/b);
// 会输出0, 而不是0.5, 强制舍去小数位(可以视为自动向下取整)
使用强制类型将int转换为double输出浮点数:
/* 例1.2-5: 混合类型运算返回值 */
int a = 1;
int b = 2;
System.out.println((double)a/b);
// 会输出0.5, 因为a(int)被强制转换成了a(double)
实质:
/* 例1.2-6: 类型转换 */
System.out.println(1/2); // 例1.2-4的运算实质
System.out.println(1.0/2); // 例1.2-5的运算实质(同例1.2-3)
也就是说, 如果想要输出浮点类型结果, 就需要参与运算中的其中一个值是浮点值. 当一个值是浮点值时, 其他值也会自动转化为浮点值运算.
强制类型转换语法
转换类型 变量 = (转换类型)变量
/* 例1.2-7: 强制类型转换 */
int a = 1;
System.out.println(a); // 输出1
System.out.println((double)a); // 输出1.0