数据类型
对于强类型语言,所有变量必须先定义再使用
正确示例: String a = “123”;
必须给变量提前赋值
实例:
public class practice {
public static void main(String[] args) {
String a = "123";
System.out.println(a);
}
}
能够正确输出 123,若把代码中的 String a = "123";
改为 String a;
,则代码错误
数据类型有 byte、short 、int、 long、float、double、boolean
byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。
short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。
int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。
double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。
boolean:只有true和false两个取值。
实例:
public class day01 {
public static void main(String[] args) {
byte num_01 = 11; // 一个字节范围:-128-127
short num_02 = 20; // 两个字节范围
int num_03 = 30; // 四个字节范围,最常用
long num_04 = 10000L; //八个字节范围,加L表示定义为 Long类型
// 小数:浮点数
float num_05 = 5.3F; //加F表示定义为float类型
double num_06 = 3.4
// 布尔值
boolean flag01 = true;
boolean flag02 = false;
}
}
数据类型转换
转换优先级从低到高:
byte -> short char int long float double
在运算时需要先将不同的数据类型转换为同一数据类型之后在进行运算
1.强制类型转换:从低到高转换需要强制转换
2.自动类型转换:从高优先级到低可自动转换
实例:
public class Demo01 {
public static void main(String[] args) {
int a = 128;
byte b = (byte)a; //强制转换格式:(类型)变量名 高——>低
System.out.println(a);
System.out.println(b); // -128,内存溢出
// 自动转换 低——>高
double c = a;
System.out.println(c); // 128.0
/* 注意:
1. 不能对布尔型进行转换
2. 不能把对象类型转换为不相干的类型
3. 转换时可能存在内存溢出的问题,或者精度问题
*/
System.out.println(22.83);
System.out.println((int)22.83F); //22 精度变小
int money = 10_0000_0000; // 在操作数较大时注意溢出问题,1000000000中加 _ 便于分辨,不影响其值,输出仍是1000000000
int year = 30;
int total = money*year;
System.out.println(total); // -64771072 数据溢出,显示错误
long total2 = money*year;
System.out.println(total2); // -64771072 显示仍然错误,默认是int,转换之前已经存在问题了
System.out.println("$----------------------------$");
long total3 = (long)money*year; // 30000000000 显示正确,先进行转换再计算
System.out.println(total3);
}
}
数据类型知识扩展
1.整数扩展: 进制: 二进制0b 八进制0 十进制 十六进制0x
2.浮点数扩展
3.布尔值扩展
实例:
public class day02 {
public static void main(String[] args) {
// 整数扩展: 进制: 二进制0b 八进制0 十进制 十六进制0x
int a = 0123; // 八进制0
int a1 = 0b10; // 二进制0b
int a2 = 0x84; // 十六进制0x 0~9、A~F: 16
// 代码提示:crt+空格
System.out.println(a);
System.out.println(a1);
System.out.println(a2);
System.out.println("====================");
// 浮点数扩展? 银行业务怎么表示?钱
// float double 有限 离散 舍入误差 大约 接近但不等于
// 最好完全避免使用浮点数进行比较
// 最好完全避免使用浮点数进行比较
float b1 = 0.1F; // 0.1
double b2 = 1.0/10; // 0.1
System.out.println(b1==b2); // 输出布尔值为 false,但是b1、b2实际相等
System.out.println("-----------------");
float f = 281654178;
double d = f+1;
System.out.println(f==d); // 输出布尔值为 true,但是f、d不相等
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~");
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1); //强制转换
System.out.println(c2);
System.out.println((int)c2); //强制转换
// 所有字符本质还是数字
System.out.println("******************************");
int n2 = 65; int n3 = 68; int n4 = 72;
int n5 = 93; int n6 = 97;
int n7 = 99; int n8 = 101;
System.out.println((char)n2); System.out.println((char)n3);
System.out.println((char)n4); System.out.println((char)n5);
System.out.println((char)n6); System.out.println((char)n7);
System.out.println((char)n8);
// 转义字符
// \n换行 \t制表符
// 布尔值扩展
boolean flag = true;
if (flag==true){
} // 新手
if (flag){
} // 老手
}
private static void getaVoid() {
}
}