一、Java类包 完整的类路径:packageName.className 同一个包中的的类不必放在同一个位置,可以放在不同的盘;只要将CLASSPATH分别指向这两个位置即可。 创建包:New/Package //命名规则:全部使用小写字母 导入包:import //指定一个包时,不会指定这个包的子包中的类;如果用到子包中的类,需要对这个子包做单独引用。 import除了导入包之外,还可以导入静态成员(JDK5.0以上) import static packageName.className.静态成员名称 如:import static java.lang.Math.max(导入后可以在类中直接使用max方法)二、final变量 final关键字可用于声明变量,一但该变量被设定,就不可以在改变该变量的值。通常,由final定义的变量为常量。 final定义的值必须在声明时进行赋值操作。 final除了可以修饰基本数据类型的常量,还可以修饰对象引用;一旦对象被修饰为final的,它只能指向一个对象。 定义为final的常量定义时需要使用大写字母命名,并且中间使用下划线进行连接,这是java中的编码规则。 一个被定义为final的对象引用只能指向一个对象,不可以将它再指向其他对象,但是一个对象本身的值却是可以改变的;如果要一个对象做到真正的不改变,可以将它声明为static final。
在java中使用全局变量,通常使用public static final修饰,这样的常量只能在定义时被赋值。三、final方法 被定义为final的方法不能被重写和覆盖,同时定义为final的方法效率要高于非final方法。 被定义为private的方法隐式被指定为final类型;所以private方法无需在定义为final类型。四、final类 定义为final的类不能被继承;如果将某个类设置为final形式,则类中的所有方法都被隐式的设置为final形式;但是final类中的成员变量可以被定义为final或非final形式。五、内部类 成员内部类: 语法: public class OuterClass(){ private class InnerClass{ //... } } 在一个类中使用内部类,可以在内部类中随意使用外部类得成员方法以及成员变量,尽管这些类成员被修饰为private。但是内部类的成员只有在内部类的范围之内是可知的,不能被外部类使用。 内部类的实例一定要绑定在外部类的实例上。 外部类不可以直接访问内部类的成员变量;但可以通过实例化内部类对象后,调用内部类的成员变量和方法。。 内部类的对象实例化操作必须在外部类或外部类的非静态方法中实现;如果在外部类和非静态方法之外实例化内部类对象,需要使用外部来.内部类的形式指定该对象的类型。
在内存中所有对象均被放置在堆中,方法以及方法中的形参或局部变量放置在栈中。 局部内部类: 被定义在类的方法或任意的作用域中;在该作用域或方法的外部不能访问该内部类,但是该内部类可以访问当前代码块的常量以及此外部类的所有成员。 在方法中定义的内部类只能访问方法中final类型的局部变量,这是因为在方法中定义的局部变量相当于一个常量,它的生命周期超出方法运行的生命周期,由于该局部变量被设置为final,所以不能在内部类中改变该局部变量的值。 匿名内部类: 语法: return new A(){ }; 静态内部类: 在内部类前面添加static,这个内部类就变成了静态内部类了。一个静态类中可以声明static成员,但是在非静态内部类中不可以声明静态成员。静态内部类有一个最大特点,就是不可以使用外部类的非静态成员。 内部类的继承:在某个类继承内部类时,必须硬性给予这个类一个带参数的构造方法。并且该构造方法的参数为需要继承内部类的外部类引用,同时在构造方法体中使用外部类对象.super();语句。