数据类型
数据类型在java中的应用:
public class Demo02 {
public static void main(String[] args){
//八大基本数字类型
//整数
byte num1 = 100; //一个字节
short num2 = 1000; //俩个字节
int num3 = 10000; // 最常用
long num4 = 10000000L; //在long整数类型 数字后要加L
//浮点数
float num5 = 10.1F; //在float类型数字后要加F
double num6 = 3.1415962;
//字符
char nmu7 = '中'; //只能取一个字符
//string num8 = "嘟嘟嘟嘟嘟";
//string 字符串 但string不是关键字
//布尔值 是非
boolean hello = true;
boolean world = false;
/*
除此以外的数据类型都叫引用数据类型包括了
类
数组
接口
*/
}
}
数据类型的拓展
import java.sql.SQLOutput;
public class Demo03 {
public static void main(String[] args) {
//整数的拓展: 二进制0b 八进制0 十进制 十六进制0x
int a = 0B110;
int a1 = 010;
int a2 = 0x11;
System.out.println(a);
System.out.println(a1);
System.out.println(a2);
System.out.println("==========================================");
// ======================== 起到分割作用
//浮点数的拓展:
float b = 0.1f; //0.1f等于0.1
double b2 = 1/10;//1/10等于0.1
//俩个相同的结果在比较后是为真还是假?
System.out.println(b == b2);//运行后结果为false
System.out.println("======================================");
//判断如下真假:
float c1 = 1616166416516f;
double c2 = c1 + 1;
System.out.println(c1 == c2 );//判断结果为true
//说明在java中浮点数的判定存在问题
//因此最好完全使用浮点数进行比较
//少用浮点数进行比较
System.out.println("===============================");
//字符拓展:
char d1 = 'a';
char d2 = '嘟';
System.out.println(d1);
System.out.println((int)d1);//这里的int代表了强制转换的意思
System.out.println(d2);
System.out.println((int)d2);//强制转换
//通过强制转换发现:所有的字符的本质是数字
//转义字符: 如 \t表示制表符 \n表示换行
System.out.println("hello \t world");
System.out.println(" hello \n world");
System.out.println("=============================");
}
}
类型转换
强制类型转换和自动类型转换
import java.sql.SQLOutput;
public class Demo05 {
public static void main(String[] args) {
int i = 128;
byte a = (byte) i; //强制转换方法:(类型)变量名 在从高到低的转换中需要强制转换
System.out.println(i);
System.out.println(a);//由于byte最大的值为127 因此输出结果为错误结果
System.out.println("========================");
//从低到高不需要强制转换系统会自动转换
int c = 128;
double d = c;//低到高会自动转换
System.out.println(c);
System.out.println(d);
System.out.println("============================");
//转换时存在精度问题
System.out.println((int)35.7);//转换结果为35.7 并未四舍五入
System.out.println((int)-45.7);//转换结果为 -45
System.out.println("=============================");
//拓展
char m = 'a';
int o = m + 1;
System.out.println(o);
System.out.println((char)o);
System.out.println("============================");
int money = 10_0000_0000;
int year = 20;
int total = money * year;
long total2 = money * year;//money和year的计算仍为int
long total3 = money * ((long)year);
System.out.println(total);//输出结果错误 没有进行类型转换 出现溢出问题
System.out.println(total2);//输出结果仍然错误 默认类型仍为int
System.out.println((long)total);//total计算的结果已经是错误 再次处转换已无意义
System.out.println(total3);//得到正确结果在计算之前便要将类型进行转换 以此解决溢出问题
}
}
注意点
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在把高容量转换为低容量时 使用强制转换
- 转换的时候可能存在内存溢出 或者精度问题