javaSE 入门之运算符详解

目录

关键知识点:

运算符:

自增自减少运算符:

赋值运算符:

java中的条件运算符:

java中流程控制语句:

java中的switch语句:


关键知识点:

  • = 是java中唯一一个自右向左运算的符号,优先级最低
  • 优先使用扩展赋值运算符!执行效率高,反注释工具看源码优化后的代码也是使用扩展运算符
  • &&   ||  短路与   短路或
  •                 double i = 10/3; //i的值是3.0                               double ii = 10/3.0; //i的值是3.333333333333333
  • 条件运算符最终肯定会得到一个结果,所以有时候用if(){}  

能用条件运算符的就不要用if,简单快捷

  • ^异或位运算符,相同为0,不同为1
  • >>   <<   的运算效率比乘除效率高
  • 运算符的顺序关系:单目乘除位关系,逻辑三目后赋值
  • sc.next( ) 从有效字符开始接受,空格不算,遇到空格不接受了,但是功能还在,直到遇到回车结束.

sc.nextLine() 接受的是一整行数据,    .nextLine()可以作为上面的.next()接盘侠,继续接受.next( )没有接受的东西,处理没有接受到的东西

  • sc.close()  表示关闭了Scanner  就算重新new一个都不好使!!!
  • 对象.nextlnt(max-min+1)+min;   [min,max]

对象.nextDouble()  [0.0,1.0)之间的随机小数  对象.nextDouble()*(max-min+1)+min

  • 如果if语句的语句体只有一句话,就可省略{}

 

  • 当case找到自己想要的值时才开始向下执行代码,穿透直到遇到第一个break;

case有穿透效果,没有遇到break;就会一直向下执行,

如果所有case都没有符合的,就执行default,依旧有穿透效果

switch语句的结束要么是},要么是break;

 

  • default :  

这个语句如果后面有break; 放在哪里都一样,

如果没有break; 放在前面的话有case就按照case的来,没有相应的case,从default穿透

 

 

 

 

运算符:

分类:

算数运算符

赋值运算符

比较运算符|关系运算符

逻辑运算符

条件运算符

位运算符

 

操作数: 运算符左右两边的数

表达式: 运算符连接操作数整体叫做表达式

语句: 分号代表语句的结束

 

单目|一元运算符: 操作数为1个  +号  ++ --

双目|二元运算符: 操作数为2个  + - * /

三目|三元运算符: 条件运算符

 

 

算数运算符:

+   

正号(可省略)

加法运算

字符串的连接符

如果+左右两边有字符串的出现"",+就是作为字符串的连接符使用,把两边的内容拼接成为一整个字符串使用

-

负号

减法运算

*

/

% 模以  取模  求余数

如果第一个操作数小于第二个操作数,结果就为第一个操作数

++ --

自增自减少运算符:

++ --

++ 自增  a++ ==> a=a+1;

-- 自减  a-- ==> a=a-1;

 

分析:

++,--操作自己

 ++放在操作数的前面还是后面,都是自身+1

 --放在操作数的前面还是后面,都是自身-1

++,--操作别人

++--放在操作数的前面,先自身+1|-1,再去参与运算

++--放在操作数的后面,先去参与运算,在自身+1-1

赋值运算符:

基础赋值运算符

=  是java中唯一一个自右向左运算的符号

   优先级最低

 

扩展赋值运算符(算数运算符+基础赋值运算符)

+=  a+=b; ==> a=a+b;

-=

*= a*=b; ==> a=a*b;

/=

%=

 

推荐使用扩展赋值运算符

优点:

执行效率高

缺点:

不直观

java中的条件运算符:

 

条件表达式 ? 值1 : 值2;

 

条件表达式:值为boolean类型的表达式

 

执行流程:

1.条件表达式 ,最终会得到一个boolean结果

2.如果结果为true,整个条件表达式最终的结果为值1

3.如果结果为flase,最终结果为值2

 

条件运算符最终肯定会得到一个结果

 

 

java中的位运算符  (了解)

先把操作数转为二进制,根据运算符的逻辑进行操作,最终得到的结果再转为十进制

 

& : 同一位置的两个数,如果一个为0就是0,两个都为1才是1

| : 同一位置的两个数,如果一个为1就是1,两个都为0才是0

^ : 同一位置的两个数,相同为0,不同为1

 

位移运算符

<< 左移 第一个操作数转为2进制,第二个操作数是移动位数 ,向左移动指定的位数,空位补零

8<<2  1000左移2位  1000 00 -> 转为十进制 32

>> 右移 第一个操作数转为2进制,第二个操作数是移动位数 ,向右移动指定的位数,想象数据的右边有一条分水线,右侧的内容砍掉,只保留左侧的数据,转为十进制

