数据类型
强类型语言
要求变量的使用要严格符合规定,多有变量都必须先定义后才能使用
JAVA的数据类型分为两大类
-
基本类型 primitive type
-
引用类型 reference type
基本类型
-
数值类型
(1)整数类型
-
byte占1个字节
-
short占2个字节
-
int占4个字节
-
long占8个字节
(2)浮点类型
-
float占4个字节
-
double占8个字节
(3)字符类型char占2个字节
-
boolean类型
占1位,其值还有true和false两个
引用类型
类、接口、数组
public class Demo02 { public static void main(String[] args) { //八大基本数据类型 //整数的四种表述方式 int num1 = 10;//最常用 byte num2 = 20; short num3 = 30; long num4 = 30L;//long类型要在数字后边加个L //小数:浮点数 float num5 = 50.1F;//float类型要在数字后边加个F double num6 = 3.1415926; //字符,只能写1个字母或汉字 char name = 'A'; //字符串,String不是关键字,是一个类 String namea = "ABC"; //布尔值:是非 boolean flag = true; //boolean flag=false; } }
数据类型扩展
整数拓展
二进制0b 十进制 八进制0 十六进制0x
浮点数拓展
最好完全避免使用浮点数进行比较
银行业务使用 BigDecimal类
字符拓展
布尔值拓展
public class Demo03 { public static void main(String[] args) { //整数拓展 进制:二进制0b 十进制 八进制0 十六进制0x int i = 10; int i2 = 010;//八进制 int i3 = 0x10;//十六进制 0-9 A-F System.out.println(i); System.out.println(i2); System.out.println(i3); System.out.println("=================================="); //================================================== //浮点数拓展 银行业务怎么表示 钱 //BigDecimal 数学工具类 //float 有限 离散 舍入误差 大约 接近但不等于 //double //最好完全避免使用浮点数进行比较 //最好完全避免使用浮点数进行比较 //最好完全避免使用浮点数进行比较 float f = 0.1f; double d = 1.0 / 10; System.out.println(f == d);//输出f是否等于d float d1 = 213123123f; float d2 = d1 + 1; System.out.println(d1 == d2); System.out.println("=================================="); //================================================== //字符拓展 char c1='a'; char c2='中'; System.out.println(c1); System.out.println((int)c1);//强制装换为int类型 System.out.println(c2); System.out.println((int)c2);//强制装换为int类型 //所有的字符本质还是数字 //编码 Unicode编码表 2个字节 65536个字符 char c3='\u0061'; System.out.println(c3); //转义字符 //\t 制表符 //\n 换行 System.out.println("Hello\tWorld"); //布尔值拓展 boolean flag=true; if (flag==true){} if (flag){} } }
类型转换
java是强类型语言,所以有些运算需要用到类型转换
运算中,不同类型的数据先转化为同一类型,在进行运算
由低到高:
byte,short,char→int→long→float→double
强制转换:(类型)变量名 由高转到低
自动转换: 由低到高自动转换
注意点:
-
不能对布尔值进行准换
-
不能把对象类型转换为不相干的类型
-
再把高容量转换到低容量时,强制转换
-
转换时可能存在内存溢出或精度问题
public class Demo05 { public static void main(String[] args) { int i=128; byte b=(byte)i;//内存溢出 //强制转换 (类型)变量名 由高到低 //自动转换 由低到高自动转换 System.out.println(i); System.out.println(b); /* 注意点: 1. 不能对布尔值进行转换 2. 不能把对象类型转换为不相干的类型 3. 高容量转换到低容量时,强制转换 4. 转换的时候可能存在内存溢出,或者精度问题 */ System.out.println("====================="); System.out.println((int)23.4);//23 System.out.println((int)-45.89f);//-45 System.out.println("====================="); char c='a'; int d=c+1; System.out.println(d);//98 System.out.println((char) d);//b } }
大数值计算溢出问题
public class Demo06 { public static void main(String[] args) { //操作比较大的数时,注意溢出问题 int money = 10_0000_0000;//jdk7新特性,数字之间可以用下划线分割 int year = 20; int total = money * year;//-1474836480 计算时溢出 long total2 = money * year;//默认是int,先计算后转换,转换前已经出现问题了 long total3 = money * (long) year;//先把一个数转换为long,计算时另一个int低转高自动转换为long System.out.println(total); System.out.println(total2); System.out.println(total3); } }
标签:类型转换,转换,int,数据类型,Day2,System,类型,println,out From: https://www.cnblogs.com/actadams68/p/16884253.html