java中算数运算符、赋值运算符、关系运算符、Scanner类的用法、字符串拼接、逻辑运算符、三目表达式、位运算符的用法

本文详细介绍了Java中的算数运算符,包括自增、自减以及不同类型间的运算规则,如自动类型提升和精度损失。还探讨了赋值运算符、关系运算符的使用和注意事项,并提供了相关面试题。此外,提到了Scanner类在控制台输入数据的应用,字符串拼接,逻辑运算符的短路行为,以及位运算符的概念和操作。
摘要由CSDN通过智能技术生成

一、算数运算符


1、算数运算符

1.算数运算符的使用符号:+、-、*、/、%、++、--

注意

++的区别:

a++; ——>先使用,在自增

++a; ——>先自增,在使用

--的区别:

b--; ——>先使用,在自减

--b; ——>先自减,在使用

2.算数运算符的深入

特殊点一:byte类型做运算会向上转型成int类型,再做运算注意:向上转型是按照最高位补位(符号位)

byteb1=10;

byteb2=20;

//b1 - byte:0000,1010

// int:0000,0000,0000,0000,0000,0000,0000,1010

//b2 - byte:0001,0100

// int:0000,0000,0000,0000,0000,0000,0001,0100

// 结果:0000,0000,0000,0000,0000,0000,0001,1110

// (byte):0001,1110

byteresult= (byte)(b1+b2);

System.out.println(result);

特殊点二:short类型做运算会向上转型成int类型,再做运算

注意:两个变量做运算时需要强制类型转换,例如:

short a = 10;

short b=10;

short result = (short)(a + b);

特殊点三:除了byte和short做运算会向上转型成int,其余的数值型按照取值范围大的类型转型

特殊点四:浮点类型做运算有可能会损失精度,所以浮点类型不能直接做运算

特殊点五:char类型做运算是获取的字符里的码值

特殊点六:a++; 和 ++a;没有区别,因为分号是执行语句的结束,不管先加还是后加,都给我加

inta=10;

//a++;

++a;

System.out.println(a++);//两种输出均为11

特殊点七:int a = 10;

++a;//a = (int)(a+1);//相当于对a变量先加1,然后再将值赋给a

System.out.println(a);

2、经典面试题:

经典面试题一:输出结果为?

inta=8;

intb= (a++)+(++a)+(a*10);//(一步一步进行运算)

//1)a++: 此时a=8,使用后a=9

//2)++a:中先加1,a=10,进行使用

//3)a*10:此时a=10,相乘结果为100

//4)全部相加为:8+10+10*10=118

System.out.println(b);//118

经典面试题二:输出结果为?

inti=0;

i=++i; //(先加1,在赋值)

//底层逻辑:

//i = (int)(i+1);

//i = i;

System.out.println(i);//1

经典面试题三:输出结果为?

inti=0;

i=i++;

//底层逻辑:

//int temp = i;//temp记录了i的初始值 -- 0

//i = (int)(i+1);

//i = temp;

System.out.println(i);//0

二、赋值运算符


1、赋值运算符的使用

符号:=、+=、-=、*=、/=、%=

2、经典面试题

经典面试题一:输出结果为?

inta,b;//一次性声明多个变量

a=b=100;//将100赋值给变量b,再将b赋值给a

System.out.println(a);//100

System.out.println(b);//100

经典面试题二:下面的两种写法结果分别是?

shorts=1;

s=s+1; //报错:short和int做运算会向上转型成int类型

shorts=1;

s+=1;//底层:s = (short)(s+1);

赋值规则: s += 1 s = (T)((s) + (1))复合赋值 E1 op= E2等价于简单赋值 E1 = (T)((E1) op (E2)),其中T是E1的类型。

三、关系运算符


1、关系运算符的使用

符号:==、!=、>、>=、<、<=

注意:1.=是赋值号,将右边的值赋值给左边的变量 2.==是判断两个值是否相同 3.关系运算符运算的结果都是boolean类型

2、经典面试题

经典面试题一:输出结果为?

