内部类&字符串
内部类&字符串
内部类:如果一个事物的内部包含了另一个事物,那么这就是一个类内部包含了另一个类
- 成员内部类
- 局部内部类(匿名内部类)
成员内部类
修饰符 class 外部类名称{
修饰符 class 内部类名称{
}
}
直接使用:外部类名称.内部类名称 对象名 = new 外部类名称().new 内部类名称();
间接使用:在外部类的方法中,使用内部类,然后main方法只是调用外部类的方法
内用外,直接使用,外用内,需要创建内部类对象
局部内部类
从java8开始,局部变量会省略final关键字,但是它还是一个常量
new出来的对象在堆内存中
局部变量跟着方法走的,在栈内存中
方法运行结束后,立刻出栈,局部变量就会立刻消失
但是new出来的对象会在堆内存中存在,直到垃圾回收消失
匿名内部类
如果接口的实现类,或者父类的子类,只需要使用唯一的一次,那么就可以省略掉该实现类的定义。
接口名称 对象名 = new 接口名称(){
重写所有的抽象方法
};
new 代表创建对象
接口名称是匿名内部类需要实现哪个接口
{}就是重写内容
匿名对象和匿名内部类的区别
匿名内部类省略的是实现类或子类,而匿名对象省略的是对象的名称
字符串
java.lang.String代表字符串
程序中所有的双引号字符串,都是String类的对象
- 字符串内容不可变
- 因为字符串不可改变,所以字符串是可以共享使用的
- 字符串效果上相当于char[]字符数组,但是底层是byte[]字节数组
构造方法
public String():创建一个空白的字符串,不包含任何内容
public String(char[] value):根据参数中char字符数组,来构建一个新的字符串
public String(byte[] bytes):根据参数中byte字节数组,来构建一个新的字符串
String str = "";
方法
boolean equals(Object obj):字符串值是否相同进行比较
boolean equalsIgnoreCase(Objcet):字符串值是否相同进行比较,忽略大小写
int length():返回字符串的长度
String concat(String str):连接字符串
char charAt(int index):获取指定的索引的单个字符
int indexOf(String str):字符串第一次出现的位置,没有返回-1
String substring(int beginIndex,int endIndex):截取字符串,从begin开始,一直到end结束截取,包含begin,不包含end
char[] toCharArray():将当前的字符串拆分成字符数组
byte[] getBytes():将当前的字符串拆分成字节数组
String replace(String oldString,String newString):替换字符串
String[] split(String regex):分割字符串,"."必须写成"\\."