class Intandchar {
public static void main (String args[]) {
int n = 'a';
System.out.print(n);
}
}
上面这段中字符型可以自动转换成整型赋给n
class Charleft {
public static void main (String args[]) {
char ch = 'A';
ch = (char)(ch|32);
System.out.print(ch);
}
}
上面这段中,提示ch|32得到的是int型,需要强制转换成char才能赋给ch,为什么?谢谢。
public static void main (String args[]) {
int n = 'a';
System.out.print(n);
}
}
上面这段中字符型可以自动转换成整型赋给n
class Charleft {
public static void main (String args[]) {
char ch = 'A';
ch = (char)(ch|32);
System.out.print(ch);
}
}
上面这段中,提示ch|32得到的是int型,需要强制转换成char才能赋给ch,为什么?谢谢。
去查查unicode编码就明白了。
将一个int型的值赋给一个char型变量是需要强制转换的。介意楼主找点这方面的资料看下
char到int不需要强制转换 int到char需要强制转换我的理解
任何char,short,byte和int 做运算都要吧他们转化为int类型再计算。比如char的某个值a 和32做按位或 运算,则必须吧char转化为int
int型 表示的范围大于char
int a = 10*10;
double b = 10*10.0;
那我就来个总结吧
JAVA 有两种转换基本类型的方法:
1,自动提升
2,强制转换
在运算表达式中,基本类型的数据会自动提升,提升的规则如下:1.所有的int和char型的值都会自动提升到int值。
2.所有的byte型和short型的值都被提升到int值。
3.整数运算时,如果有一个运算符是long型,则其他运算符的值都被提升到long型
4.浮点运算时,如果有一个运算符是float型,则运算符都提升到float型。
5.浮点运算时,如果有一个运算符是double型,则其他的运算符都提升到double型。
看到了这个规则我想你已经明白了。
两者内容是兼容的,或者目标类型的范围比源类型的范围大,就会发生自动提升。相反的话,就需要强制类型转换了。
强制转换类型:当两者类型不兼容,或者目标类型范围比源类型范围小时,就必须强制转换了。