关于java:Y-分钟速成-Java

44次阅读

共计 6423 个字符,预计需要花费 17 分钟才能阅读完成。

源代码下载:LearnJava-zh.java

Java 是一个通用的程序语言, 蕴含并发, 基于类的面向对象等个性浏览更多

// 单行正文
/*
多行正文
*/
/**
JavaDoc(Java 文档)正文是这样的。能够用来形容类和类的属性。*/

// 导入 java.util 中的 ArrayList 类
import java.util.ArrayList;
// 导入 java.security 包中的所有类
import java.security.*;

// 每个 .java 文件都蕴含一个 public 类,这个类的名字必须和这个文件名统一。public class LearnJava {

    // 每个程序都须要有一个 main 函数作为入口
    public static void main (String[] args) {

        // 应用 System.out.println 来输入到规范输入
        System.out.println("Hello World!");
        System.out.println(
            "Integer:" + 10 +
            "Double:" + 3.14 +
            "Boolean:" + true);

        // 如果要在输入后不主动换行,能够应用 System.out.print 办法。System.out.print("Hello");
        System.out.print("World");


        ///////////////////////////////////////
        // 类型与变量
        ///////////////////////////////////////

        // 用 <type> <name> 来申明变量
        // 字节类型 - 8 位补码示意
        // (-128 <= 字节 <= 127)
        byte fooByte = 100;

        // 短整型 - 16 位补码示意
        // (-32,768 <= 短整型 <= 32,767)
        short fooShort = 10000;

        // 整型 - 32 位补码示意
        // (-2,147,483,648 <= 整型 <= 2,147,483,647)
        int fooInt = 1;

        // 长整型 - 64 位补码示意
        // (-9,223,372,036,854,775,808 <= 长整型 <= 9,223,372,036,854,775,807)
        long fooLong = 100000L;
        // L 能够用来示意一个数字是长整型的。// 其余的数字都默认为整型。// 留神:Java 中没有无符号类型

        // 浮点型 - 即 IEEE 754 规定的 32 位单精度浮点类型
        float fooFloat = 234.5f;
        // f 用来示意一个数字是浮点型的。// 否则会被默认当做是双精度浮点型。// 双精度浮点型 - 即 IEEE 754 规定的 64 位双精度浮点类型
        double fooDouble = 123.4;

        // 布尔类型 - true 与 false
        boolean fooBoolean = true;
        boolean barBoolean = false;

        // 字符类型 - 16 位 Unicode 编码字符
        char fooChar = 'A';

        // 用 final 能够使一个常量不可更改
        final int HOURS_I_WORK_PER_WEEK = 9001;

        // 字符串
        String fooString = "My String Is Here!";

        // \n 代表一个新的换行
        String barString = "Printing on a new line?\nNo Problem!";
        // \t 代表一个新的制表符
        String bazString = "Do you want to add a tab?\tNo Problem!";
        System.out.println(fooString);
        System.out.println(barString);
        System.out.println(bazString);

        // 数组
        // 数组在申明时大小必须曾经确定
        // 数组的申明格局:
        //< 数据类型 > [] < 变量名 > = new < 数据类型 >[< 数组大小 >];
        int [] intArray = new int[10];
        String [] stringArray = new String[1];
        boolean [] booleanArray = new boolean[100];

        // 申明并初始化数组也能够这样:
        int [] intArray = {9000, 1000, 1337};

        // 随机拜访数组中的元素
        System.out.println("intArray @ 0:" + intArray[0]);

        // 数组下标从 0 开始并且能够被更改
        intArray[1] = 1;
        System.out.println("intArray @ 1:" + intArray[1]); // => 1

        // 其余数据类型
        // ArrayLists - 相似于数组,然而性能更多,并且大小也能够扭转
        // LinkedLists
        // Maps
        // HashMaps

        ///////////////////////////////////////
        // 操作符
        ///////////////////////////////////////
        System.out.println("\n->Operators");

        int i1 = 1, i2 = 2; // 多重申明能够简化

        // 算数运算
        System.out.println("1+2 =" + (i1 + i2)); // => 3
        System.out.println("2-1 =" + (i2 - i1)); // => 1
        System.out.println("2*1 =" + (i2 * i1)); // => 2
        System.out.println("1/2 =" + (i1 / i2)); // => 0 (0.5 truncated down)

        // 取余
        System.out.println("11%3 ="+(11 % 3)); // => 2

        // 比拟操作符
        System.out.println("3 == 2?" + (3 == 2)); // => false
        System.out.println("3 != 2?" + (3 != 2)); // => true
        System.out.println("3 > 2?" + (3 > 2)); // => true
        System.out.println("3 < 2?" + (3 < 2)); // => false
        System.out.println("2 <= 2?" + (2 <= 2)); // => true
        System.out.println("2 >= 2?" + (2 >= 2)); // => true

        // 位运算操作符
        /*
        ~       取反,求反码
        <<      带符号左移
        >>      带符号右移
        >>>     无符号右移
        &       和
        ^       异或
        |       相容或
        */

        // 自增
        int i = 0;
        System.out.println("\n->Inc/Dec-rementation");
        // ++ 和 -- 操作符使变量加或减 1。放在变量后面或者前面的区别是整个表白
        // 式的返回值。操作符在后面时,先加减,后取值。操作符在前面时,先取值
        // 后加减。System.out.println(i++); // 后自增 i = 1, 输入 0
        System.out.println(++i); // 前自增 i = 2, 输入 2
        System.out.println(i--); // 后自减 i = 1, 输入 2
        System.out.println(--i); // 前自减 i = 0, 输入 0

        ///////////////////////////////////////
        // 控制结构
        ///////////////////////////////////////
        System.out.println("\n->Control Structures");

        // If 语句和 C 的相似
        int j = 10;
        if (j == 10){System.out.println("I get printed");
        } else if (j > 10) {System.out.println("I don't");
        } else {System.out.println("I also don't");
        }

        // While 循环
        int fooWhile = 0;
        while(fooWhile < 100)
        {//System.out.println(fooWhile);
            // 减少计数器
            // 遍历 99 次,fooWhile 0->99
            fooWhile++;
        }
        System.out.println("fooWhile Value:" + fooWhile);

        // Do While 循环
        int fooDoWhile = 0;
        do
        {//System.out.println(fooDoWhile);
            // 减少计数器
            // 遍历 99 次, fooDoWhile 0->99
            fooDoWhile++;
        }while(fooDoWhile < 100);
        System.out.println("fooDoWhile Value:" + fooDoWhile);

        // For 循环
        int fooFor;
        //for 循环构造 => for(< 起始语句 >; < 循环进行的条件 >; < 步长 >)
        for(fooFor=0; fooFor<10; fooFor++){//System.out.println(fooFor);
            // 遍历 10 次, fooFor 0->9
        }
        System.out.println("fooFor Value:" + fooFor);

        // Switch Case 语句
        // switch 能够用来解决 byte, short, char, 和 int 数据类型
        // 也能够用来解决枚举类型, 字符串类, 和原始数据类型的包装类:// Character, Byte, Short, 和 Integer
        int month = 3;
        String monthString;
        switch (month){
            case 1:
                    monthString = "January";
                    break;
            case 2:
                    monthString = "February";
                    break;
            case 3:
                    monthString = "March";
                    break;
            default:
                    monthString = "Some other month";
                    break;
        }
        System.out.println("Switch Case Result:" + monthString);


        ///////////////////////////////////////
        // 类型转换
        ///////////////////////////////////////

        // 数据转换

        // 将字符串转换为整型
        Integer.parseInt("123");// 返回整数 123

        // 将整型转换为字符串
        Integer.toString(123);// 返回字符串 "123"

        // 其余的数据也能够进行相互转换:
        // Double
        // Long
        // String

        // 类型转换
        // 你也能够对 java 对象进行类型转换, 但其中会牵扯到很多概念
        // 在这里能够查看更具体的信息:
        // http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html


        ///////////////////////////////////////
        // 类与函数
        ///////////////////////////////////////

        System.out.println("\n->Classes & Functions");

        // (Bicycle 类定义如下)

        // 用 new 来实例化一个类
        Bicycle trek = new Bicycle();

        // 调用对象的办法
        trek.speedUp(3); // 需用 getter 和 setter 办法
        trek.setCadence(100);

        // toString 能够把对象转换为字符串
        System.out.println("trek info:" + trek.toString());

    } // main 办法完结
} // LearnJava 类完结


