1. 程式人生 > 實用技巧 >java慕課第三季

java慕課第三季

java慕課第三季

1.1java異常

處理異常:

package comm.imooc.test;

public class java {
    public static void main(String[] args) {
        java sc= new java();
        int c = sc.test1();
        System.out.println(c);
    }


    public  int test1(){
        int a = 10;
        int result = 0;
        try {
            while (a > -1){
                a--;
                result = result + result/a;
                return  result;

            }

        }catch (Exception e){
            System.out.println("出現異常了啊!!!");
        }
        return  100;

    }}

字串

字串的定義

public class HelloWorld {
    public static void main(String[] args) {
        //定義字串
		String hobby = "愛慕課";         
		String url = "www.imooc.com";            
        

        //輸出字串
    	System.out.println("hobby:" + hobby          );
    	System.out.println("url:" + url           );
    }

}

java中字串的不變性

public class HelloWorld {
    public static void main(String[] args) {
		String s1 = "imooc";
		String s2 = "imooc";
        

        //定義字串s3,儲存“I love”和s1拼接後的內容
    	String s3 = "I love"+s1; 
    	
        // 比較字串s1和s2
    	// imooc為常量字串,多次出現時會被編譯器優化,只建立一個物件
    	System.out.println("s1和s2記憶體地址相同嗎?" + (s1 == s2));
        
        //比較字串s1和s3
    	System.out.println("s1和s3記憶體地址相同嗎?" + (s1 == s3)                );
    
    	String s4 = "I love " + s1;
         //比較字串s4和s3
    	// s1是變數,s4在執行時才知道具體值,所以s3和s4是不同的物件
    	System.out.println("s3和s4記憶體地址相同嗎?" + (s4 == s3));
    }

}

java中string類的常用方法

判斷檔名與郵箱名是否合法:

public class HelloWorld {
    public static void main(String[] args) {
         // Java檔名
        String fileName = "HelloWorld.java";
        // 郵箱
        String email = "[email protected]";

        // 判斷.java檔名是否正確:合法的檔名應該以.java結尾
        /*
        參考步驟:
        1、獲取檔名中最後一次出現"."號的位置
        2、根據"."號的位置,獲取檔案的字尾
        3、判斷"."號位置及檔案字尾名
        */
        //獲取檔名中最後一次出現"."號的位置
        int index = fileName.lastindexOf(".");
    
        // 獲取檔案的字尾
        String prefix = fileName.substring(index+1);
    
        // 判斷必須包含"."號,且不能出現在首位,同時字尾名為"java"
        if ( index != 0 && index != -1 &&  prefix.equals("java")                                ) {
            System.out.println("Java檔名正確");
        } else {
            System.out.println("Java檔名無效");
        }
    
        // 判斷郵箱格式是否正確:合法的郵箱名中至少要包含"@", 並且"@"是在"."之前
         /*
        參考步驟:
        1、獲取檔名中"@"符號的位置
        2、獲取郵箱中"."號的位置
        3、判斷必須包含"@"符號,且"@"必須在"."之前
        */
        // 獲取郵箱中"@"符號的位置
        int index2 = email.indexOf("@");
    
        // 獲取郵箱中"."號的位置
        int index3 = email.indexOf('.');
    
        // 判斷必須包含"@"符號,且"@"必須在"."之前
        if (index2 != -1 && index3 > index2) {
            System.out.println("郵箱格式正確");
        } else {
            System.out.println("郵箱格式無效");
    	}
    }

}

統計字串中a出現的次數

package comm.imooc.test;

public class ChainTest {
    public static void main(String[] args) {
        // 定義一個字串
        String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";

        // 出現次數
        int num = 0;

        // 迴圈遍歷每個字元,判斷是否是字元 a ,如果是,累加次數
        for ( int i =0; i< s.length()  ;i++                       )
        {
            // 獲取每個字元,判斷是否是字元a
            if (   s.charAt(i) == 'a'             ) {
                // 累加統計次數
                num++;
            }
        }
        System.out.println("字元a出現的次數:" + num);
    }
}

認識java中的StringBuilder類

從執行結果中我們可以看到,程式執行時會額外建立一個物件,儲存 "helloworld"。當頻繁操作字串時,就會額外產生很多臨時變數。使用 StringBuilder 或 StringBuffer 就可以避免這個問題。至於 StringBuilder 和StringBuffer ,它們基本相似,不同之處,StringBuffer 是執行緒安全的,而 StringBuilder 則沒有實現執行緒安全功能,所以效能略高。因此一般情況下,如果需要建立一個內容可變的字串物件,應優先考慮使用 StringBuilder 類。

