java运算符与流程控制_day3 java运算符与流程控制

赋值运算

赋值运算符:=,+=,-=,×=,/=,%=

class fuzhiyunsuan{

public static void main(String[] args){

int i1 = 10;

i1 += 3;//即i1 = i1 +3,但是这两者是有区别的

//例如下面

short s = 10;

//s = s + 3;编译是无法通过的,会损失精度

//s = (short)(s + 1);//强制修改精度,不建议

s += 1;//即可以实现运算,又不会更改s的数据类型;

System.out.println(s);

/*

赋值运算符:=,+=,-=,×=,/=,%=

*/

//切记在java中=是赋值操作。

boolean b1 = false;

if(b1=true)

System.out.println("结果为真");

else

System.out.println("结果为假");

}

}

root@debian:/home/jeff/java_coding/day003# java fuzhiyunsuan

11

结果为真

因为使用i = i+1可能无法通过编译,所以使用+=的方式赋值更好一些。还有在java中=是赋值,判断相等使用==。

逻辑运算符

7bbbb2822c7faa60731a25cfbc9aca14.png

class logiccal{

public static void main(String[] args){

boolean a = true;

boolean b = false;

System.out.println(a & b);

System.out.println(a && b);

System.out.println(a | b);

System.out.println(a || b);

System.out.println(!a & b);

System.out.println(a ^ b);

}

}

root@debian:/home/jeff/java_coding/day003# java logiccal

false

false

true

true

false

true

&与&&的区别

&&是短路运算的与,即a&&b,当a为false是无论b是真还是假,结果都是假,故不再运行b,直接跳出计算。

class logicdiff{

public static void main(String[] args){

boolean b = false;

int i1 = 10;

if(b & (i1++) > 0){

System.out.println("good");

}else{

System.out.println("bad");

}

System.out.println(i1);

int i2 = 10;

if(b && (i2++) > 0){

System.out.println("good");

}else{

System.out.println("bad");

}

System.out.println(i2);

}

}

root@debian:/home/jeff/java_coding/day003# java logicdiff

bad

11

bad

10

在此处即&左边为false,右边i++依然计算了,结果+1,&&右边未+1。更建议使用&&。

class logicdiff{

public static void main(String[] args){

boolean b = false;

int i1 = 10;

if(b & (10 / 0 == 0){

System.out.println("good");

}else{

System.out.println("bad");

}

System.out.println(i1);

int i2 = 10;

if(b && 10/0 == 0){

System.out.println("good");

}else{

System.out.println("bad");

}

System.out.println(i2);

}

}

此处&在编译过程中会报错,但是&&则会通过编译。

|与||同理。

位运算

e1d14f581809a4339a36cb443e795a43.png

class bitcal{

public static void main(String[] args){

int i1 = 31;

System.out.println(i1<<3);

System.out.println(i1<<28);

System.out.println(i1>>2);

System.out.println(i1>>>2);

int i2 = -31;

System.out.println(i2>>2);

System.out.println(i2>>>2);

}

}

root@debian:/home/jeff/java_coding/day003# java bitcal

248

-268435456

7

7

-8

1073741816

位移运算可能导致精度丢失。无符号位运算在负数时变化较大。

两个变量换位问题

class exchange{

public static void main(String[] args){

int m = 111;

int n = 233;

System.out.println("m:"+m+"n:"+n);

//1.提供中间变量

int temp = m;

m = n;

n = temp;

System.out.println("m:"+m+"n:"+n);

//2.m,n较大可能会损失精度

m = m+n;

n = m-n;

m = m-n;

System.out.println("m:"+m+"n:"+n);

//3.位运算

m = m^n;

n = m^n;

m = m^n;

System.out.println("m:"+m+"n:"+n);

}

}

运行结果

root@debian:/home/jeff/java_coding/day003# java exchange

m:111n:233

m:233n:111

m:111n:233

m:233n:111

三元表达式

格式:(条件表达式)?表达式1:表达式2;

当条件表达式为真,则运算结果为表达式1,当条件表达式为假,则运算结果为表达式2。

表达式1和2应当为同种类型。

三元表达式与if判断的差别为,三元表达式简化了if语句,三元表达式必须返回一个结果,if后面的代码快可以有多个语句。

class sanyuan{

public static void main(String[] args){

int i = 10;

int j = 20;

int max = (i > j)?i:j;

System.out.println("较大值是"+max);

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

System.out.println(str);

}

}

运算结果

root@debian:/home/jeff/java_coding/day003# java sanyuan

较大值是20

j大

流程控制

顺序结构

程序自上而下,逐行运行。

分支结构

根据条件选择某条分支运行

循环结构,根据循环条件重复性的执行某段代码。

if语句的三种格式

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

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

else{执行代码块;}

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

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

。。。

else{执行代码块;}

import java.util.Scanner;

class score{

public static void main(String[] args){

//创建一个scanner对象,用于键入数字

Scanner uscore = new Scanner(System.in);

System.out.println("请输入考试成绩");

//调用此对象相应方法,完成键盘输入的值的获取

//next():表示从键盘获取一个字符串,int表示键入的是整型数值用于比较

int str = uscore.nextInt();

System.out.println("你的成绩是"+str);

if(str > 100 || str < 0){

System.out.println("你输入的成绩有误");

}

else{

if(str == 100){

System.out.println("第一名");

}else if(str > 80 && str<=99){

System.out.println("优秀");

}else if(str >=60 && str<= 80){

System.out.println("一般");

}else{

System.out.println("要加油啊");

}

}

}

}

root@debian:/home/jeff/java_coding/day003# java score

请输入考试成绩

13

你的成绩是13

要加油啊

root@debian:/home/jeff/java_coding/day003# java score

请输入考试成绩

100

你的成绩是100

第一名

root@debian:/home/jeff/java_coding/day003# java score

请输入考试成绩

76

你的成绩是76

一般

switch语句

switch(变量){

case 值1:

case 值2:

...

default:

}

class switch1{

public static void main(String[] args){

int i = 1;

switch(i){

case 0:

System.out.println("零");

case 1:

System.out.println("一");

case 2:

System.out.println("二");

default:

System.out.println("其他");

}

}

}

运行结果

root@debian:/home/jeff/java_coding/day003# java switch1

其他

没有break退出循环体,那么匹配到分支以后还会继续执行其下的case语句。

default是可选的,而且位置是灵活的。

class switch2{

public static void main(String[] args){

int i = 5;

switch(i){

default:

System.out.println("其他");

case 0:

System.out.println("零");

case 1:

System.out.println("一");

case 2:

System.out.println("二");

}

}

}

运行结果

root@debian:/home/jeff/java_coding/day003# java switch2

其他

class switch3{

public static void main(String[] args){

int i = 5;

switch(i){

default:

System.out.println("其他");

break;

case 0:

System.out.println("零");

break;

case 1:

System.out.println("一");

break;

case 2:

System.out.println("二");

break;

}

}

}

root@debian:/home/jeff/java_coding/day003# java switch3

其他

switch里的变量类型可以是:char,byte,short,int,枚举,String(jdk1.7)

case的条件只能是值不能是取值范围。

本节代码托管到我的github:day003。

希望与广大网友互动??

点此进行留言吧!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值