// 你也能够把其余的非 public 类放入到.java 文件中


// 类定义的语法:
// <public/private/protected> class < 类名 >{
//    // 成员变量, 构造函数, 函数
//    //Java 中函数被称作办法
// }

class Bicycle {

    // Bicycle 类的成员变量和办法
    public int cadence; // Public: 任意地位均可拜访
    private int speed;  // Private: 只在同类中能够拜访
    protected int gear; // Protected: 能够在同类与子类中拜访
    String name; // default: 能够在包内拜访

    // 构造函数是初始化一个对象的形式
    // 以下是一个默认构造函数
    public Bicycle() {
        gear = 1;
        cadence = 50;
        speed = 5;
        name = "Bontrager";
    }

    // 以下是一个含有参数的构造函数
    public Bicycle(int startCadence, int startSpeed, int startGear, String name) {
        this.gear = startGear;
        this.cadence = startCadence;
        this.speed = startSpeed;
        this.name = name;
    }

    // 函数语法:
    // <public/private/protected> < 返回值类型 > < 函数名称 >(< 参数列表 >)

    // Java 类中常常会用 getter 和 setter 来对成员变量进行操作

    // 办法申明的语法:
    // < 作用域 > < 返回值类型 > < 办法名 >(< 参数列表 >)
    public int getCadence() {return cadence;}