8>>2  1000 右移2位  10->转为十进制  2

右移相当于/2    8>>3   8/2^3

左移相当于*2 8<<3   8*2^3

 

位运算符比直接使用* /效率高

 

运算符的优先级:

(),.优先级是最高的

 

单目乘除位关系,逻辑三目后赋值


java中的Scanner:

注意:不要让你的类名与java中已有的类名一致

 

基本数据类型:

int a=5;

 

引用数据类型:

引用数据类型 变量名|引用 = new 引用数据类型();

 

使用功能:

变量名|引用.功能名字();

 

 

Scanner : 接收键盘输入的内容

1.导包  import 导入 + 权限命名(报名+类名);

位置: 类的上面导包

2.创建这个类型的引用

Scanner sc=new Scanner(System.in);

3.使用功能:

引用.功能名字();

sc.nextInt();  接收用户键盘输入的整数类型的数据

sc.nextLong();  接收用户键盘输入的整数类型的数据

sc.nextByte();  接收用户键盘输入的整数类型的数据

sc.nextShort();  接收用户键盘输入的整数类型的数据

sc.nextFloat();  接收用户键盘输入的整数类型的数据

sc.nextDouble();  接收用户键盘输入的整数类型的数据

 

sc.next()  从有效字符开始接收,空格不算,接收用户输入的字符串内容,知道遇到空格,tab,就接收不到数据,但是功能没有停止,遇到enter功能结束

sc.nextLine() 接收一整行的数据

从第一个字符开始接收,知道遇到enter结束

 

系列next功能不能接收enter,遇到enter结束,nextLine可以接收enter

 

 

4.关闭

引用.close()

关闭了之后就不能再次使用,就算是重新打开也不好用


java中的Random:

产生随机数

1.导包   import java.util.Random;

2.创建类型的引用 Random ran=new Random();

3.使用功能:

引用.nextInt();  产生一个int范围内的随机整数

引用.nextInt(整数n);  产生一个 [0,n) 随机整数

[0,max) ran.nextInt(max);

[0,max]  ran.nextInt(max+1);

[min,max] ran.nextInt(max-min+1)+min;

[min,max) ran.nextInt(max-min)+min;

引用.nextDouble() [0.0,1.0)之间的随机小数

java中流程控制语句:

顺序结构: 从上到下从左到右

选择结构: 满足条件才能执行

循环结构: 重复执行某些代码

 

选择结构:

if ...else

switch

 

if结构:

单选择|单分支:

if(条件表达式){

满足条件才执行的语句体;

}

条件表达式:值为boolean类型的表达式

执行流程:

1.执行条件表达式,如果结果为true,就执行语句体

2.如果结果为false,就跳过if结构

 

 

双选择|双分支:

if(条件表达式){

语句体1;

}else{

语句体2;

}

执行流程:

1.执行条件表达式,如果结果为true,就执行语句体1

2.如果结果为false,就执行语句体2

 

多选择|多分支:

if(条件表达式1){

语句体1;

}else if(条件表达式2){

语句体2;

}

.....

else{

以上条件都不满足,就执行else中的内容  语句体n

}

 

执行流程:

1.计算条件表达式1,如果结果为true,执行语句体1,如果结果为false

2.执行条件表达式2,如果结果为true,执行语句体2,如果结果为false

....

如果以上条件都不满足,执行else中的语句体n

 

注意:如果语句体只有一句,前后的{}可以省略

 如果一个if语句中如果存在接盘侠else,肯定有结果

 

 

if与条件运算符之间的区别:

条件运算符肯定有结果,if不一定

 

能使用条件运算符的就推荐使用条件运算符,结构简单,效率较高

 

 

 

java中的switch语句:

定值判断  switch

区间判断  if

能用switch肯定能用if,能用if的不一定能用switch

 

switch(表达式){

case 值1 :

语句体1;

break;

case 值2:

语句体2;

break;

case 值3:

语句体3;

break;

......

 

default:

以上值都不满足,执行default中的内容

break;

}

 

表达式: 只能为byte,short,int,char,字符串(1.7),枚举(1.5)

一般使用变量

 

case: case后的定值与表达式的结果进行判断是否相等,对应执行不同的语句体

break: 结束switch语句,如果没有break,会发生case穿透,从现在执行完的语句体开始,如果没有break,下面的case无论是否相等,都会执行对应的语句体,直到遇到下一个break或者switch语句的结束而结束

default: 接盘侠,相当于else,以上值都不满足,执行default中的内容

可写可不写,default位置可以改变

 

执行流程:

1.计算表达式

2.那值与case后的值比较是否相等,如果相等就执行对应的语句体,如果不相等就向下继续比较

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值