最近开始要重新使用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
五、参考文献
- java官方文档
- static关键字
- 菜鸟教程-Java接口
- Java的接口定义中再定义另一个接口有什么用?
- 一文彻底搞懂Java static关键字
- W3Cschool Java教程
- 极客教程-Java教程
- inner-class-and-nested-static-class-example
- Curly braces in "new" expression? (e.g. "new MyClass() { ... }")
- Java 8 Optional 类
- Stackoverflow: Convert a JSON object to a Map object