• Java基础回顾


    学习基础背景:Acmer、有C/C++基础

    以【Java语言程序设计(基础篇)】第10版为参考(感谢YJJ的推荐),列出部分知识点,注意思考背后的原因和好处坏处。

    【14-16章——关于可视化编程的章节】跳过

    【17章——IO博大精深】不断学习

    【附录ADHI】相对较有实际意义的附录

    对于foreach,获取的是值不是引用。即在如下操作后,vals不发生改变:

    for (Integer val : vals) {
        val += 1;
    }
    

    (Page 10)

    Java有三个版本:

    Java 标准版(Java Standard Edition, Java SE)可以用来开发客户端的应用程序。应用程序可以独立运行或作为applet在Web浏览器中运行。

    Java 企业版(Java Enterprise Edition, Java EE)可以用来开发服务器端的应用程序,例如,Java servlet和JavaServer Pages(JSP),以及JavaServer Faces(JSF)。

    Java 微型版(Java Micro Edition, Java ME)用来开发移动设备的应用程序,例如手机。

    (Page 42)

    为了提高可读性,Java允许在数值直接量的两个数字间使用下划线。如

    Integer million = 1_000_000;
    

    (Page 104)

    在一个Java程序中,java.lang包中的所有类是隐式导入的。

    (Page 142)

    输入重定向和输出重定向

    java demo < input.txt > output.txt
    

     (Page 224)

    具有同样类型的可变长度的参数可以传递给函数,并将作为数组对待。

    在方法声明中,指定类型后紧跟着省略号(...)。只能给方法中指定一个可变长参数,同时该参数必须是最后一个参数。如

    public static void printMax(double... numbers) {}
    

    (Page 244)

    锯齿数组(ragged array)的各行的长度可以不相同。如,

    Integer[][] arr = {
        {1, 2, 3}
        ,{1, 2}
        ,{1}
    };
    

     (Page 288)

    通常将与实例无关的变量或方法声明为静态,与实例相关的变量或方法声明为非静态。

    (Page 290)

    为了防止用户创建类的实例,可以将构造方法设为private。

    (Page 303)

    关键字this可以用于调用同一个类的另一个构造方法。如:

    public class Circle {
        private Double radius;
        public Circle(Double radius) {
            this.radius = radius;
        }
        public Circle() {
            this(1.0);
        }
    }
    

    Java要求在构造方法中,语句this(参数列表)应在任何其他可执行语句之前出现。

    如果一个类有多个构造方法,最好尽可能使用this(参数列表)实现它们。通常,无参数或参数少的构造方法可以用this(参数列表)调用参数多的构造方法。这样做通常可以简化代码,使类易于阅读和维护。

    (Page 328)

    Integer、Double、String等类的实例都是不可变的。

    注意以下输出结果为 false 跟 true

    String s1 = "Hello";
    String s2 = new String("Hello");
    String s3 = "Hello";
    System.out.println(s1 == s2);
    System.out.ptintln(s1 == s3);
    

    (Page 333)

    StringBuffer和StringBuilder类似于String类,区别在于String类是不可改变的。

    StringBuffer是同步的,StringBuilder是异步的。

    (Page 354)

    要调用父类构造函数就必须使用关键字super,而且这个调用必须是构造函数的第一条语句。如果没有显式调用super,编译器会自动将super();作为构造函数的第一条语句。

    (Page 364)

    a instanceof B用于判断变量a是否为类B的实例。

    (Page 377)

    子类可以重写父类的protected函数,并把可见性改为public。但是,子类不能削弱父类定义的函数的可访问性。如,一个函数在父类中定义为public,在子类中也必须定义为public。

    (Page 379)

    多态:Object obj = new Apple();

    动态绑定:当从引用变量调用实例函数时,该变量的实际类型在运行时决定使用该方法的哪个实现

    (Page 400)

    即使在到达finally块之前有一个return语句,finally块还是会执行。

    (Page 409)

    JDK 7提供了下面的新的try-with-resources语法来自动关闭文件。资源必须是AutoCloseable的子类型,比如PrintWriter,具有一个close()函数。资源的声明和创建必须在同一行语句中。

    try(
        PrintWriter printWriter = new PrintWriter(file);
    ) {
        printWriter.println("Hello, QQ");
    }
    

    (Page 428)

    抽象函数是非静态的。不能使用new操作从一个抽象类创建一个实例。

    (Page 436)

    接口中所有的数据域都是public static final而且所有的函数都是public abstract,所以Java允许忽略这些修饰符。

    (Page 442)

    对于protected native Object clone() throws CloneNotSupportedException;

    关键字native表明这个函数不是用Java写的,但它是JVM针对自身平台实现的。

  • 相关阅读:
    3dsmax不同版本 pyside qt UI 设置max窗口为父窗口的方法
    oracle中的数据库和实例
    oracle中的表空间(tablespace)、方案(schema)、段(segment)、区(extent)、块(block)
    什么是WSE
    Server.Transfer,Response.Redirect的区别
    Oracle 中的几个数据类型介绍
    oracle中的连接字符串
    Oracle中的 单引号 和 双引号
    接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?
    聚簇索引
  • 原文地址:https://www.cnblogs.com/nextbin/p/4927830.html
Copyright © 2020-2023  润新知