菜鸟教程中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 教程

 

 

 

 

 

 

你可能感兴趣的:(Java编程)