intx=10;

inty=10;

booleanflag= (x==y);

System.out.println(flag);//true

flag= (x=y);//会报错 -- boolean不能与其他类型兼容

System.out.println(flag);

经典面试题二:输出结果为?

booleanb1=true;

booleanb2=false;

booleanb3= (b1==b2);

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

booleanb4= (b1=b2);

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

四、Scanner类的运用


1、Scanner的含义

含义:java提供的专门在控制台输入数据的类

1)先导入包:import java.util.Scanner

2)创建Scanner的对象:

Scanner scan(可以改变)= new Scanner(System.out.println);

3)利用Scanner类的对象从控制台输入数据

类型 类名=scan.next类型()(类名首字母大写)

特殊:String类型

String 类名= scan.next();

五、字符串拼接符


1、基本运用

字符串拼接符:+

注意点:

1)+两侧都是数字,此符号为算数运算符2)+有一侧是字符串,此符号为字符串拼接符3)+两侧都是字符串,此符号为字符串拼接符

六、逻辑运算符


1、逻辑运算符的使用

1.符号:

&与 &&短路与 |或 ||短路或

^异或 !非

2.注意事项

1)&与:两侧必须是boolean类型,两者必须同时成立(true),结果才成立(true)

System.out.println(true&true);//true

System.out.println(false&true);//false

System.out.println(true&false);//false

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

2)&&短路与:两侧必须是boolean类型,两者必须同时成立(true),结果才成立(true)

注意点:

(1)&与:判断前者为false后,还会判断后者

(2)&&短路与:判断前者为false之后,就不会判断后者,效率高

(3)cmd中出现ArithmeticException--算数异常

3)|或:两侧必须是boolean类型,两者有一侧成立(true),结果就成立(true)

System.out.println(true|true);//true

System.out.println(false|true);//true

System.out.println(true|false);//true

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

4)||断路或:两侧必须是boolean类型,两者有一侧成立(true),结果就成立(true)

注意点:

(1)|或:判断前者为true后,还会判断后者

(2)||短路或:判断前者为true之后,就不会判断后者,效率高

5)^异或:两侧必须是boolean,两者不同,结果就成立(true)

System.out.println(true^true);//false

System.out.println(false^true);//true

System.out.println(true^false);//true

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

6)!非:置反

七、三目运算符


1、关系表达式

1.5 + 6 --> 算数表达式 5 > 6 --> 关系表达式

2、三目运算符

1.语法结构:变量 = (表达式)?值1:值2;

2.理解:

1)表达式的结果必须是boolean2)true - 将值1赋值给变量3)false- 将值2赋值给变量

3、面试扩展题

1.三目运算符返回值规则:

(1)值1和值2都是常量,按照取值范围大的类型返回数据

inta=5;

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

(2)值1和值2都是变量,按照取值范围大的类型返回数据

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

inti=10;

System.out.println(false?i:x);//120

(3)值1和值2一个是变量一个是常量的情况,判断常量是否在变量所属类型的取值范围内 在 -- 按照变量类型返回数据 不在- 按照常量类型返回数据

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

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

System.out.println(false?100000:x);//120(超出了取值范围)

八、位运算符


1、位运算符

含义:将十进制数据转换为二进制做运算

符号: &与 |或 ^异或 << 左移

右移>>

无符号位右移>>>

2、使用方法

(1)&与:同位比较,两者都为1,结果才为1

(2)|或:同位比较,两者有1,结果就为1

(3)^异或:同位比较,相同为0,不同为1

&、|、^:前后两侧都是boolean,此符号为逻辑运算符 &、|、^:前后两侧都是数值,此符号为位运算符

(4)<<左移:整体向左移动n为,就用n个0补到最低位

(5)>>右移:整体向右移动n为,就用n个符号位补到最高位

(6)>>>无符号位右移:整体向右移动n为,就用n个0补到最高位

注意:右移和无符号位右移在处理正数时是一样的

3、运算符的优先级

经验:不用记,灵活运用小括号

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值