深入講解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");
}
}
}
運行結(jié)果:
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() 語句,用來控制輸出格式,不過實際開發(fā)中不常用,因為輸出到控制臺的數(shù)據(jù)很少要求嚴格的格式,一般 println() 和 print() 就夠了。
println() 輸出內(nèi)容后換行,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); // 強制結(jié)束程序
}
System.out.printf("天數(shù):%d\n", days);
}
}
運行結(jié)果:
輸入年份:2014 輸入月份:02 天數(shù):28
Java中沒有像C語言中的scanf()語句,從控制臺獲取輸入有點麻煩,我推薦使用 Scanner 類,具體語法請大家自行查看API。
Java運算符
Java中的運算符和C/C++相差無幾。
數(shù)學(xué)運算符
數(shù)學(xué)運算,結(jié)果為一個數(shù)值。見下表:

關(guān)系運算符
關(guān)系運算符,結(jié)果為一個布爾值。見下表:

位運算符
位運算符對整數(shù)的二進制形式逐位進行邏輯運算,得到一個整數(shù)。見下表:

條件運算符
Java中也有一個條件運算符(三目運算符):
condition ? x1 : x2
condition為一個boolean值。根據(jù)condition,取x1或x2的值。
下面是關(guān)于運算符的一個綜合舉例:
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 的結(jié)果是:" + (a&x));
System.out.println("a|x 的結(jié)果是:" + (a|x));
System.out.println("y^z 的結(jié)果是:" + (y^z));
System.out.println("---------------------");
System.out.println("a 左移2位的結(jié)果是:" + (a<<2));
System.out.println("y 右移3位的結(jié)果是:" + (y>>3));
}
}
運行結(jié)果:
后自加 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 的結(jié)果是:10 a|x 的結(jié)果是:11 y^z 的結(jié)果是:31 --------------------- a 左移2位的結(jié)果是:44 y 右移3位的結(jié)果是:2
相關(guān)文章
SpringBoot @PostMapping接收HTTP請求的流數(shù)據(jù)問題
這篇文章主要介紹了SpringBoot @PostMapping接收HTTP請求的流數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02
詳解Spring AOP自定義可重復(fù)注解沒有生效問題
本文主要介紹了Spring AOP自定義可重復(fù)注解沒有生效問題,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08
JDK21中虛擬線程到底是什么以及用法總結(jié)(看完便知)
這篇文章主要給大家介紹了關(guān)于JDK21中虛擬線程到底是什么以及用法的相關(guān)資料,虛擬線程是一種輕量化的線程封裝,由jvm直接調(diào)度和管理,反之普通的線程其實是調(diào)用的操作系統(tǒng)的能力,對應(yīng)的是操作系統(tǒng)級的線程,需要的朋友可以參考下2023-12-12
SSH框架網(wǎng)上商城項目第20戰(zhàn)之在線支付平臺
這篇文章主要為大家詳細介紹了SSH框架網(wǎng)上商城項目第20戰(zhàn)之在線支付平臺,關(guān)于第三方支付的內(nèi)容從本文開始,感興趣的小伙伴們可以參考一下2016-06-06

