变量
数据类型¶
-
基本数据类型(8种)
- 整数类型:
byte[1字节],short[2字节],int[4字节],long[8字节] - 浮点类型:
float[4字节],double[8字节] - 字符(串)类型:
char,string - 布尔类型:
boolean
- 整数类型:
-
引用数据类型
- 类(
class) - 接口(
interface) - 数组(
[])
- 类(
-
"变量在同一作用域内不能重名"
整数类型
- Java各整数类型有固定的范围和字段长度, 不受具体OS的影响, 以保证java程序的可移植性。
- Java的整型常量默认为
int型, 声明long型常量须后加'l'或'L'。 - bit: 计算机中的最小存储单位。byte: 计算机中基本存储单元,
1 byte = 8 bit。
浮点类型
- 与整数类型类似, Java 浮点类型也有固定的范围和字段长度, 不受具体OS的影响。
[float 4个字节 double 是 8个字节] - Java 的浮点型常量默认为double型, 声明float型常量, 须后加 ‘f’ 或 ‘F’
-
浮点型常量有两种表示形式
-
十进制数形式: 如:
5.12512.0f.512(必须有小数点) -
科学计数法形式:如:
5.12e2(结果仍是double,故输出512.0)5.12E-2
-
-
通常情况下, 应该使用double型, 因为它比float型更精确。
-
double num9 = 2.1234567851; -
float num10 = 2.1234567851F;
-
-
浮点数使用陷阱:
2.7和8.1 / 3比较,后者是无限接近于2.7的小数(2.69999……)
字符类型
-
字符常量是用单引号(' ')括起来的单个字符。例如:
char c1 = 'a'; char c2 = '中'; char c3 = '9'; -
Java中还允许使用转义字符
\来将其后的字符转变为特殊字符型常量。例如:char c3 = '\n';//'\n'表示换行符 -
在java中, char的本质是一个整数, 在输出时, 是unicode码对应的字符。
-
可以直接给char赋一个整数, 然后输出时, 会按照对应的unicode 字符输出
[97] - char类型是可以进行运算的, 相当于一个整数, 因为它都对应有Unicode码。
+号 的使用¶
- 左右两边都是数值型时,做加法运算
- 有一方 是字符串,做拼接运算
- 运算顺序从左到右
System.out.println(100 + 3 + "hello"); // 103hello
System.uot.println("hello" + 100 + 3); // hello1003
自动类型转换¶
graph LR;
byte --> short --> int --> long --> float --> double;
char --> int;
-
有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
//float d1 = n1 + 1.1;//错误 n1 + 1.1 => 结果类型是 double //double d1 = n1 + 1.1;//对 n1 + 1.1 => 结果类型是 double float d1 = n1 + 1.1f;//对 n1 + 1.1 => 结果类型是 float -
当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时会报错,反之就会进行自动类型转换。
int x = 1.1; // 错误 -
(byte, short) 和 char 之间不会相互自动转换。
-
byte, short, char 他们三者可以计算,在计算时首先提升为 int 类型。
byte b = 10; // char c = b; // 编译错误 -
boolean 不参与转换。
-
自动提升原则:表达式结果的类型自动提升为操作数中最大的类型。
强制类型转换¶
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符(),但可能造成精度降低或溢出,格外要注意。
- 当进行数据的大小从 大 —> 小,就需要使用到强制转换
-
强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级
//int x = (int)10*3.5+6*1.5; int y = (int)(10*3.5+6*1.5); System.out.println(y); -
char类型可以保存 int 的常量值,但不能保存int的变量值,需要强转
char c1 = 100; int m = 100; char c2 = m; // 编译器在编译时无法确定变量 `m` 的值,只知道它的类型是 `int`,认为从 `int` 到 `char` 的转换有风险。 char c3 = (char)m; System.out.println(c2); -
byte和short类型在进行运算时,当做int类型处理。
String¶
1.基本类型 -> String 类型
- 语法:将基本类型的值与一个空字符串
""相连接即可。 -
示例:
int n1 = 100; float n2 = 1.1f; double n3 = 3.4; boolean b1 = true; String str1 = n1 + ""; String str2 = n2 + ""; String str3 = n3 + ""; String str4 = b1 + "";
2.String 类型 -> 基本数据类型
- 语法:通过基本类型的包装类调用相应的
parseXX方法即可。 -
示例:
int num1 = Integer.parseInt("123"); double num2 = Double.parseDouble("123.1"); float num3 = Float.parseFloat("123.45"); short num4 = Short.parseShort("12"); long num5 = Long.parseLong("12345"); boolean b = Boolean.parseBoolean("true"); byte num6 = Byte.parseByte("12");
3.String 类型 -> char类型
String word = "Hello";
char firstLetter = word.charAt(0); // 获取第一个字符
char lastLetter = word.charAt(4); // 获取第五个字符
System.out.println("第一个字母是: " + firstLetter); // 输出 'H'
System.out.println("第五个字母是: " + lastLetter); // 输出 'o'