true true false true false true
静态类方法
P173 public static void NullAccessStaticTest(){
System.out.println("NullAccessStaticTest");
}
public static void main(String[] args){
Test test = null;
test.NullAccessStaticTest();
}
NullAccessStaticTest
单例类
P174class Singleton {
private static Singleton instance;
private Singleton(){}
public static Singleton getInstance()
{
if(instance == null){
instance = new Singleton();
}
return instance;
}
}
public class Test {
public static void main(String[] args){
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1 == s2);
}
}
true
final
final修饰的对象只能被赋值一次 在编译时能够确定的值称为“宏变量”,需要调用函数等的则不是 P178public class Test {
public static void main(String[] args){
final String book = "abcd" + 99.0;
final String book2 = "abcd" + String.valueOf(99.0);
System.out.println(book == "abcd99.0");
System.out.println(book2 == "abcd99.0");
}
}
true false
抽象类和接口
接口只能包含抽象方法;抽象类可以 包含普通方法接口不能定义静态方法;抽象类可以接口只能定义静态常量Field,不能定义普通Field;抽象类都可以接口里不包含构造器;抽象类可以包含接口里不能包含初始化块;抽象类可以一个类最多只能有一个直接父类;但一个类可以直接实现多个接口内部类
非静态内部类中,内部类访问外部类属性,外部类访问内部类属性 P202public class Outer {
private String outProp = "outProp";
private class Inner{
private String inProp = "inProp";
private void accessOuterProp()
{
System.out.println(outProp);
}
}
public void accessInnerProp(){
Inner in = new Inner();
in.accessOuterProp();
System.out.println(in.inProp);
}
public static void main(String[] args){
Outer out = new Outer();
out.accessInnerProp();
Inner in = new Outer().new Inner();
in.accessOuterProp();
}
}
outProp inProp outProp
外部类访问静态内部类的静态变量和普通成员变量 P204
public class Outer {
static class Inner{
private static int prop1 = 5;
private int prop2 = 9;
}
public void accessInnerProp(){
System.out.println(Inner.prop1);
System.out.println(new Inner().prop2);
}
public static void main(String[] args){
Outer out = new Outer();
out.accessInnerProp();
}
}
5 9
在外部类以外创建非静态内部类实例 P205
public class Test {
public static void main(String[] args){
Out.In in = new Out().new In("Test Message");
}
}
class Out
{
class In
{
public In(String msg)
{
System.out.println(msg);
}
}
}
Test Message
外部类以外继承内部类 P206
public class Test {
public static void main(String[] args){
new Subclass(new Out());
}
}
class Subclass extends Out.In
{
public Subclass(Out out)
{
out.super("hello");
}
}
class Out
{
class In
{
public In(String msg)
{
System.out.println(msg);
}
}
}
hello
在外部类之外使用静态内部类 P207
public class Test {
public static void main(String[] args){
StaticOut.StaticIn in = new StaticOut.StaticIn();
}
}
class StaticOut
{
static class StaticIn
{
public StaticIn(){
System.out.println("Ctor of StaticIn");
}
}
}
Ctor of StaticI