java循环语句计算_java的运算符和循环

1.运算符

分类

1:算数运算符

2.赋值运算符

3.比较|关系运算符

4.逻辑运算符

5.条件运算符

6.位运算符

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

表达式: 运算符连接左右两边的操作数整体成为表达式

语句: ; 表示 语句的结束

单目|一元运算符:

操作数只有一个的 ++ --

++i;i--;

操作自己|影响自己:

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

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

操作别人|影响别人(操作数的值是多少影响其他的结果)|参与运算符:

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

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

int a=5;

int b=3;

a++; //a=6--a;

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

//操作别人|影响别人 -->影响打印的结果System.out.println(a++); //5 先操作System.out.println(a); //6 再自增

b=--a;

System.out.println(a); //5先自增再操作System.out.println(b); //5//两道习题int c= 2+ ++a + b--;

System.out.println(a); //6System.out.println(b); //4System.out.println(c); //13

c = a++ + ++a + a++ + a++ + ++a;

System.out.println(a); // 11System.out.println(c); // 42

双目|二元运算符: 操作数有的 + / .. > < +=

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

-= a-=b ==> a=a-b; ​

*= ​

/= a/=b ==> a=a/b;

​ %=取余数

int a=5;

int b=3;

a=a+b; //编译器会自动帮我们优化成+= ->看反编译工具System.out.println(a+=b); //8//System.out.println(a=a/b); //报错,Int到double出错System.out.println(a/=b); //2/*推荐使用扩展赋值运算符;1.提高执行效率2.自动做强制类型转换*/

//注意下方代码,操作运算时在有字符串的时候才+表示连接符,否则会为二进制加法a = 97;

System.out.println("hello" + 'a' + 1); // "helloa1"System.out.println('a' + 1 + "hello"); // 98+"hello" -> "98hello"

测试java中的比较运算符|关系运算符

> < > >= <=

只能比较基本数据类型 byte short char int long float double

== !=

基本数据类型的数据,引用数据类型的数据都可以比较是否相等

最终的运算结果,都为boolean类型的值

int a=5;

int b=3;

System.out.println(a>=b); //true

System.out.println(a+3 != b-1); //true

System.out.println("因为" == ""+'因'+'为');

//如果比较字符串中的内容是否相等时候,不推荐使用== 字符串1.equals(字符串2)->结果为true相等,false不相等

System.out.println("因为".equals(""+'因'+'为'));

测试java中的逻辑运算符

​ 操作数值为boolean类型的表达式

​ & 两边的操作数 都是true才是true,一个为false,结果就为false ​

| 两边的操作数 一个为true就是true,两个都为false才是false ​

! 取反

​ ^ 相同为false,不同为true

​ 短路 :如果第一个操作数已经能够决定最终的结果,第二个操作数不再执行 ​ ==&& 两边的操作数 都是true才是true,一个为false,结果就为false ​ || 两边的操作数 一个为true就是true,两个都为false才是false==

​ 推荐使用&& 或者 ||,提议提高效率

System.out.println("--------------&-----------------");

//两都为真才为真 System.out.println(true & false); //false System.out.println(false & false); //false System.out.println(false & true); //false System.out.println(true & true); //true

System.out.println("--------------|-----------------");

//只要有一个为真则为真 System.out.println(true | false); //true System.out.println(false | false); //false System.out.println(false | true); //true System.out.println(true | true); //true

System.out.println("--------------!-----------------");

//取反 System.out.println(!false); //true System.out.println(!true); //false

System.out.println("--------------^-----------------");

//一真一假为真 System.out.println(true ^ false); //true System.out.println(false ^ false); //false System.out.println(false ^ true); //true System.out.println(true ^ true); //false

//测试短路&&只要判断左边为假直接为假 //System.out.println(5/0==0); //报错0不能做除数 //System.out.println(false & 5/0==0); //false 报错0不能做除数 System.out.println(false && 5/0==0); //false 不报错 只判断左边右边不判断

三目|三元|条件运算符:操作数只有三个的

条件表达式 ? 值1 : 值2 ; ===>最终的结果不是值1就是值2

条件表达式是一个值为boolean类型的表达式

条件表达式 ? 值1 : 值2 ; ===>最终的结果不是值1就是值2

执行流程:

1.计算条件表达式

2.如果结果为true,整个条件运算符的结果为值1

3.如果结果为false,整个条件运算符的结果为值2

//1.比较3个数的大小,取最大的那个值int m=a>b? a : b;

m=m>c? m :c;

System.out.println(m);

m=a>b && a>c ? a : b>c? b: c; //System.out.println(m);

测试java中的位运算符(了解)

先把操作数转为2进制,再去运算,得到结果转为十进制

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

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

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

位移运算符

右移

先把第一个操作数转为2进制,向右移动第二个操作数个位数,想象原数据右侧有分水线,最终看左侧保留的二进制数据转为十进制 ==可以转换为二进制,

右移n位就除以2的n次方== /2 8>>3 --> 8/2^3 ==1

<< 左移

先把第一个操作数转为2进制,向左移动第二个操作数个位数,空位补0,转为十进制 ==可以转换为二进制,

左移n位就乘以2的n次方== *2 8<<3 --> 8*2^3

System.out.println(2&3); //2 System.out.println(2|3); //3 System.out.println(2^3); //1

System.out.println(8>>3); //1 System.out.println(8>>2); //2 System.out.println(8<<3); //64 System.out.println(8<<1); //16 System.out.println(9>>2); //2

运算符优先级:

​ 单目算数位关系,逻辑三目后赋值

Scanner和Random的使用

Scanner

测试java中的Scanner

基本数据类型: int a=5;

引用数据类型的使用:

1).创建一个该类型的引用|变量 引用数据类型 变量名 = new 引用数据类型();

