内部类&字符串

内部类&字符串

内部类:如果一个事物的内部包含了另一个事物,那么这就是一个类内部包含了另一个类

  • 成员内部类
  • 局部内部类(匿名内部类)

成员内部类

修饰符 class 外部类名称{
修饰符 class 内部类名称{

​ }

}

直接使用:外部类名称.内部类名称 对象名 = new 外部类名称().new 内部类名称();
间接使用:在外部类的方法中,使用内部类,然后main方法只是调用外部类的方法
内用外,直接使用,外用内,需要创建内部类对象

局部内部类

从java8开始,局部变量会省略final关键字,但是它还是一个常量
new出来的对象在堆内存中
局部变量跟着方法走的,在栈内存中
方法运行结束后,立刻出栈,局部变量就会立刻消失
但是new出来的对象会在堆内存中存在,直到垃圾回收消失

匿名内部类

如果接口的实现类,或者父类的子类,只需要使用唯一的一次,那么就可以省略掉该实现类的定义。

接口名称 对象名 = new 接口名称(){
		重写所有的抽象方法
};

​ new 代表创建对象
​ 接口名称是匿名内部类需要实现哪个接口
​ {}就是重写内容

匿名对象和匿名内部类的区别

匿名内部类省略的是实现类或子类,而匿名对象省略的是对象的名称

字符串

java.lang.String代表字符串
程序中所有的双引号字符串,都是String类的对象

  1. 字符串内容不可变
  2. 因为字符串不可改变,所以字符串是可以共享使用的
  3. 字符串效果上相当于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):分割字符串,"."必须写成"\\."
posted @ 2023-05-01 14:10  YxinHaaa  阅读(2)  评论(0编辑  收藏  举报