菜鳥教程中Java語法(Java教程+Java面向對象)

Java基本數據類型
Java變量類型
Java運算符
Java循環語句
Java條件語句
Java switch case
Java Number & Math類
Java Character類

public class Test {

    public static void main(String args[]) {



        System.out.print("------------------------Java基本數據類型------------------------------------\n");

        // byte
        System.out.println("基本類型:byte 二進制位數:" + Byte.SIZE);
        System.out.println("包裝類:java.lang.Byte");
        System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);
        System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);
        System.out.println();

        // short
        System.out.println("基本類型:short 二進制位數:" + Short.SIZE);
        System.out.println("包裝類:java.lang.Short");
        System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);
        System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);
        System.out.println();

        // int
        System.out.println("基本類型:int 二進制位數:" + Integer.SIZE);
        System.out.println("包裝類:java.lang.Integer");
        System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);
        System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);
        System.out.println();

        // long
        System.out.println("基本類型:long 二進制位數:" + Long.SIZE);
        System.out.println("包裝類:java.lang.Long");
        System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);
        System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);
        System.out.println();

        // float
        System.out.println("基本類型:float 二進制位數:" + Float.SIZE);
        System.out.println("包裝類:java.lang.Float");
        System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);
        System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);
        System.out.println();

        // double
        System.out.println("基本類型:double 二進制位數:" + Double.SIZE);
        System.out.println("包裝類:java.lang.Double");
        System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);
        System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);
        System.out.println();

        // char
        System.out.println("基本類型:char 二進制位數:" + Character.SIZE);
        System.out.println("包裝類:java.lang.Character");
        // 以數值形式而不是字符形式將Character.MIN_VALUE輸出到控制檯
        System.out.println("最小值:Character.MIN_VALUE="
                + (int) Character.MIN_VALUE);
        // 以數值形式而不是字符形式將Character.MAX_VALUE輸出到控制檯
        System.out.println("最大值:Character.MAX_VALUE="
                + (int) Character.MAX_VALUE);







        System.out.print("------------------------Java運算符------------------------------------\n");


        int a = 10;
        int b = 20;
        int c = 25;
        int d = 25;
        System.out.println("a + b = " + (a + b) );
        System.out.println("a - b = " + (a - b) );
        System.out.println("a * b = " + (a * b) );
        System.out.println("b / a = " + (b / a) );
        System.out.println("b % a = " + (b % a) );
        System.out.println("c % a = " + (c % a) );
        System.out.println("a++   = " +  (a++) );
        System.out.println("a--   = " +  (a--) );
        // 查看  d++ 與 ++d 的不同
        System.out.println("d++   = " +  (d++) );
        System.out.println("++d   = " +  (++d) );


        System.out.print("----------------------Java循環--------------------------------------\n");
        int x = 10;
        while( x < 20 ) {
            System.out.print("value of x : " + x );
            x++;
            System.out.print("\n");
        }


        System.out.print("----------------------這是if語句--------------------------------------\n");

        int y = 10;

        if( y < 20 ){
            System.out.print("這是 if 語句\n");
        }


        System.out.print("----------------------這是switch語句用法--------------------------------------\n");

        char grade = 'C';

        switch(grade)
        {
            case 'A' :
                System.out.println("優秀");
                break;
            case 'B' :
            case 'C' :
                System.out.println("良好");
                break;
            case 'D' :
                System.out.println("及格");
                break;
            case 'F' :
                System.out.println("你需要再努力努力");
                break;
            default :
                System.out.println("未知等級");
        }
        System.out.println("你的等級是 " + grade);



        System.out.print("---------------------Java Math 類--------------------------------------\n");

        System.out.println("90 度的正弦值:" + Math.sin(Math.PI/2));
        System.out.println("0度的餘弦值:" + Math.cos(0));
        System.out.println("60度的正切值:" + Math.tan(Math.PI/3));
        System.out.println("1的反正切值: " + Math.atan(1));
        System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/2));
        System.out.println(Math.PI);

        System.out.print("---------------------Character 類--------------------------------------\n");

        System.out.print("-------------------1--是否是一個字母--------------------------------------\n");
        System.out.println(Character.isLetter('c'));
        System.out.println(Character.isLetter('5'));

        System.out.print("----------------2-----是否是一個數字字符--------------------------------------\n");

        System.out.println(Character.isDigit('c'));
        System.out.println(Character.isDigit('5'));

        System.out.print("----------------3-----是否是一個空白字符--------------------------------------\n");
        System.out.println(Character.isWhitespace('c'));
        System.out.println(Character.isWhitespace(' '));
        System.out.println(Character.isWhitespace('\n'));
        System.out.println(Character.isWhitespace('\t'));

        System.out.print("------------4---------是否是大寫字母--------------------------------------\n");
        System.out.println( Character.isUpperCase('c'));
        System.out.println( Character.isUpperCase('C'));

        System.out.print("---------------------是否是一個小寫字符--------------------------------------\n");

        System.out.println( Character.isLowerCase('c'));
        System.out.println( Character.isLowerCase('C'));

        System.out.print("---------------------將小寫字符轉換爲大寫--------------------------------------\n");
        System.out.println(Character.toUpperCase('a'));
        System.out.println(Character.toUpperCase('A'));



        System.out.print("--------------------- 指定字母的小寫形式--------------------------------------\n");




        System.out.println(Character.toLowerCase('a'));
        System.out.println(Character.toLowerCase('A'));

        System.out.print("--------------------- 返回字符的字符串形式,字符串的長度僅爲1--------------------------------------\n");

        System.out.println(Character.toString('a'));
        System.out.println(Character.toString('A'));




        System.out.print("--------------------- 創建字符串--------------------------------------\n");

        char[] helloArray = { 'r', 'u', 'n', 'o', 'o', 'b'};
        String helloString = new String(helloArray);
        System.out.println( helloString );

        System.out.print("---------------------字符串長度--------------------------------------\n");

        String site = "www.runoob.com";
        int len = site.length();
        System.out.println( "菜鳥教程網址長度 : " + len );


        System.out.print("---------------------連接字符串--------------------------------------\n");


        String string1 = "菜鳥教程網址:";
        System.out.println("1、" + string1 + "www.runoob.com");




        double floatVar=111.222;
        int intVar=3;
        String stringVar="string3";

        System.out.printf("浮點型變量的值爲 " +
                "%f, 整型變量的值爲 " +
                " %d, 字符串變量的值爲 " +
                "is %s", floatVar, intVar, stringVar);


    }

}

