JavaSE
四、Struct文法結構
- ShunXunDemo:順序結構
//順序結構就按順序呗
public static void main(String[] args) {
System.out.println("hello1");
System.out.println("hello2");
System.out.println("hello3");
}
- 選擇結構
2.1if結構
- ifDemo1:if單選擇結構if
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸内容:");
String s = scanner.nextLine();
//equals:判斷字元串是否相等,不用"="
if(s.equals("Hello")){
System.out.println(s);
}
System.out.println("End");
scanner.close();
}
- ifDemo2:if的雙選擇結構if ...else
public static void main(String[] args) {
//考試分數大于等于60是及格,小于60不及格
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入成績:");
int score = scanner.nextInt();
if(score>=60){
System.out.println("及格");
}else{
System.out.println("不及格");
}
scanner.close();
}
- ifDemo3:if多選擇結構if...else if...else
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入成績:");
int score = scanner.nextInt();
if(score==100){
System.out.println("恭喜,是滿分!");
}else if (score <100 && score >= 90){
System.out.println("A");
}else if (score <90 && score >= 80){
System.out.println("B");
}else if (score <80 && score >= 70){
System.out.println("C");
}else if (score <70 && score >= 60){
System.out.println("D");
}else if (score <60 && score >= 0){
System.out.println("A");
} else {
System.out.println("成績不合法");
}
scanner.close();
}
/*
1、分數的不在0-100的也要考慮,為不合法,寫程式的時候就要想到所有的情況,不然後續修改bug很麻煩
2、隻要滿足了一個else if,其他的else if就不執行了
*/
2.2Switch結構
- SwitchDemo1:多選擇結構
public static void main(String[] args) {
//case 穿透現象 swith 比對一個值
char grade = 'A';
switch(grade){
case 'A':
System.out.println("優秀");
break;//不寫break就會把後面的全部輸出來,最好都加上
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("及格");
break;
case 'D':
System.out.println("再接再厲");
break;
case 'E':
System.out.println("沒救了");
break;
default:
System.out.println("未知等級");
}
}
/*
文法:switch(expression){
case value://記得是冒号!!
執行語句;
break;
case value:
執行語句;
break;
default:
執行語句;
*/
- SwitchDemo2:反編譯
public static void main(String[] args) {
String name = "fenfen";
//jdk7才支援的新特征,表達式結果可以是字元串
//反編譯 java--class(位元組碼檔案)
switch (name){
case "yueyue":
System.out.println("yueyue");
break;
case"fenfen":
System.out.println("fenfen");
break;
default:
System.out.println("做咩啊");
}
/*反編譯操作方式:
把out裡面的class檔案利用idea複制到src裡面就是可以看到反編譯的檔案了,字尾是class
發現switch中反編譯後:switch是通過hashCode()和equals去查找中文對應的哈希值看下匹不比對
*/
}
//反編譯源碼
public static void main(String[] args) {
String name = "fenfen";
byte var3 = -1;
switch(name.hashCode()) {
case -1278140000:
if (name.equals("fenfen")) {
var3 = 1;
}
break;
- 循環結構
3.1while結構
- WhileDemo1:基本while文法
public static void main(String[] args) {
//輸出1-100
int i = 0;
while (i<100){
i = i+1;
System.out.println(i);
}
}
- WhileDemo2:死循環
public static void main(String[] args) {
while(true){
/*死循環
一般用在等待用戶端連接配接
伺服器監聽響應
定時檢查任務
*/
}
}
- WhileDemo3:寫一個1+2+...+100的等差數列求和
public static void main(String[] args) {
//計算1+2+3+...+100
int i =0;
int sum = 0;
while (i<=100){
sum =sum+i;
i = i+1;
}
System.out.println(sum);
}
3.2DoWhile結構
- DoWhileDemo2:while和dowhile的差別
public static void main(String[] args) {
//用while:不會輸出a,直接不走循環了
int a = 0;
while(a<0){
System.out.println(a);
a++;
}
System.out.println("=======================");
//用dowhile:輸出a=0,至少走一次循環
do{
System.out.println(a);
a++;
}while(a<0);
}
3.3For結構
- ForDemo1:基本for寫法(和while比較)
public static void main(String[] args) {
int a = 1;//初始化條件
while(a<100){//條件判斷
System.out.println(a);//循環體
a+=1;//疊代
}
System.out.println("while循環結束");
//for (初始值,布爾值,更新),即初始化、條件判斷、疊代
for(int i = 1;i<100;i++){//快捷鍵:100.for加上tab鍵
System.out.println(i);
}
}
- ForDemo2:寫個100以内的奇數和偶數的和
public static void main(String[] args) {
int oddSum = 0;//定義奇數的和
int evenSum = 0;//定義偶數的和
for (int i = 0; i <= 100; i++) {
if(i%2!=0){//用模運算
oddSum+=i;
}else{
evenSum+=i;
}
}
System.out.println("奇數的和:"+oddSum);
System.out.println("偶數的和:"+evenSum);
}
//for搭配if...else一起寫
- ForDemo3:寫個輸出1-1000之間能被5整數的數,并且每行輸出3個
public static void main(String[] args) {
for (int i = 0; i <= 1000; i++) {
if(i%5==0){
System.out.print(i+"\t");
}
if(i%(5*3)==0){
System.out.print("\n");//或者System.out.println();
}
//printin 輸出會換行
//print 輸出不會換行
}
}
- ForDeom4:寫個九九乘法表
public static void main(String[] args) {
/*
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
*/
for (int i = 1; i <= 9; i++) {
for (int j = 1; i>=j; j++) {
System.out.print(i + "*" + j +"="+(i*j)+"\t");
}
System.out.println();
}
}
/*
總結:
①兩層for循環
②内循環中i>=j的限制
③内循環完後換行sout的使用
*/
}
- ForDeom5:在周遊數組和集合上的使用
public static void main(String[] args) {
//①普通寫法
int[] numbers = {10,20,30,40,50};//定義了一個數組
for (int i =0;i<5;i++){
System.out.println(numbers[i]);
}
System.out.println("========================");
//②指針抽象一點的寫法:周遊數組中的元素
for (int x:numbers){//x是内置的一個指針
System.out.println(x);
}
}
- break、continue
- BreakDemo:break基本用法
public static void main(String[] args) {
int i =0;
while(i<100) {
i++;
System.out.println(i);
if (i == 30) {
break;//30後面就不幹了,跳出這個循環
}
}
System.out.println("123");
}
- ContinueDemo:continue基本用法
public static void main(String[] args) {
int i =0;
while (i<100){
i++;
if(i%10==0){
System.out.println();
continue;//立馬會跳到循環最開始的地方,終止某次循環,後面的這一程式不執行
}
System.out.print(i);
}
}
- LabelDemo:标簽的用法
public static void main(String[] args) {
//列印101-150之間所有的質數
int count = 0;
outer:for(int i = 101;i<150;i++){ //outer是标簽
for(int j = 2;j<i/2;j++){
if(i%j==0){
continue outer;//傳回到标簽的位置,可以跳到指定循環處,不一定就跳出這個循環而已
}
}
System.out.print(i+" ");
}
}