02.数字类型
# 01.内置数据类型
- Java语言提供了八种基本类型
- 六种数字类型(四个整数型,两个浮点型)
- 一种字符类型,还有一种布尔型
类型 | 默认值 | 大小 | 范围 |
---|---|---|---|
byte | 0 | 8位 | -128到127 |
short | 0 | 16位 | -32768到32767 |
int | 0 | 32位 | -2147483648到2147483647 |
long | 0L | 64位 | -9223372036854775808到9223372036854775807 |
float | 0.0f | 32位 | 约±1.4e-45到±3.4e38, 精度为7位有效数字 |
double | 0.0d | 64位 | 约±4.9e-324到±1.8e308, 精度为16位有效数字 |
char | '\u0000' | 16位 | 0到65535 |
boolean | false | - | true或false |
# 02.内置数据类型定义
# 1、定义变量
package com.case_01;
public class Test {
static boolean bool;
static byte by;
static char ch;
static double d;
static float f;
static int i;
static long l;
static short sh;
static String str;
public static void main(String[] args) {
System.out.println("Bool :" + bool); // false
System.out.println("Byte :" + by); // 0
System.out.println("Character:" + ch); // ''
System.out.println("Double :" + d); // 0.0
System.out.println("Float :" + f); // 0.0
System.out.println("Integer :" + i); // 0
System.out.println("Long :" + l); // 0
System.out.println("Short :" + sh); // 0
System.out.println("String :" + str); // null
// 定义变量
int myNum = 5;
float myFloatNum = 5.99f;
char myLetter = 'D';
boolean myBool = true;
String myText = "Hello";
// 定义声明多个变量
int x = 5, y = 6, z = 50;
System.out.println(x + y + z);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 2、final定义常量
常量在程序运行时是不能被修改的
在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似
1)虽然常量名也可以用小写,但为了便于识别,通常使用大写字母表示常量
package com.example01;
public class Demo01 {
public static final double PI = 3.14;
}
// 其他地方就可以使用 System.out.println(Demo01.PI); 输出
1
2
3
4
5
6
7
2
3
4
5
6
7
- 2)当使用常量的时候,前缀 0 表示 8 进制,而前缀 0x 代表 16 进制
int decimal = 100;
int octal = 0144;
int hexa = 0x64;
1
2
3
2
3
# 3、Java 局部变量
- 局部变量声明在方法、构造方法或者语句块中;
- 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
- 访问修饰符不能用于局部变量;
- 局部变量只在声明它的方法、构造方法或者语句块中可见;
- 局部变量是在栈上分配的
- 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用
package com.case_01;
public class Test{
public void say(){
int age = 0; // 声明变量需要初始化,没有初始化编译时会报错
age = age + 3;
System.out.println("cjavapy的年龄是: " + age); // cjavapy的年龄是: 3
}
public static void main(String[] args){
Test test = new Test();
test.say();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 03.自动类型转换
# 1、转换说明
整型、实型(常量)、字符型数据可以混合运算,运算中,不同类型的数据先转化为同一类型,然后进行运算
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
1
2
2
- 数据类型转换必须满足如下规则
- 1、不能对boolean类型进行类型转换
- 2、不能把对象类型转换成不相关类的对象
- 3、在把容量大的类型转换为容量小的类型时必须使用强制类型转换
- 4、转换过程中可能导致溢出或损失精度
# 2、转换举例
- 1)溢出问题
int i =128;
byte b = (byte)i; // -128
1
2
2
- 2)自动类型转换
package com.example01;
public class HelloWord {
public static void main(String[] args) {
char c1='a'; //定义一个char类型
int i1 = c1; //char自动类型转换为int
System.out.println("char自动类型转换为int后的值等于" + i1); // char自动类型转换为int后的值等于97
int i2 = 'A' + 1; //char 类型和 int 类型计算
System.out.println("char类型和int计算后的值等于" + i2); // char类型和int计算后的值等于66
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
- 3)强制类型转换
- 1、条件是转换的数据类型必须是兼容的
- 2、格式:(type)value type是要强制类型转换后的数据类型
package com.example01;
public class HelloWord {
public static void main(String[] args) {
int i1 = 123;
byte b = (byte)i1; //强制类型转换为byte
System.out.println("int强制类型转换为byte后的值等于:" + b); // int强制类型转换为byte后的值等于:123
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 3、数字字符串转
public class Day01 {
static public void main(String[] strings) {
// 字符串和 int 转换
int a = Integer.parseInt("24");
String b = Integer.toString(25);
}
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# 4、变量类型判断
public class Day01 {
static public void main(String[] strings) {
// 判断一个变量类型
Object num = "123";
if (num instanceof Integer) {
System.out.println("整数");
} else if (num instanceof Double) {
System.out.println("小数");
} else if (num instanceof String) {
try {
Double.parseDouble((String) num);
System.out.println("数值型");
} catch (NumberFormatException e) {
System.out.println("非数值型");
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
上次更新: 2024/5/31 11:18:42