1.2 Java之运算符和条件语句(if+switch)

目录

 

算术运算符

+=符号

=与==符号

*=符号

逻辑运算符

^异或

“&”和“&&”

位运算符

交换数值的方法

三元运算符

判断三数中最大数(三元运算符实例)

进制转换练习(与运算符的妙用)

程序基本结构

if语句

if-else语句的嵌套

获取键盘输入

if语句练习(待补)

switch语句

if与switch语句辨析

日期转换练习(switch语句)

日期转换练习扩展(switch+if语句)

沧海遗珠


算术运算符

+=符号

short s=10;

s=s+3;//改变了数据类型,int型赋值给short类型,可能损失精度


s=(short)(s+1);//不推荐

s += 1;//不改变数据类型,仍然为short


=与==符号

  • =支持连续赋值,==为"等于"
  • if(b=true);//赋值语句,等价于if(true)

*=符号

int i=1;

i *= 0.1;//编译通过,结果为0


逻辑运算符

逻辑运算符对象为布尔类型变量


^异或


“&”和“&&”


单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算(节省运算量)


位运算符

  • 位运算符,运算对象为数值,提高效率
  • <<左移1等价于*2,2*8,等价于2<<<3,但移动过多,会影响符号位

 

 

有无符号右移,区别在于补位的数字(全部的空位)是1还是0

取反是补码按位取反

>>>:学不成名誓不还,要全部补0

位运算符没有双|和双&


交换数值的方法

1)提供临时变量,略

 

2)

int m = m+n;

int n = m-n;

int m = m-n;//这种方法容易超出int范围

 

3)最佳方法(绝妙)

int m = m^n;

int n = m^n;//(m^n)^n==m

int m = m^n;//(m^n)^m==n


三元运算符

 

  • (条件表达式)? 表达式1:表达式2;
  • true,运算后的结果是表达式1;
  • false,运算后的结果是表达式2;

1)运算符一定要有运算结果,结果的数据类型同表达式1和2的数据类型一致。

表达式1和表达式2为同种类型
 

2)可用if-else替代,都能实现时,优先三元运算符

例:String str = (i>j)?"i大":(i==j)?"相等":"j大";

 


判断三数中最大数(三元运算符实例)

 

int max1 = (m>n)?m:n;

int max2 = (max1>k)?max1:k;

 


进制转换练习(与运算符的妙用)

题目:将60转化为16进制,并表示出来


PS:JDK封装了相关类方法

String binary = Integer.toBinaryString(i);//二进制表示

String hex = Integer.toHexString(i);//十六进制表示


思路:与运算提取高位,低位(多位可通过循环实现)


int j = i&15;//提取低4位,00001111,&为位运算

char c = 'a';

char c1 = (char)(c+2);

String k1 = (j<=9)?j+"":(char)(j-10+'a')+"";//注意int强制转换为char

//若为数字不大于9,直接表示即可,若大于9,如10,则用a表示,PS:c1乱入

i = i>>4;

int z = i&15;

//同上,更多位循环之,如int为32位,8次

sop(k2+k1);//先高位,后低位


程序基本结构

1.顺序结构
程序从上到下逐行地执行,中间没有任何判断和跳转。

2.分支结构
根据条件,选择性地执行某段代码。
有if…else和switch两种分支语句。

3.循环结构
根据循环条件,重复性的执行某段代码。
有while、do…while、for三种循环语句。
注:JDK1.5提供了for-each循环,为了方便遍历集合、数组元素


if语句

if语句三种格式:

1.  if(true){
    执行代码块;
     }

2.  if(条件表达式){
    执行代码块;
      }
     else{
    执行代码块;
      }

3.  if(条件表达式){
    执行代码块;
      }
      else if (条件表达式){
    执行代码块;
      }
       ……
       else{
    执行代码块;
       }

 

else和最近的if匹配

if...else语句且只执行一条路径(分段函数的既视感)


if-else语句的嵌套

  if(){

  }else{

    if(){

     }

}


  • 当多个条件互斥时,条件语句的上下位置可调换,反之,不成立
  • 当多个条件语句存在包含关系时,范围小的写在范围大的上面
  • 执行语句块只有一条时,{}可省略

if(a>1){

  if(b>1)

     c=1;//只包含一行语句块

     d=1;//d=1赋值运算,不管b>1与否,都执行

}

等价于

if(a>1){

  if(b>1){

     c=1;}

     d=1;

}


获取键盘输入

  • 导包
  • 新建对象
  • 调用对象方法

import java.util.Scanner;

Scanner s = new Scanner(System.in);//接收键盘内容

sop("请输入");

String str = s.next();//获取字符串

int num = s.nextIn();


if语句练习(待补)

 


switch语句

switch(表达式)中表达式的返回值必须是下述几种类型一:byte,short,char,int,枚举,String(JDK1.7引入) 不可放double,float,boolean

 

switch(变量){
    case 常量1:
        语句1;
        break;
    case 常量2:
        语句2;
        break;
    … …
    case 常量N:
        语句N;
        break;
    default:
        语句;
        break;
     }
 

  • case子句中的值必须是常量,不能是范围,且所有case子句中的值应是不同的;
  • default子句是可任选的,(可以没有,可不在末尾,当即使在句首,仍先判断case语句),当没有匹配的case时,执行default
  • break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾

int i=5;

switch(i){

   default:

    sop("default")

   case 1:

    sop("1");

   case 2:

    sop("2");//输出default 1 2

    break;

   case 3:

    sop("3");

}


int i=2;

switch(i){

   default:

    sop("default")

   case 1:

    sop("1");

   case 2:

    sop("2");//输出2 3

   case 3:

    sop("3");

}


当多个case语句块一致时,可统一书写

除此之外,下例也体现了switch和if的转换(/10)


if与switch语句辨析

if和switch语句很像,具体什么场景下,应用哪个语句呢?

1)如果判断的具体数值不多,而且符合byte、 short 、int、 char这四种类型。虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。
 

2)其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。


日期转换练习(switch语句)

编写程序:从键盘上输入2014年的“month”和“day”,要求通过程序输出输入的日期为2014年的第几天。

思路:利用break实现累加效果


日期转换练习扩展(switch+if语句)

从键盘分别输入年、月、日,判断这一天是当年的第几天
 
   注:判断一年是否是闰年的标准:
       1)可以被4整除,但不可被100整除
       2)可以被400整除

 

  • 相对于上题,修改之处在于2月
  • 用if判断是否闰年,决定不同天数


沧海遗珠

JVM负责垃圾回收,内存管理

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值