2) 使用功能 :

变量名.功能名字();

Scanner : 接收键盘输入

1.导包

告诉 编译器Scanner类的位置 import 报名+类名;

位置: 类的上面导包

2.创建一个Scanner类型的引用|变量

Scanner sc=new Scanner(http://System.in);

3.使用功能

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

sc.nextByte() 接收用户输入的byte类型的数据

sc.nextShort() 接收用户输入的short类型的数据

sc.nextLong() 接收用户输入的long类型的数据

sc.nextDouble() 接收用户输入的double类型的数据

sc.nextFloat()接收用户输入的float类型的数据

​ sc.next() 接收用户输入的字符串类型的数据 ​

从有效字符开始,遇到空格就无法接收,遇到enter结束功能

==sc.nextLine() 接收String类型数据,以行为单位接收== ​

4.关闭 ​

sc.close(); 关闭资源 ​

必须要等待全部使用完毕Scanner的功能才能关闭

import java.util.Scanner;//1.导包public class Scanner08{

public static void main(String[] args){

Scanner sc=new Scanner(System.in);//2.创建一个Scanner类型的引用|变量 int i=sc.nextInt();//3.使用功能 //int i=sc.nextByte();//byte型 System.out.println(i);

/*//小数double d=sc.nextDouble();System.out.println(d);//字符串System.out.println("请输入用户名");String str=sc.next();System.out.println(str);*/

//处理遗留enter问题 sc.nextLine();

System.out.println("接收字符串类型数据");

String s=sc.nextLine();

System.out.println("s="+s);

//键盘输入用户名和密码 与指定的用户比较,看是否登录成功 laopei 1234 System.out.println("请输入用户名");

String name=sc.next();

int pwd =sc.nextInt();

System.out.println("laopei".equals(name)&& pwd == 1234 ? "登录成功" : "用户名或密码错误");

System.out.println( );

//关闭 sc.close();

}

}

Random

1.导包

2.创建该类型的引用或者变量

3.使用功能

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

nextInt(整数n) 产生一个 [0,n) 随机整数

nextDouble() 随机产生[0,1)之间的随机小数

公式:

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

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

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

import java.util.Random;//1.导包public class Random09{

public static void main(String[] args){

Random ran = new Random();//2.创建该类型的引用或者变量 int i=ran.nextInt();//3.使用功能 System.out.println(i);

//[0,19) -->[0,18] int i2=ran.nextInt(20);

System.out.println(i2);

//[1,19] i2=ran.nextInt(19)+1; //[0,18] + 1 --> [1,19] System.out.println(i2);

//[5,10] i2=ran.nextInt(10-5+1)+5;

System.out.println(i2);

//随机小数 double d=ran.nextDouble();

System.out.println(d);

}

}

循环

流程控制语句:

​ 顺序结构: 默认执行顺序 从上倒下,从左到右 ​

选择结构: 满足条件执行对应的语句体 ​

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

if..else

/*单选泽|单分支:if(条件){语句体;}条件:是一个值为boolean类型的表达式满足条件,就执行{}中的语句体,不满足条件,跳过整个if结构*/

if(false)

System.out.println("if结构中1....");

System.out.println("if结构中2....");

System.out.println("if结束");

/*双选择|双分支:if(条件){语句体1;}else{语句体2;}满足条件执行语句体1,不满足条件,执行语句体2*/

String name="zhangsan1";

if("zhangsan".equals(name)){

System.out.println("用户名正确");

}else{

System.out.println("用户名错误");

}

/*多选择|多分支:if(条件1){语句体1;}else if(条件2){语句体2;}else if(){....}...else{如果以上条件都不满足,执行语句体n;}*/

int a=-5;

if(a>0){

System.out.println("a>0");

}else if(a==0){

System.out.println("a=0");

}else if(a<0){

System.out.println("a<0");

}

/*只要{}中的语句体只有一句的时候,前后的{}可以省略if与条件运算符之间的区别:if可以没有结果,条件运算符肯定有一个结果if可以同时对多个条件进行判断结果复杂推荐使用if,如果结构简单,推荐使用条件运算符*/

switch

switch(表达式){

case 值1:

语句体1;

break;

case 值2:

语句体2;

break;

...

default:

语句体n;

break;

}

//执行流程: //1.计算表达式,得到一个结果,值 //2.第一步算出的结果值与case后的值进行判断,如果相等,就执行对应的语句体,如果不相等,就继续向下判断 long i=100;

char ch='a';

switch(ch){

case 1:

System.out.println("1");

break;

case 10:

System.out.println("10");

break;

case 100:

System.out.println("100");

break;

case 'a':

System.out.println("a");

break;

}//100 //3.如果执行了语句体,后如果有break,结束整个switch语句,如果没有break会发生case穿透 String flag="绿灯";

switch(flag){

case "红灯":

System.out.println("红灯停");

break;

case "黄灯":

System.out.println("黄灯等一等");

break;

case "绿灯":

System.out.println("绿灯行");

default:

System.out.println("傻了吧!!!!!!");

break;

}//绿灯行 傻了吧!!!!!!

/*4.如果以上所有case后的值都不满足条件,执行default(接盘侠 else)表达式: 只能为byte,short,char,int,String(jdk1.7之后),枚举(jdk1.5) seo 搜索引擎优化case穿透: 满足条件的语句体执行之后,如果没有break,下面的case无论是否满足条件,都会执行他们的语句体,直到遇到下一个break或switch的结果而结束default:位置可以任意改变,break可以省略,但是如果写在switch最后,省略break没有影响,其他位置会发生case穿透if和switch区别:1.if可以做区间判断,可以做定定值判断2.switch只能做定值判断能使用switch地方都能使用if*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值