【Java基础2】JAVA算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符等及实例

一、基本数据类型转换特殊点


特殊点一


在byte取值范围内的数据可以直接赋值,超过byte取值范围的数据会进行强制转型。

byteb1=1;

byteb2=(byte)128;

/*128为int型,强制转换后会舍弃最左侧位数。

int-128:0000,0000,0000,0000,0000,0000,1000,0000

(byte)128:1000,0000

最高位为符号位*/

特殊点二


超出变量取值范围的数据会报错。

inti=12345678901;//超出取值范围系统报错

特殊点三


long型数据后面要加L。

long1=12345678901;//报错:12345678901为int型数据,超出取值范围

long2=12345678901L;//不报错,long型数据,在取值范围内

特殊点四


自动转型:低精度到高精度;强制转型:高精度到低精度。

floatf1=1.0;//强制转型,double->float

doubled1=1.0f;//自动转型,float->double

floatf2=1;//自动转型,int->float

//在定义变量时尽量不进行强制转换,强制转换效率低。

特殊点五


java使用UniCode编码。

charc='a';

inti=c;//自动转换,i=97

特殊点六


boolean不能与其他类型兼容。

booleanbool=true;

inti=(int)bool;//报错,不兼容。

二、算术运算符的使用


符号


取余

自增

自减

+

-

*

/

%

++

--

注意事项


++a与a++的区别:++a先自增再使用;a++先使用再自增。

inta=10;

a=(++a)+(a++)+(a*2);

//++a,a=11; a++,a=11; a*2=24

System.out.println(a);//a=46

特殊点


特殊点一

byte类型和short类型在运算时会自动向上转型为int,最高位补0。

其余类型按照取值范围大的转型。

byteb=10;

shorts=10;

inti=65535;

floatf=10.0f;

doubled=10.0;

System.out.println(i+f);//65545.0-float型

System.out.println(s+i);//65545-int型

特殊点二

浮点类型不能直接运算。

char类型做运算时使用UniCode编码做数字运算。

特殊点三

自增的底层逻辑:

inti=1;

++i;

i=(int)(i+1);//效果等同于++i

三、赋值运算符


inti=1;

i=2;//i=2

i+=2;//i=4,i=i+2

i-=2;//i=2,i=i-2

i*=2;//i=4,i=i*2

i/=2;//i=2,i=i/2

i%=2;//i=0,i=i%2

四、关系运算符


booleanbool=5==3;

System.out.println(bool);//false

System.out.println(5>3);//true

System.out.println(5>=3);//true

System.out.println(5<3);//false

System.out.println(5<=3);//false

System.out.println(5!=3);//true

System.out.println(5==3);//false

五、Scanner类


importjava.util.Scanner;//导入Scanner包

Scannerscan=newScanner(System.in);//创建Scanner类的对象

inti=scan.nextInt();//输入int型数据

inti=scan.nextDouble();//输入double型数据

inti=scan.next();//输入String型数据

六、字符串拼接符


System.out.println(1+2+"asd"+1+2);//输出3asd12,一边带字符串+就为拼接符

七、逻辑运算符


&与&&的区别:&运算符两边都要判断,&&判断运算符左边出现结果后不再继续判断。

^异或:不同为1,相同为0。

八、三目运算符


//键盘输入两个数字,获取出最大值

Scannerscan=newScanner(System.in);

System.out.println("请输入第一个数:");

intn1=scan.nextInt();

System.out.println("请输入第二个数:");

intn2=scan.nextInt();

intn=(n1>n2)?n1:n2;//表达式为true输出前一个变量,表达式为false输出后一个变量

System.out.println(n);

//扩展1

inta=5;

System.out.println((a<5)?10.9:9);//输出9.0

//输出类型为变量中取值范围大的那一个

//扩展2

charx='x';//Unicode -- 120

System.out.println(false?100:x);//输出x

System.out.println(false?100000:x);//输出120

//一个变量一个常量时,判断常量是否在变量所属类型的取值范围内

//在 -- 按照变量类型返回数据 不在- 按照常量类型返回数据

九、位运算符


与运算&:同位比较,相同为1,不同为0;

0000,0000 & 0001,1101--->1110,0011

或运算|:同位比较,有1为1,无1为0;

0000,0000|0001,1101--->0001,1101

异或运算^: 同位比较,不同为1,相同为0;

0000,0000|0001,1101--->0001,1101

左移<<:整体向左移动,低位补0;

0000,1100<<2 ----->0011,0000

右移>>:整体向右移动,高位补符号位;

0000,1100>>2------>0000,0011
1000,1101>>2----->1110,0011

无符号位右移>>>:整体向右移动,高位补0;

1000,0110>>2----->0010,0001

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值