深入讲解Java中的流程控制与运算符
投稿:goldensun
这篇文章主要介绍了Java中的流程控制与运算符,是Java入门学习中的基础知识,需要的朋友可以参考下
Java流程控制
Java流程控制的语法与 C/C++ 类似,也有 if...else、while、do...while、for、switch...case等,这里不再讲述具体语法,仅举例说明。
输出九九乘法表(右上三角):
public class Demo { public static void main(String[] args){ int i, j; for(i=1; i<=9; i++){ for(j=1; j<=9; j++){ if(j<i){ //打印八个空格,去掉空格就是左上三角形 System.out.print(" "); }else{ System.out.printf("%d*%d=%2d ", i, j, i*j); } } System.out.print("\n"); } } }
运行结果:
1*1= 1 1*2= 2 1*3= 3 1*4= 4 1*5= 5 1*6= 6 1*7= 7 1*8= 8 1*9= 9 2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 6*6=36 6*7=42 6*8=48 6*9=54 7*7=49 7*8=56 7*9=63 8*8=64 8*9=72 9*9=81
Java中也有 printf() 语句,用来控制输出格式,不过实际开发中不常用,因为输出到控制台的数据很少要求严格的格式,一般 println() 和 print() 就够了。
println() 输出内容后换行,print() 不换行。
又如,求某一年的某一月有多少天:
import java.util.*; public class Demo { public static void main(String[] args){ int days = 0; // 获取用户输入 Scanner sc = new Scanner(System.in); System.out.print("输入年份:"); int year = sc.nextInt(); System.out.print("输入月份:"); int month = sc.nextInt(); switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31; break; case 4: case 6: case 9: case 11: days=30; break; case 2: // 判断闰年 if(year%4==0 && year%100!=0 || year%400==0) days=29; else days=28; break; default: System.out.println("月份输入错误!"); System.exit(0); // 强制结束程序 } System.out.printf("天数:%d\n", days); } }
运行结果:
输入年份:2014 输入月份:02 天数:28
Java中没有像C语言中的scanf()语句,从控制台获取输入有点麻烦,我推荐使用 Scanner 类,具体语法请大家自行查看API。
Java运算符
Java中的运算符和C/C++相差无几。
数学运算符
数学运算,结果为一个数值。见下表:
关系运算符
关系运算符,结果为一个布尔值。见下表:
位运算符
位运算符对整数的二进制形式逐位进行逻辑运算,得到一个整数。见下表:
条件运算符
Java中也有一个条件运算符(三目运算符):
condition ? x1 : x2
condition为一个boolean值。根据condition,取x1或x2的值。
下面是关于运算符的一个综合举例:
public class Demo { public static void main(String[] args){ int a=10; int b=10; int x=10; int y=21; int z=10; System.out.println("后自加 a=" + (a++)); System.out.println("a的值 a=" + a); System.out.println("前自加 b=" + (++b)); System.out.println("---------------------"); System.out.println("说 x>y,对吗?" + (x>y)); System.out.println("认为 x>y 并且 x<y,对吗?" + ( (x>y) && (x<y) )); System.out.println("认为 x>=y 或者 x==y,对吗?" + ( (x>=y) || (x==y) )); System.out.println("认为 x<y 或者 x=z,对吗?" + ( (x<y) || (x==z) )); System.out.println("---------------------"); System.out.println("a&x 的结果是:" + (a&x)); System.out.println("a|x 的结果是:" + (a|x)); System.out.println("y^z 的结果是:" + (y^z)); System.out.println("---------------------"); System.out.println("a 左移2位的结果是:" + (a<<2)); System.out.println("y 右移3位的结果是:" + (y>>3)); } }
运行结果:
后自加 a=10 a的值 a=11 前自加 b=11 --------------------- 说 x>y,对吗?false 认为 x>y 并且 x<y,对吗?false 认为 x>=y 或者 x==y,对吗?false 认为 x<y 或者 x=z,对吗?true --------------------- a&x 的结果是:10 a|x 的结果是:11 y^z 的结果是:31 --------------------- a 左移2位的结果是:44 y 右移3位的结果是:2