建立一個StringBuilder類的物件:

StringBuilder hobby=new StringBuilder("愛慕課");

從右邊開始每三個字母用逗號分隔開來:

public class HelloWorld {
    public static void main(String[] args) {
		// 建立一個空的StringBuilder物件
		StringBuilder str = new StringBuilder();
        

		// 追加字串
		str.append("jaewkjldfxmopzdm");
		
	    // 從後往前每隔三位插入逗號
		for(int i = str.length()-3;i >0;i = i -3){
		    str.insert(i,',');
		}


​        
​		

        // 將StringBuilder物件轉換為String物件並輸出
    	System.out.print(str.toString());
    }

}   

java中的包裝類

public class HelloWorld {
    public static void main(String[] args) {
        

		// 定義int型別變數,值為86
		int score1 = 86; 
	    
		// 建立Integer包裝類物件,表示變數score1的值
		Integer score2=new Integer(score1);
	    
		// 將Integer包裝類轉換為double型別
		double score3=score2.doubleValue();
	    
		// 將Integer包裝類轉換為float型別
		float score4=score2.floatValue();
	    
		// 將Integer包裝類轉換為int型別
		int score5 =score2.intValue();
	
		System.out.println("Integer包裝類:" + score2);
		System.out.println("double型別:" + score3);
		System.out.println("float型別:" + score4);
		System.out.println("int型別:" + score5);
	}

}

裝箱與拆箱

public class HelloWorld {
    public static void main(String[] args) {
        

        // 定義double型別變數
    	double a = 91.5;
        
         // 手動裝箱
    	Double b = new  Double(a);      
        
        // 自動裝箱
    	Double c = a;       
    
        System.out.println("裝箱後的結果為:" + b + "和" + c);
        
        // 定義一個Double包裝類物件,值為8
    	Double d = new Double(87.0);
        
        // 手動拆箱
    	double e = d.doubleValue();              ;
        
        // 自動拆箱
    	double f =  d              ;
        
         System.out.println("拆箱後的結果為:" + e + "和" + f);
    }

}

java中基本型別呃字串之間的轉換

基本型別轉換為字串有三種方法:

1.使用包裝類的toString()方法

2.使用String類的valueOf()方法

3.用一個空字串加上基本型別,得到的就是基本型別資料相對應的字串

	double m = 78.5;
	//將基本型別轉換為字串
	String str1 = m + "";                             ;
    
	System.out.println("m 轉換為String型後與整數20的求和結果為: "+(str1+20));
	
	String str = "180.20";
    // 將字串轉換為基本型別
	Double a = Double.valueOf(str)                     ;

	System.out.println("str 轉換為double型後與整數20的求和結果為: "+(a+20));
}

基本型別與包裝類之間的區別:基本型別不能呼叫方法,二包裝類提供了在不同型別之間進行轉換的方法

使用Date和SimpleDateFormat類表示時間

在程式開發中,經常需要處理日期和時間的相關資料,此時我們可以用java.utl包中的Date類。這個類最主要的作用就是獲取當前的時間。

使用Date類的預設無參的構造方法創建出的物件就代表的是當前的時間。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class HelloWorld {
    

    public static void main(String[] args) throws ParseException {
        
    	// 使用format()方法將日期轉換為指定格式的文字
    	SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒");
    	SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm");
    	SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
    	// 建立Date物件,表示當前時間
        Date now = new Date();
        
        // 呼叫format()方法,將日期轉換為字串並輸出
    	System.out.println( sdf1.format(now)                         );
    	System.out.println(sdf2.format(now));
    	System.out.println(sdf3.format(now));
    
    	// 使用parse()方法將文字轉換為日期
    	String d = "2014-6-1 21:05:36";
    	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
         // 呼叫parse()方法,將字串轉換為日期
    	Date date = sdf.parse(d);
        
    	System.out.println(date);
    }

}

宣告一個記憶體為10的陣列: int[] sc = new int[10];

隨機生成十以內的隨機數: sc = (int)(Math.random()*10);

用foreach迴圈列印陣列:

for(num : sc){system.out.println(num)}

​```
//通過迴圈給陣列賦值
for (int i = 0; i < nums.length; i++) {
    // 產生10以內的隨機數
    int x = (int)(Math.random()*10);
    nums[i] = x;// 為元素賦值
}
​```


集合框架

集合框架概述