内部类: * 一个Java文件中可以包含多个class,但是只有一个public class * 如果一个类定义在另一个类的内部,叫做内部类 * 使用:定义或创建内部类,需要在内部类的前面添加外部类来进行修饰 * Outer.Inner inner=new outer().new Inner(); * 特点:可以方便的访问外部类的私有属性 * 外部类不能访问内部类的私有属性,但是如果创建了内部类的对象,此时可以在外部类中访问私有属性 * 内部类中不能定义静态属性(把内部类当成类中一个普通成员变量,只不过成员变量是class类型而已) * 当内部类和外部类中具有相同的私有属性时,在内部类中访问,可以直接访问内部类 * 如果需要访问外部类的属性,那么需要添加外部类名.this.属性 * 匿名内部类:当定义了一个类实现了某个接口,在使用过程中只是用一次,没有其他用途,可以考虑不创建具体的类,而采用呢哇、 interface(){添加未实现的方法} * 就叫做匿名内部类 * 静态内部类:在内部类中可以定义静态内部类,使用static关键字惊醒修饰,使用规则:Outer.Inter inter=new Outer.Inter() * 方法内部类:在外部类的方法中也可以定义类,叫做方法内部类,只能在方法中创建对象,因为class的作用域就是当前方法 包装类与基本数据类型: * 包装类是将基本数据类型封装成一个类,包含属性和方法 * 使用: * 在使用过程中,会涉及到自动装箱和自动拆箱 * 装箱:将基本数据类型转换成包装类 * 拆箱:将包装类转换成基本数据类型 * 注意:字符串常量池在1.7之后放置在堆空间之中 * 字符串的本质:字符串的本质是字符数组(字符序列) * String类使用final修饰,不可以被继承 * 使用equals方法比较的是数组每一个位置上的值 * String是一个不可变对象(数组引用不可变)public class StringDemo { public static void main(String[] args) { String str="abc"; String str2=new String("abc"); str2.intern(); //str2=str2.intern(); System.out.println(str==str2);//false(比较地址) System.out.println(str.equals(str2));//true(比较值) System.out.println(str.charAt(0)); System.out.println(str.concat("cde"));//数组复制 System.out.println(str.indexOf("a")); //返回指定下标元素 System.out.println(str.substring(2,3));//在截取字符串的时候要注意是左闭右开区间 } }
* 可变字符串 * StringBuffer:线程安全 * StringBuilder:线程不安全 * 枚举类型: * 只能够取特定值中的一个 * 使用enum关键字 * 所有的枚举类型隐性的继承自java.lang.Enum 每个被枚举的成员实质就是一个枚举类型的实例 * 建议需要定义一组常量时,使用枚举类型



