Java数据类型之间的相互转换
2016-08-14 13:39
791 查看
首先有几个原则:
1.byte,short,char变量之间(注意是变量,常量不同)运算时候直接转换成int类型再计算。
如果这些变量与常量做运算就保留原变量的类型,不必转换成int类型再运算。
2.float: float f3 = 1.23f;//必须加f
3.boolean类型不能强制转换为其它类型
例子:
int i1 = 123;
int i2 = 456;
double d1 = (i1+i2)*1.2;//系统将转换为double型运算
float f1 = (float)((i1+i2)*1.2);//需要加强制转换符
byte b1 = 67; //可以将int常量直接赋值给byte,short,char. in变量必须强制转换
byte b2 = 89;
byte b3 = (byte)(b1+b2);//系统将转换为int型运算,必须强制转换
System.out.println(b3);
double d2 = 1e200;
float f2 = (float)d2;//会产生溢出
System.out.println(f2);
float f3 = 1.23f;//必须加f
long l1 = 123;
long l2 = 30000000000L;//必须加l
float f = l1+l2+f3;//系统将转换为float型计算
long l = (long)f;//强制转换会舍去小数部分(不是四舍五入)
另外,以下为转载:
byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是0—65535 ;char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符 。
下面用实例来比较一下二者的区别:
1、Char是无符号型的,可以表示一个整数,不能表示负数;而byte是有符号型的,可以表示-128—127 的数;如:
[html] view
plain copy
char c = (char) -3; // char不能识别负数,必须强制转换否则报错,即使强制转换之后,也无法识别
System.out.println(c);
byte d1 = 1;
byte d2 = -1;
byte d3 = 127; // 如果是byte d3 = 128;会报错
byte d4 = -128; // 如果是byte d4 = -129;会报错
System.out.println(d1);
System.out.println(d2);
System.out.println(d3);
System.out.println(d4);
结果为:
?
1
-1
127
-128
2、char可以表中文字符,byte不可以,如:
[html] view
plain copy
char e1 = '中', e2 = '国';
byte f= (byte) '中'; //必须强制转换否则报错
System.out.println(e1);
System.out.println(e2);
System.out.println(f);
结果为:
中
国
45
3、char、byte、int对于英文字符,可以相互转化,如:
[html] view
plain copy
byte g = 'b'; //b对应ASCII是98
char h = (char) g;
char i = 85; //U对应ASCII是85
int j = 'h'; //h对应ASCII是104
System.out.println(g);
System.out.println(h);
System.out.println(i);
System.out.println(j);
结果为:
98
b
U
104
1.byte,short,char变量之间(注意是变量,常量不同)运算时候直接转换成int类型再计算。
如果这些变量与常量做运算就保留原变量的类型,不必转换成int类型再运算。
2.float: float f3 = 1.23f;//必须加f
3.boolean类型不能强制转换为其它类型
例子:
int i1 = 123;
int i2 = 456;
double d1 = (i1+i2)*1.2;//系统将转换为double型运算
float f1 = (float)((i1+i2)*1.2);//需要加强制转换符
byte b1 = 67; //可以将int常量直接赋值给byte,short,char. in变量必须强制转换
byte b2 = 89;
byte b3 = (byte)(b1+b2);//系统将转换为int型运算,必须强制转换
System.out.println(b3);
double d2 = 1e200;
float f2 = (float)d2;//会产生溢出
System.out.println(f2);
float f3 = 1.23f;//必须加f
long l1 = 123;
long l2 = 30000000000L;//必须加l
float f = l1+l2+f3;//系统将转换为float型计算
long l = (long)f;//强制转换会舍去小数部分(不是四舍五入)
另外,以下为转载:
byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是0—65535 ;char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符 。
下面用实例来比较一下二者的区别:
1、Char是无符号型的,可以表示一个整数,不能表示负数;而byte是有符号型的,可以表示-128—127 的数;如:
[html] view
plain copy
char c = (char) -3; // char不能识别负数,必须强制转换否则报错,即使强制转换之后,也无法识别
System.out.println(c);
byte d1 = 1;
byte d2 = -1;
byte d3 = 127; // 如果是byte d3 = 128;会报错
byte d4 = -128; // 如果是byte d4 = -129;会报错
System.out.println(d1);
System.out.println(d2);
System.out.println(d3);
System.out.println(d4);
结果为:
?
1
-1
127
-128
2、char可以表中文字符,byte不可以,如:
[html] view
plain copy
char e1 = '中', e2 = '国';
byte f= (byte) '中'; //必须强制转换否则报错
System.out.println(e1);
System.out.println(e2);
System.out.println(f);
结果为:
中
国
45
3、char、byte、int对于英文字符,可以相互转化,如:
[html] view
plain copy
byte g = 'b'; //b对应ASCII是98
char h = (char) g;
char i = 85; //U对应ASCII是85
int j = 'h'; //h对应ASCII是104
System.out.println(g);
System.out.println(h);
System.out.println(i);
System.out.println(j);
结果为:
98
b
U
104
相关文章推荐
- java基本数据类型、对应的封装类以及字符串之间的相互转换
- Java 基本数据类型和Sting之间的相互转换
- 关于java 基本数据类型之间的转换
- java简单数据类型中各类型数据间的优先关系和相互转换
- hibernate+java+sql 之间数据类型转换关系
- Java基本数据类型:long与float之间的转换疑惑
- Java中几种常用的数据类型之间转换方法:
- java数据类型之间的转换和什么地方要进行强制类型的转化
- Java 数据类型 和 与String之间的转换
- java中byte数组与int类型之间的相互转换(两种方式)
- java 基本数据类型之间的转换
- Java数据类型间的相互转换
- java各数据类型之间的转换
- java基础数据类型与字符串之间的转换
- java 基本数据类型之间的转换
- 常见Java 中数据类型之间的转换的方法!
- Java中几种常用数据类型之间转换的方法
- Java数据类型间的相互转换
- java String与Date类型之间的相互转换
- JAVA基本数据类型与其他语言数据类型之间的转换方法