本文为 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/protected/private> class <类名>{
//    //成员变量, 构造函数, 函数
//    //Java中函数被称作方法
// }

class Bicycle {

    // Bicycle 类的成员变量和方法
    public int cadence; // Public: 任意位置均可访问
    protected int gear; // Protected: 可以在同类与子类中可以访问
    private int speed; // Private: 只在同类中可以访问
    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;
    }

}

其他主题:

参考资料:https://learnxinyminutes.com/docs/zh-cn/java-cn/

Java 简明教程的更多相关文章

  1. Java简明教程

    Java与C++比较概况 C++ Java class Foo { // 声明 Foo 类 public: int x; // 成员变量 Foo(): x() { // Foo 的构造函数Constr ...

  2. Java简明教程 12.多线程(multithreading)

    单线程和多线程 关于它们的区别,zhihu上有一个回答,我认为十分不错,如下: . 单进程单线程:一个人在一个桌子上吃菜. . 单进程多线程:多个人在同一个桌子上一起吃菜. . 多进程单线程:多个人每 ...

  3. Java简明教程 11.异常

    异常的感性认识 在没有异常机制的语言中,经常通过返回值来表示调用该函数产生的各种问题(异常),比如c语言. divide.c #include <stdio.h> int main() { ...

  4. Java网络编程简明教程

    Java网络编程简明教程 网络编程  计算机网络相关概念 计算机网络是两台或更多的计算机组成的网络,同一网络内的任意两台计算机可以直接通信,所有计算机必须遵循同一种网络协议. 互联网 互联网是连接计算 ...

  5. Docker简明教程

    Docker简明教程 [编者的话]使用Docker来写代码更高效并能有效提升自己的技能.Docker能打包你的开发环境,消除包的依赖冲突,并通过集装箱式的应用来减少开发时间和学习时间. Docker作 ...

  6. Java8简明教程(转载)

    ImportNew注:有兴趣第一时间学习Java 8的Java开发者,欢迎围观<征集参与Java 8原创系列文章作者>. 以下是<Java 8简明教程>的正文. “Java并没 ...

  7. Lisp简明教程

    此教程是我花了一点时间和功夫整理出来的,希望能够帮到喜欢Lisp(Common Lisp)的朋友们.本人排版很烂还望多多海涵! <Lisp简明教程>PDF格式下载 <Lisp简明教程 ...

  8. appium简明教程

    appium简明教程 什么是appium? 下面这段介绍来自于appium的官网. Appium is an open-source tool you can use to automate mobi ...

  9. Tips & Tricks:Apache log4j简明教程(二)

    在上一讲Apache log4j简明教程(一)中介绍了log4j的基本概念,配置文件,以及将日志写入文件的方法,并给出了一个详细的示例.这一讲,我在继续谈一谈如何使用log4j将日志写入MySQL数据 ...

随机推荐

  1. 解决IE6下透明图片有背景的问题

    描述,透底的图片,在其他浏览器中效果: 在IE6中的效果:  1.改图片 IMG 换用gif格式的图片,但是这样的话图片效果不好: 想让IE6用gif的图片,其他浏览器用png图片,但是只有IE有这样 ...

  2. jenkins遇到含中文路径的SVN地址时认证通不过

    安装插件:http://mirror.xmission.com/jenkins/plugins/subversion/2.5/subversion.hpi 可以解决svn中文目录问题 百度云:http ...

  3. failed to register esriAddin

    ArcGIS AddIN开发遇到此种异常,目前有两种错误的可能:(1)项目名称好像不能为中文名,如果为中文名,请改正 (2)在Config.esriAddinx配置文件中,存在如下代码 <Tar ...

  4. Hdu1010Tempter of the Bone 深搜+剪枝

    题意:输入x,y,t.以及一个x行y列的地图,起点‘S’终点‘D’地板‘.’墙壁‘X’:判断能否从S正好走t步到D. 题解:dfs,奇偶性减枝,剩余步数剪枝. ps:帮室友Debug的题:打错了两个字 ...

  5. intel笔记本cpu型号后缀详解(M,U,QM,MQ,HQ,XM)

    M:笔记本专用CPU,一般为双核,M前面一位数字是0,意味着是标准电压处理器,如果是7,则是低电压处理器. U:笔记本专用低电压CPU,一般为双核,U前面一位数字为8,则是28W功耗的低压处理器(标准 ...

  6. MySQL在linux上(cmake)的source code安装方法

    1.安装前准备: 1)必备的包和工具  gcc/g++ :MySQL 5.6开始,需要使用g++进行编译.  cmake  :MySQL 5.5开始,使用cmake进行工程管理,cmake需要2.8以 ...

  7. Sorted sets

    Redis in Action JOSIAH L. CARLSON MANNING Shelter Island ZSETs offer the ability to store a mapping ...

  8. js之操作cookie

    js通过document.cookie获取所有的cookie信息, cookie在存储的格式是键值对,key=value每个键值对之间用; (分号和空格隔开). 添加cookie和修改cookie的值 ...

  9. 匿名内部类的参数引用只能是final,可能遇到的问题及其解决

    这个是我碰到比较多次的问题,一开始是不解,不过查了下大家都觉得没什么,而且只是加个final好像影响也不大,于是我就直接加个final了事,之后也不管了 直到昨天: 遇到了这个宿命般的问题 难道解决方 ...

  10. SQLServer DBA 三十问

    原贴:http://www.cnblogs.com/fygh/archive/2011/10/18/2216166.html 答案:https://blog.csdn.net/cjssimei527/ ...