    // void 返回值函数没有返回值
    public void setCadence(int newValue) {cadence = newValue;}

    public void setGear(int newValue) {gear = newValue;}

    public void speedUp(int increment) {speed += increment;}

    public void slowDown(int decrement) {speed -= decrement;}

    public void setName(String newName) {name = newName;}

    public String getName() {return name;}

    // 返回对象属性的办法
    @Override
    public String toString() {
        return "gear:" + gear +
                "cadence:" + cadence +
                "speed:" + speed +
                "name:" + name;
    }
} // Bicycle 类完结

// PennyFarthing 是 Bicycle 的子类
class PennyFarthing extends Bicycle {// (Penny Farthings 是前轮很大的 Bicycle,并且没有齿轮)

    public PennyFarthing(int startCadence, int startSpeed){
        // 通过 super 调用父类的构造函数
        super(startCadence, startSpeed, 0, "PennyFarthing");
    }

    // 你能够用 @正文来示意须要重载的办法
    // 理解更多的正文应用办法,能够拜访上面的地址:// http://docs.oracle.com/javase/tutorial/java/annotations/
    @Override
    public void setGear(int gear) {gear = 0;}

}

更多浏览

上面的链接只是为了便于大家了解这些主题而给出的,对于具体的例子请大家自行 Google

其余主题:

  • Java 官网教程
  • Java 拜访修饰符
  • 面向对象程序设计概念:

    • 继承
    • 多态
    • 形象
  • 异样
  • 接口
  • 泛型
  • Java 代码标准

有倡议?或者发现什么谬误?在 Github 上开一个 issue,或者发动 pull request!


原文由 Jake Prather 编写,并由 0 个好心人 批改。
Translated by: Chenbo Li
© 2022 Jake Prather
本作品采纳 CC BY-SA 3.0 协定进行许可。

正文完
 0