Java 简明教程

本文为 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://www.cnblogs.com/shujuxiong/p/9143140.html

时间: 2024-10-10 14:04:43

Java 简明教程的相关文章

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

单线程和多线程 关于它们的区别,zhihu上有一个回答,我认为十分不错,如下: 1. 单进程单线程:一个人在一个桌子上吃菜. 2. 单进程多线程:多个人在同一个桌子上一起吃菜. 3. 多进程单线程:多个人每个人在自己的桌子上吃菜. 多线程的问题是多个人同时吃一道菜的时候容易发生争抢.例如两个人同时夹一个菜,一个人刚伸出筷子,结果伸到的时候已经被夹走菜了.此时就必须等一个人夹一口之后,在还给另外一个人夹菜,也就是说资源共享就会发生冲突争抢. 例子: 多线程: 浏览器浏览一个页面,里面有很多图片,多

Java简明教程 09. 抽象类(abstract class)和接口(interface)

抽象类(abstract class) 描述抽象的事物,  比如人类(human), 就是一个抽象类. 对于人类这个抽象类, 具体的就是某一个人, 比如张三(男)啊, 小红(女)啊,虽然说人都会eat, 可是男人和女人的eat似乎又是不一样的.男人一般都是大口大口的吃, 而女人比较慢条斯理. AbstractDemo.java 1 abstract class Human { //抽象类, 特点: 1. 前面有abstract修饰 2 // 2. 无法直接生成一个对象,需要子类去继承这个类, 并

Java简明教程 10.多态(Polymorphism)

什么是多态(Polymorphism)? 多态就是: 父类的引用既可以来自父类, 也可以来自子类. 也就是, 允许子类的引用赋值给父类的引用   这就正如, 对于小牛, 它既是小牛, 也是动物; 对于汽车, 它既是汽车, 又是交通工具;对于手机, 它既是手机,又是通讯设备...这些的道理是一样的 PolyDemo1.java 1 /* 什么是多态? 2 * 输出结果: 牛在吃. 3 */ 4 public class PolyDemo1 { 5 public static void main(S

Java泛型简明教程

Java泛型简明教程 博客分类: Java综合 JavaApple数据结构CC++ Java泛型简明教程 本文是从 Java Generics Quick Tutorial 这篇文章翻译而来. 泛型是Java SE 5.0中引入的一项特征,自从这项语言特征出现多年来,我相信,几乎所有的Java程序员不仅听说过,而且使用过它.关于Java泛型的教程,免费的,不免费的,有很多.我遇到的最好的教材有: The Java Tutorial Java Generics and Collections ,

Java:Apache log4j简明教程(一)

Apache log4j的官方介绍是“log4j is a reliable, fast and flexible logging framework (APIs) written in Java, which is distributed under the Apache Software License. log4j is highly configurable through external configuration files at runtime. It views the log

Java:Apache log4j简明教程(二)

在上一讲Apache log4j简明教程(一)中介绍了log4j的基本概念,配置文件,以及将日志写入文件的方法,并给出了一个详细的示例.这一讲,我在继续谈一谈如何使用log4j将日志写入MySQL数据库. 将日志写入数据库需要经历(1)建立MySQL数据库日志记录表,(2)配置log4j配置文件,(3)编写Java执行程序三大步骤,下面将详细阐述三个步骤的具体内容. 建立MySQL数据库日志记录表 由于每个人想记录在MySQL数据库中的日志信息的不同,创建的表也各不相同,下面给出一个实用的示例:

Java 8简明教程

本文由 ImportNew - 黄小非 翻译自 winterbe. ImportNew注:有兴趣第一时间学习Java 8的Java开发者,欢迎围观<征集参与Java 8原创系列文章作者>. 以下是<Java 8简明教程>的正文. “Java并没有没落,人们很快就会发现这一点” 欢迎阅读我编写的Java 8介绍.本教程将带领你一步一步地认识这门语言的新特性.通过简单明了的代码示例,你将会学习到如何使用默认接口方法,Lambda表达式,方法引用和重复注解.看完这篇教程后,你还将对最新推

Lisp简明教程

此教程是我花了一点时间和功夫整理出来的,希望能够帮到喜欢Lisp(Common Lisp)的朋友们.本人排版很烂还望多多海涵! <Lisp简明教程>PDF格式下载 <Lisp简明教程>ODT格式下载 具体的内容我已经编辑好了,想下载的朋友可以用上面的链接.本人水平有限,如有疏漏还望之处(要是有谁帮我排排版就好了)还望指出!资料虽然是我整理的,但都是网友的智慧,如果有人需要转载,请至少保留其中的“鸣谢”页(如果能有我就更好了:-)). Lisp简明教程 整理人:Chaobs 邮箱:[

JSP 简明教程(二):JSP基本语法

基本语法 JSP只是在html的基础上嵌入一些动态的元素.下面是HelloWorld代码: <html> <% out.println("hello world"); %> </html> 以上代码中的<% %>就是动态元素.JSP中所有的特殊语法如下: <% %>:用于表示一段Java代码.这段代码在编译之后会放在_jspService()方法中. <%! %>:多了一个叹号,也用于表示一段Java代码,但是这段