Java中char型和整型数能相加?

//typeconversion.java
//Java中的类型转换
public class typeconversion
{
public static void main(String[] args)
{
char a=1;
byte b=2;
short c=3;
int d=4;
byte e;
e=(byte)(a+b+c+d); //将"a+b+c+d"的值强制转化为byte型
short f;
f=(short)(a+b+c+d); //将"a+b+c+d"的值强制转化为short型
int g;
g=a+b+c+d; //a,b,c,d 自动转换为int型再计算
float h;
h=a+b+c+d; //a,b,c,d 自动转换为float型再计算
double i;
i=a+b+c+d; //a,b,c,d 自动转换为double型再计算
System.out.println("e="+e);
System.out.println("f="+f);
System.out.println("g="+g);
System.out.println("h="+h);
System.out.println("i="+i);
}
}

该段中的这句 e=(byte)(a+b+c+d); 前面char a=1; 那a就是字符型数据,能和b,c,d整型的数相加? 先自动转换一次再相加,再4者之和转化为byte 型?

这个是可以相加的,因为char类型是可以转换为int类型的(计算过程中自定进行转换,不需要强制转换的)。

举例:

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-03
++++++++++++++++++++++++++++++++++++++++++++++++++++++

数据类型

基本类型有以下四种:
int长度数据类型有:byte(8bits)、short(16bits)、int(32bits)、long(64bits)、
float长度数据类型有:单精度(32bits float)、双精度(64bits double)
boolean类型变量的取值有:ture、false
char数据类型有:unicode字符,16位
对应的类类型:Integer、Float、Boolean、Character、Double、Short、Byte、Long

转换原则

从低精度向高精度转换
byte 、short、int、long、float、double、char
注:两个char型运算时,自动转换为int型;当char与别的类型运算时,也会先自动转换为int型的,再做其它类型的自动转换

基本类型向类类型转换

正向转换:通过类包装器来new出一个新的类类型的变量
Integer a= new Integer(2);
反向转换:通过类包装器来转换
int b=a.intValue();

类类型向字符串转换

正向转换:因为每个类都是object类的子类,而所有的object类都有一个toString()函数,所以通过toString()函数来转换即可
反向转换:通过类包装器new出一个新的类类型的变量

参考资料:http://lansky07.javaeye.com/blog/283940

本回答被提问者采纳
第2个回答  2009-06-07
每一个char类型的字符都对应ASCII表的一个数字.所以能相加,在相加的时候是向上转型的.小的往大的转.
有一种情况除外就是使用强制转换.
ASCII (American Standard Code for Information Interchange 美国信息交换标准码)
第3个回答  2015-10-18
可以。java中char,short,byte之间和int做加法运算时会自动提升为int类型。
第4个回答  2009-06-07
能啊,char型有对应的unicode编码啊

Java中char型和整型数能相加?
这个是可以相加的,因为char类型是可以转换为int类型的(计算过程中自定进行转换,不需要强制转换的)。举例:

Java中整型和字符型可以相加减吗?
可以 因为他会把char强转int,char类型的‘a’是97

java中如何实现字符与数字加减运算
第一种只可以实现整数转换;第二种可以实现任何类型的转换,而且计算精度高。

java新手 char类型赋值为整数
Java中对char型数据,在内存中存的就是整数,对应一张ASCII码表 ,比如说字符 'A' 对应的是65 字符 'a' 对应的是97 ,所以char c1 = 'A' ; 等效于 char c1 = 65 ;正是因为这样,所以字符型数据既可以作为一个字符使用,也可以作为一个整数使用,所以char型数据可以和int型数据进行运算!比...

Java中把整型常量与字符常量相加的结果赋给字符变量,会有问题吗?比如ch...
估计是错的,可能要强制类型转换。因为相加后是int型的,要强制为char

java int加string类型 int加char类型
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。原始类型封装类 boolean -->Boolean char --->Character byte -->Byte short -->Short int -->Integer long -->Long float -->Float doubl...

java运算符优先级
~ instanceof * \/ % + - << >> >>> <> < = > \\ == != &^& & || ? := op= 。 Java中整数运算符在整数运算时,如果操作数是long类型,则运算结果是long类型,否则为int类型,绝不会是byte,short或char型。这样,如果变量i被声明为short或byte,i+1的结果会是int。如果结果...

Java中int与char间的隐式转换及字符串哈希
int类型(32位,-2^31到2^31-1)和char类型(16位,0到65535)在Java中可以相互转换。例如,可以将一个不超过char范围的数字赋值给char,如97赋值给'a',输出结果正确。反之,字符也可以赋值给int,如'97'。这是因为Java的自动类型转换机制允许从较小类型到较大类型进行隐式转换,但大到小的转换...

java里不是说char类型自动向int型转换吗?那为什么..
强制类型转换只发生在int、long、float和double之间。比int类型低或就是int型的像byte型、short型、char型、int型之间的转换不不要强制类型转换,也不存在着运算优先级和类型转换的问题,这是java官方规定的,你无权修改。至于运算后的结果是否能够被左边的类型容纳,你在输入的时候就能知道。

在java中关于自动类型转换说法正确的是 每一项都解释下
应该是A和C吧 A就不用解释了吧。“a" + 5肯定等于"a5"B和C:只能有取值窄的范围向宽范围转换,反之则不行。char < int < double 所以B:结果一定是int类型 所以C是对的

相似回答