String類:

菜鳥教程中提到不要使用stringbuffer,直接使用stringbuilder,

[1]中提到如何驗證stringbuilder是線程不安全的

 

下面涉及:

Java數組

Java正則

Java方法

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {

    public static void main(String args[]) {


        double[] myList = {1.9, 2.9, 3.4, 3.5};

        // 打印所有數組元素
        for (int i = 0; i < myList.length; i++) {
            System.out.println(myList[i] + " ");
        }
        // 計算所有元素的總和
        double total = 0;
        for (int i = 0; i < myList.length; i++) {
            total += myList[i];
        }
        System.out.println("Total is " + total);
        // 查找最大元素
        double max = myList[0];
        for (int i = 1; i < myList.length; i++) {
            if (myList[i] > max) max = myList[i];
        }
        System.out.println("Max is " + max);








        // 按指定模式在字符串查找
        String line = "This order was placed for QT3000! OK?";
        String pattern = "(\\D*)(\\d+)(.*)";

        // 創建 Pattern 對象
        Pattern r = Pattern.compile(pattern);

        // 現在創建 matcher 對象
        Matcher m = r.matcher(line);

        System.out.println("---------------下面是輸出結果----------------------------------\n");
        System.out.println(m);
        System.out.println("---------------下面是輸出結果----------------------------------\n");
        if (m.find( )) {
            System.out.println("Found value: " + m.group(0) );
            System.out.println("Found value: " + m.group(1) );
            System.out.println("Found value: " + m.group(2) );
            System.out.println("Found value: " + m.group(3) );
        } else {
            System.out.println("NO MATCH");
        }









        System.out.println("---------------Java 方法----------------------------------\n");
        int num1 = 1;
        int num2 = 2;

        System.out.println("交換前 num1 的值爲:" +
                num1 + " ,num2 的值爲:" + num2);

        // 調用swap方法
        swap(num1, num2);
        System.out.println("交換後 num1 的值爲:" +
                num1 + " ,num2 的值爲:" + num2);
    }
    /** 交換兩個變量的方法 */
    public static void swap(int n1, int n2) {
        System.out.println("\t進入 swap 方法");
        System.out.println("\t\t交換前 n1 的值爲:" + n1
                + ",n2 的值:" + n2);
        // 交換 n1 與 n2的值
        int temp = n1;
        n1 = n2;
        n2 = temp;

        System.out.println("\t\t交換後 n1 的值爲 " + n1
                + ",n2 的值:" + n2);


    }

}

 

OutputStream以及InputStream的使用:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.*;
public class Test {

