常用的运算符及循环结构
运算符
算数运算符:+、-、*、/、%、++、–
-
+、-、*、/、运算规则和生活中相同,进行运算即可,
-
%是取余或叫取模,当余数为零时为整数,不为零时则余数是都少就是多少,例如8%2为0,5%2为1
-
++为自增运算符,–为自减运算符,当其单独使用时,在前在后都一样,当其被使用时,++/–在前,先进行运算,输出值为++/–后的值,当其在后时,输出值不变,后进行加/减操作
int a = 10; int b = 20; //当++/--未被使用时,直接进行运算, a++;//a=10+1 ++b;//b=20+1 System.out.println(a+","+b);//11,21 //当其进行使用时 int c,d; c = ++a;//在前,先进行运算a=11+1,记录a的值为12,再将a的值给c,c=12 d = b++;//在后,先记录b的值为21,进行运算b=b+1,将之前的b值赋值给d,d=21; System.out.println(c+","+d);//12,21
关系运算符:>、<、>=、<=、==、!=
-
大于>,小于<,大于或等于>=,小于或等于<=,等于==,不等于!=,运算规则与现实基本一致
-
关系运算的结果为boolean型,关系成立则为true,关系不成立则为false
逻辑运算符:&&、||、!
-
&&:短路与(并且),两边都为真则为真,见false则false
若第1个条件为false,则发生短路(后面的不执行了)
-
||:短路或(或者),有真则为真,见true则true
若第1个条件为true,则发生短路(后面的不执行了)
-
!:逻辑非(取反),非真则假,非假则真
逻辑运算是建立在关系运算的基础之上的,逻辑运算的结果也是boolean型
赋值运算符:=、+=、-=、*=、/=、%=
-
简单赋值运算符:=
-
扩展赋值运算符:+=、-=、*=、/=、%=,扩展赋值自带强转功能
int a = 5; a += 10; //相当于a=(int)(a+10) System.out.println(a); //15 a *= 2; //相当于a=(int)(a*2) System.out.println(a); //30 a /= 6; //相当于a=(int)(a/6) System.out.println(a); //5 short s = 5; //s = s+10; //会出现编译错误,需强转,改为:s=(short)(s+10); s += 10; //相当于: s=(short)(s+10);
字符串连接:+
-
若两边为数字,则做加法运算
-
若两边出现了字符串,则做字符串连接
—任何类型的数据与字符串相连,结果都会变为字符串类型int a = 10; int b = 20; System.out.println(a+b);//30 System.out.println(a+","+b);//10,20,不是因为逗号分割,若为空字符串则为1020
条件运算符(也叫三目运算符):判断条件?值1:值2
-
语法:Boolean?值1:值2
-
运行时需要计算Boolean的值,若结果为真则为值1,若结果为假为值2
int num = 5; int boolean = num>0?1:-1; System.out.println(boolean); //1
分支结构:
if结构:只有一条路
-
语法:if(判断条件){语句块} 判断条件为真时则会执行该条件,为假则不执行
int a = 10; if (a<5){ System.out.println("比较小"); } System.out.println("比较大"); //因为a<5为假,所以不会走if的语句块,结果会输出比较大
if…else结构:可以有两条路
-
语法:if(判断条件){语句块1}else{语句块2} 判断条件为真则输出语句块1,为假则输出语句块2
//1)偶数、奇数的判断: int num = 5; //带数(6,5) if(num%2==0){ System.out.println(num+"是偶数"); }else{ System.out.println(num+"是奇数"); } System.out.println("完毕");
if…else if结构:可以有多条路
-
语法:if(判断条件1){语句块1}else if(判断条件2){语句块2}else{语句块,3} 执行时会先对第一个条件进行判断,若为真则会走语句块1,为假则继续向下执行第二个判断条件,为真则执行语句块2,其他情况则执行语句块3。注意if…else if 并非只可以写三条,可以写多个判断条件,在后面添加else if就可以了,执行时其中的语句块必然会执行一个。
double score = 88; //带数(888,-56,95,85,65,45) if(score<0 || score>100){ System.out.println("成绩不合法"); }else if(score>=90){ //合法 System.out.println("A-优秀"); }else if(score>=80){ System.out.println("B-良好"); }else if(score>=60){ System.out.println("C-中等"); }else{ System.out.println("D-不及格"); }
switch…case结构:多条路
-
优点:效率高,结构清晰;缺点:只能对整数进行判断相等
-
break:跳出switch;建议在每句后都加一个break进行跳出,否则程序会继续向下执行,直到走完
System.out.println("请选择功能: 1.取款 2.存款 3.查询余额 4.退卡"); int command = 1;//可以代数1、2、3、4 switch(command){ case 1: System.out.println("取款业务..."); break; case 2: System.out.println("存款业务..."); break; case 3: System.out.println("查询余额业务..."); break; case 4: System.out.println("退卡业务..."); break; default: System.out.println("输入错误"); }
循环结构
循环就是反复多次的执行一段代码,循环有三个要素:循环变量的初始化,循环的条件(以循环变量为基础),循环变量的改变(向着循环的结束进行变化)
while循环
-
语法:while(判断条件){语句块–相当于反复执行的代码} 该结构先判断后执行,有可能会一次都不执行,执行时先对判断条件进行判定,若为真,则执行语句块,直到为假时停止执行,同时循环结束。
//1)输出5次"行动是成功的阶梯": int times = 0; //1.循环变量的初始化 while(times<5){ //2.循环的条件 System.out.println("行动是成功的阶梯"); times++; //3.循环变量的改变 } System.out.println("继续执行...");
do…while循环结构:先执行后判断,一定会执行一次
-
语法:do{语句块}while(判断条件)执行时先执行语句块,在对while进行判断,如果为真则继续执行语句块,为假则循环结束。
Scanner scan = new Scanner(System.in); int num = (int)(Math.random()*1000+1); //1到1000之内的随机数 System.out.println(num); //作弊 //假设num=250 //300(大),200(小),250(对) int guess; do{ System.out.println("猜吧!"); guess = scan.nextInt(); //1+3 if(guess>num){ System.out.println("太大了"); }else if(guess<num){ System.out.println("太小了"); }else{ System.out.println("恭喜你猜对了"); } }while(guess!=num); //2
for循环:应用率很高,与次数相关的循环
-
语法:for(初始化;循环条件;循环变量改变){语句快} 执行时会先进行初始化,之后对循环条件进行判断,为真则执行语句块,之后循环变量改变,再次进行判断,为真则继续,为假则循环结束。
for(int times=0;times<5;times++){ System.out.println("行动是成功的阶梯"); } //for中的循环变量num的作用域----仅在当前for中
注:continue是跳过循环体进入下一次循环。break是跳出循环
嵌套循环:循环中套循环
-
循环中套循环,常常多行多列时使用,一般外层控制行,内层控制列
-
执行规则:外层循环走一次,内层循环走所有次
-
建议:嵌套层数越少越好,能用一层就不用两层,能用两层就不用三层
-
break只能跳出当前层循环
//输出99乘法表 for(int num=1;num<=9;num++){ //控制行 for(int i=1;i<=num;i++){ //控制列 System.out.print(i+"*"+num+"="+i*num+"\t"); //print():输出不换行 //\t:水平制表位,固定占8位----------一般用于做对齐 } System.out.println(); //换行 }