java 学习总结

Posted by Shi Hai's Blog on March 1, 2023

最近开始要重新使用Java,已经有若干年没使用了,另外完全不懂Java编程语言背后的设计意图。 借机好好回炉重新学习学习,学习材料从谷歌扒拉过来的。

一、static关键字

static修饰的变量存放在静态区。

二、final关键字

final修饰的变量无法被修改。final+static修饰的变量表示一个常量。

三、java接口

对于不同的程序员群体来说,同意一份阐明他们的软件如何交互的“合同”是很重要的。每个小组都应该能够在不知道其他小组的代码是如何编写的情况下编写他们的代码。一般来说,接口就是这样的契约。

3.1 定义接口

在Java编程语言中,接口是一种引用类型,类似于类,只能包含常量、方法签名、默认方法、静态方法和嵌套类型。 接口可以包含抽象方法默认方法静态方法,且被隐式的指定为public方法。
接口可以包含变量,但变量会被隐式的指定为public static final变量。

public interface GroupedInterface extends Interface1, Interface2, Interface3 {

    // constant declarations
    
    // base of natural logarithms
    double E = 2.718282;
 
    // method signatures
    void doSomething (int i, double x);
    int doSomethingElse(String s);
}

3.2 默认方法

默认方法使您能够向库的接口添加新功能,并确保与为这些接口的旧版本编写的代码的二进制兼容性。和静态方法相比,默认方法是指接口的核心功能,而接口中的静态方法则是被当成工具方法。

import java.time.*;

public interface TimeClient {
    void setTime(int hour, int minute, int second);
    void setDate(int day, int month, int year);
    void setDateAndTime(int day, int month, int year,
                        int hour, int minute, int second);
    LocalDateTime getLocalDateTime();

    static ZoneId getZoneId (String zoneString) {
        try {
            return ZoneId.of(zoneString);
        } catch (DateTimeException e) {
            System.err.println("Invalid time zone: " + zoneString +
                    "; using default time zone instead.");
            return ZoneId.systemDefault();
        }
    }

    default ZonedDateTime getZonedDateTime(String zoneString) {
        return ZonedDateTime.of(getLocalDateTime(), getZoneId(zoneString));
    }
}

3.3 静态方法

静态方法是与定义它的类关联的方法,而不是与任何对象关联的方法。该类的每个实例共享其静态方法。具体示例见默认方法

3.4 接口套接口

一般接口的内部类(包括接口)是功能上与外层接口有很强的内聚性,其他组件几乎用不到的这些内部类。

四、闭包

TODO

五、参考文献