java类型转换
java的八大数据类型
整数类型
- byte类型
- short类型
- int类型
- long类型
浮点数类型
- float类型
- double类型
字符类型
- char类型
布尔类型
boolean类型
public class number {
public static void main(String[] args) {
//八大基本数据类型
//整数的四种表示方式
byte num=127;
short num1=32767;
int num2=123456789;//最常用的整数数据类型
long num3=1234567890L;//Long类型要在数字后面加个L
//小数:浮点类型
float num4=50.1F;//float类型要在数字后面加个F,目的好区分
double num5=1.225555555566;
System.out.println(num1);
//字符
char name='a';//必须是单点号
//字符串:String不是关键字,是类
String name1="name";//必须是引号
//布尔类型:只表示是与非,对与错
boolean flag=false;
boolean flag2=true;
//综上所述中的几大中类型中,只有char,String需要加单引号和双引号
数据拓展
整数拓展
二进制,八进制,十进制,十六进制
public class Demo {
public static void main(String[] args) {
//进制:二进制以0b开头
int num=0b10;//二进制
int num2=010;//八进制,以零开头
int num3=10;//十进制
int num4=0x10;//十六进制以零x开头
int num5=0x16;
System.out.println(num5);
System.out.println(num);
System.out.println(num2);
}
}
浮点数拓展
float
public class Demo2 {
public static void main(String[] args) {
float a=0.1f;
double b=1.0/10;
System.out.println(a==b);//(false)(false)float a=0.1f只是a约等于0.1而不是等于0.1
float c=0.124f;
float d=123456456f;
float e=d+1;
System.out.println(d);
System.out.println(d==e);
//因为float类型表示数字有限,是离散的,有舍入误差的,不精确,是对实数的的近似表示就是约等于而不是等于
//最好尽量避免使用浮点数进行比较数的大小
//在java中有一个数学工具类BigDecima,可以精准比较两个数的
字符拓展
char的强制转换
char no='a';
char yt='汪';
System.out.println(no);
System.out.println((int)no);//强制转换,它会输出a对应的Unicode码值
System.out.println(yt);
System.out.println((int)yt);//强制转换,它会输出汪对应的Unicode码值
//所以所有的字符的本质都是数字
类型的转化
低-------------------------高
byte–short—int—long—float—double(低容量到高容量)
-
由高到低转化
public class zh { public static void main(String[] args) { double num=100; float num1=(float) num; long num2=(long) num1; int num3=(int) num2; short num4=(short)num3; byte num5=(byte) num4; /* 以上是由高容量到低容量的转化 */ // int num3=num2,这样子是错误的,因为num3需要一个int类型的整数,但是num2是long类型的数 } }
- 由低到高转化不需要强制转化,他会自动转化
//自动转换 低容量---高容量 byte o=12; int h=o; System.out.println(h); //不能对布尔类型的数值进行转换 /*boolean r=true; int m=(int) r; 上两行代码是错误的。 */ /* 注意点: 1.不能把不相干的两个类型进行转换。 2.转换时应该注意内存外溢和精度问题! */