在Java中基本类型可以相互转换,Boolean类型比较特殊不可以转换成其他类型
转换分为默认转换和强制转换: 默认转换:容量小的类型会默认转换为容量大的 类型 byte-->short-->int-->long-->float-->double char byte short char 之间计算不会相互转换,首先先转换成int(这里是系统已经默认转换成int啦,我们不需要自己去转换) 强制转换: 将容量大的类型转换成容量小的类型,需要进行强制类型转换 注意:只要不超过范围可以将整型值直接赋值给byte、short、char在多种类型混合运算过程中,首先先将所有数据转换成容量最大的那种,再运算eg: byte b1= 10; short s1 =20; int i1 = b1+s1;//编译可以通过,因为(b1+s1)JVM 知道结果是int类型 byte b2 = 10; short s2 = 20; byte b3 = b2 + s2;//编译不通过,Java程序分编译期和运行期,编译阶段只是知道 (b2+s2)的结果是int类型,int类型无法直接赋值给byte类型 short s = 5; s = s-2; //编译不能通过,(s-2)结果是int类型,int类型不能赋值给short类型。 short s = 5; s = (short)(s-2);//可以转换实例1)基本类型向类类型转换正向转换:通过类包装器来new出一个新的类类型的变量Integer a= new Integer(2);反向转换:通过类包装器来转换int b=a.intValue();通过类包装器——>基本数据类型eg1:int i=Integer.parseInt(“123”)说明:此方法只能适用于字符串转化成整型变量
eg2: float f=Float.valueOf(“123”).floatValue()说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。
eg3: boolean b=Boolean.valueOf(“123”).booleanValue()说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。
eg4:double d=Double.valueOf(“123”).doubleValue()说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。
eg5: long l=Long.valueOf(“123”).longValue()说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。
eg6: char=Character.valueOf(“123”).charValue()说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。
2)基本类型向字符串的转换正向转换:如下:System.out.println(""+2+3);// “""”把2转成字符串操作;System.out.println(2+3); // 不存在转换。System.out.println(2+3+"");// 前两个数值相加后,被“""”转成字符串。System.out.println(2+""+3);// 同第一个。输出显示为:23,5,5,233)类类型向字符串转换正向转换:因为每个类都是object类的子类,而所有的object类都有一个toString()函数,所以通过toString()函数来转换即可反向转换:通过类包装器new出一个新的类类型的变量
eg1: int i=Integer.valueOf(“123”).intValue()说明:上例是将一个字符串转化成一个Integer对象,然后再调用这个对象的intValue()方法返回其对应的int数值。
eg2: float f=Float.valueOf(“123”).floatValue()说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。
eg3: boolean b=Boolean.valueOf(“123”).booleanValue()说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。
eg4:double d=Double.valueOf(“123”).doubleValue()说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。
eg5: long l=Long.valueOf(“123”).longValue()说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。
eg6: char=Character.valueOf(“123”).charValue()说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。
运算符
算术运算符 关系运算符 布尔运算符 位运算符 赋值运算符 字符串运算符 条件运算符 其他运算符
算术运算符
注意的问题:
如果对负数取模,可以把模数的负号忽略不计,如:5% -2=1.但被模数是负数就另当别论 对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。
关系运算符
> 大于
>= 大于等于
< 小于
<= 小于等于
== 判断是否相等
!= 不等于
关系运算符的运算结果一定是Boolean类型
布尔运算符(逻辑运算符)
& 逻辑与 两边都是true,结果是true
| 逻辑或 一边是true,结果就是true
! 逻辑非 取反!true---> FALSE
^ 逻辑异或 两边只要是不一致就是true
&& 短路与 用法和&一样
|| 短路或 用法和|一样
布尔运算符两边必须是布尔类型,整个表达式的运算结果也是一个布尔类型
逻辑运算符注意的问题
逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6.应该写成x>3 && x<6;
& 和 &&的区别:
但 &时,左边无论真假,右边都进行运算
双 &&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算
双或时 左边为真,右边不参与运算。左边为假时,右边才参与运算
赋值运算符
基本的赋值运算符 =
扩展的赋值运算符 += -= *= /= %=
+= 例子: int i = 10;
i += 10;等同于 i = i+10;
其余的都类似
基本的赋值运算符和扩展赋值运算符的区别:
byte i =10;
//编译无法通过,运算结果是int类型,前边的变量是byte类型
i = i + 10;
// 语法:扩展赋值运算符不改变运算结果类型,可能损失精度
i +=10;
条件运算符(三目运算符) ?:
语法: Boolean表达式?表达式1 :表达式2
Boolean表达式的结果是true,则整个表达式的结果就是表达式1的结果,相反则是表达式2的结果
public class A {
public static void main(String[] args){
boolean sex = false;
char c = (sex? '男': '女');
System.out.println(c);
//类型不兼容
char c1 = isSuccess? 's' : "失败";//不能编译
//这个可以,因为println这个方法既可以打印字符也可以打印字符串
System.out.println(isSuccess? 's' : "失败");
}
新闻热点
疑难解答