    public static void main(String args[]) throws IOException {



//        下面是stream
//
//        char c;
//        // 使用 System.in 創建 BufferedReader
//        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//        System.out.println("輸入字符, 按下 'q' 鍵退出。");
//        // 讀取字符
//        do {
//            c = (char) br.read();
//            System.out.println(c);
//        } while (c != 'q');



        System.out.println("-----------------------------FileOutputStream(先寫入文件)--------------------------------------\n");


        File f = new File("a.txt");
        FileOutputStream fop = new FileOutputStream(f);
        // 構建FileOutputStream對象,文件不存在會自動新建

        OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
        // 構建OutputStreamWriter對象,參數可以指定編碼,默認爲操作系統默認編碼,windows上是gbk

        writer.append("中文輸入");
        // 寫入到緩衝區

        writer.append("\r\n");
        // 換行

        writer.append("English");
        // 刷新緩存衝,寫入到文件,如果下面已經沒有寫入的內容了,直接close也會寫入

        writer.close();
        // 關閉寫入流,同時會把緩衝區內容寫入文件,所以上面的註釋掉

        fop.close();
        // 關閉輸出流,釋放系統資源



        System.out.println("-----------------------------FileInputStream(從文件讀取)--------------------------------------\n");

        FileInputStream fip = new FileInputStream(f);
        // 構建FileInputStream對象

        InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
        // 構建InputStreamReader對象,編碼與寫入相同

        StringBuffer sb = new StringBuffer();
        while (reader.ready()) {
            sb.append((char) reader.read());
            // 轉成char加到StringBuffer對象中
        }
        System.out.println(sb.toString());
        reader.close();
        // 關閉讀取流

        fip.close();
        // 關閉輸入流,釋放系統資源



    }

}

 

 

 

 

下面是Scanner-nextLine/nextInt/nextDouble的用法

import java.util.Scanner;
import java.io.*;
public class Test {

    public static void main(String args[]) throws IOException {


//        System.out.println("-------------------下面是nextline的使用-----------------");
//
//        Scanner scan = new Scanner(System.in);
//        // 從鍵盤接收數據
//
//        // nextLine方式接收字符串
//        System.out.println("nextLine方式接收:");
//        // 判斷是否還有輸入
//        if (scan.hasNextLine()) {
//            String str2 = scan.nextLine();
//            System.out.println("輸入的數據爲:" + str2);
//        }
//        scan.close();




//        System.out.println("-------------------下面是nextInt的使用-----------------");
//        Scanner scan = new Scanner(System.in);
//        // 從鍵盤接收數據
//        int i = 0;
//        float f = 0.0f;
//        System.out.print("輸入整數:");
//        if (scan.hasNextInt()) {
//            // 判斷輸入的是否是整數
//            i = scan.nextInt();
//            // 接收整數
//            System.out.println("整數數據:" + i);
//        } else {
//            // 輸入錯誤的信息
//            System.out.println("輸入的不是整數!");
//        }
//        System.out.print("輸入小數:");
//        if (scan.hasNextFloat()) {
//            // 判斷輸入的是否是小數
//            f = scan.nextFloat();
//            // 接收小數
//            System.out.println("小數數據:" + f);
//        } else {
//            // 輸入錯誤的信息
//            System.out.println("輸入的不是小數!");
//        }
//        scan.close();



        System.out.println("-------------------下面是nextDouble的使用-----------------");

        System.out.println("-------------------控制檯會一直讀取數據直到你輸入非數字的字符串爲止-----------------");


        Scanner scan = new Scanner(System.in);

        double sum = 0;
        int m = 0;

        while (scan.hasNextDouble()) {
            double x = scan.nextDouble();
            m = m + 1;
            sum = sum + x;
        }

        System.out.println(m + "個數的和爲" + sum);
        System.out.println(m + "個數的平均值是" + (sum / m));
        scan.close();
        





    }

}

 

#----------------------------------------------------------下面是Java面向對象-------------------------------------------------------------------------

super 與 this 關鍵字

注意區分多繼承 和多重繼承

下面這個是多重繼承(super 與 this 關鍵字):

class Animal {
    void eat() {
        System.out.println("animal : eat");
    }
}

class Dog extends Animal {
    void eat() {
        System.out.println("dog : eat");
    }
    void eatTest() {
        this.eat();   // this 調用自己的方法
        super.eat();  // super 調用父類方法
    }
}

public class Test {
    public static void main(String[] args) {
        Animal a = new Animal();
        a.eat();
        Dog d = new Dog();
        d.eatTest();
    }
}

 

 

重寫與重載之間的區別

區別點 重載方法 重寫方法
參數列表 必須修改 一定不能修改
返回類型 可以修改 一定不能修改
異常 可以修改 可以減少或刪除,一定不能拋出新的或者更廣的異常
訪問 可以修改 一定不能做更嚴格的限制(可以降低限制)

 

接口與類相似點:

  • 一個接口可以有多個方法。
  • 接口文件保存在 .java 結尾的文件中,文件名使用接口名。
  • 接口的字節碼文件保存在 .class 結尾的文件中。
  • 接口相應的字節碼文件必須在與包名稱相匹配的目錄結構中。

接口與類的區別:

  • 接口不能用於實例化對象。
  • 接口沒有構造方法。
  • 接口中所有的方法必須是抽象方法。
  • 接口不能包含成員變量,除了 static 和 final 變量。
  • 接口不是被類繼承了,而是要被類實現。
  • 接口支持多繼承。

枚舉:

public class Test
{
    enum Color
    {
        RED, GREEN, BLUE;
    }

    // 執行輸出結果
    public static void main(String[] args)
    {
        Color c1 = Color.RED;
        System.out.println(c1);
    }
}

上述教程來自[2]

 

Reference:

[1]怎麼驗證StringBuilder是非線程安全的

[2]Java 教程

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章