数据类型转换
数据类型不一样时,会发生类型转换
自动类型转换:将取值范围小的类型自动提升为取值范围较大的类型。
(小转大可自动,大赚小不可)
public class Demo01{
public static void main(String[] args){
int a=10;
short b=2;
int result=a+b;
System.out.println(result);
}
}
自动转换结果
转换规则:byte、short、char-->int-->long-->float-->double
强制类型转换:将取值范围较大的类型强制转换成取值范围较小的类型。
特点:代码需进行特殊格式处理,不能自动完成。(右边加括弧,括弧里面填转换类型)
格式:范围小的类型 范围小的变量名=(范围小的类型)原本大的数据
int num=(int)10000L;
注:不推荐使用,会造成精度损失、数据溢出。
精度损失:浮点转化成整数,直接取消小数点
数据损失:强制转换,例如int转换成short,砍掉两个字节,数据丢失。
public class Demo01{
public static void main(String[] args){
int a=10;
short b=2;
short result=a+b;
System.out.println(result)
强制转换数据损失
运算
1、byte/short/char可进行数学运算
char进行运算时,会根据一定规则翻译成一个数字。一般根据ASCII码或者Unicode码。Unicode码前127位与ASCII码一样。
public class Demo01{
public static void main(String[] args){
char zifu='A';
System.out.println(zifu+1);
}
}
运算结果
这里的A在ASCII种对应的数字就是65。
2、byte/short/char运算时,首先会提升为int。
public class Demo01{
public static void main(String[] args){
//char zifu='A';
//System.out.println(zifu+1);
byte num1=40;
byte num2=50;
int result=num1+num2;
System.out.println(result);
}
}
首先提升结果
最后得出的结果是byte-->int
3、boolean类型不能发生数据类型转换
常记:0-->48、A-->65、a-->97
运算符
“+”:数字相加 或 连接表达式
注:一旦有不同类型数据相加,结果的类型是范围大的那个
int+double-->double+double=double
优先级问题 string+int+int=string 、string+(int+int)=string+int
自增++、自减--
使用方法
单独使用:a++与a--无区别
混合使用:++a 变量立刻+1,先加后用
int a=1;
System.out.println(++a);
输出的结果是2!
a++先使用原来的数值,先用后加
int a=1;
System.out.println(a++);
输出的结果是1!
注:只有变量时才用自增、减,常量不可用。
赋值运算符
+= a+=1-->a=a+1
-= b-=1-->b=b-1
比较
1、比较运算符结果是boolean值
2、进行判断时不可连写 1<x<3是错误写法
逻辑
与(并且)&&
或(或者)||
非(去反)!
&&和||具有短路效果
根据左边判断结果得到最终结果。
&&:左边是false,结果一定是false。||:左边是true,结果一定是true。
一、二、三元函数符
一元函数符:只需一个数据 去反、自增、自减
二元:加法、赋值
三元:数据类型 变量名称=条件判断?表达式A:表达式B
int a=10;
int b=2;
int max;
int max=a>b?a:b
注:1、同时保证两个选项符合数据类型要求
int num=3>4?2.5:3
这就是错误的
2、三元运算符结果必须被使用,不能直接写。
网友评论