目录
- 复习与回顾
- 数组
- 抽象类和接口的区别
- String
- String常量池
- String常用方法
复习与回顾
数组
数组(array)是一种数据结构 ,用于存储同一类型元素的容器。
数组的特点:
- 不可变性:数组的长度是固定的,一旦初始化,则 长度不可变。
- 一致性:数组中存放的数据类型必须一致,只能保存相同数据类型的元素。
- 有序性:数组中的元素是有序的,可以通过下标访问。
- 数组内元素的索引从0开始。
抽象类和接口的区别
抽象类:
- 由abstract来修饰
- 可以包含变量、常量、构造方法、普通方法、静态方法、抽象方法
- 派生类通过extends继承
- 只能继承一个(单一继承)
- 抽象类中的成员任何权限都可以,默认是(默认权限(同包中))
接口: - 由interface定义
- 可以包含常量、抽象方法、静态方法(1.8版本以后)、默认方法(1.8版本以后) 、私有方法(1.9版本以后)
- 实现接口通过implements实现
- 可以实现多个(个体多实现 )
- 接口中的成员,访问权限只能是public(默认public权限)
String
String是不可变对象。
用final修饰 ,不可以被继承
底层封装了字符 数组以及字符数组操作算法
字符串一旦内容被创建,内容不可改变在拼接字符串时候会创建对象。
java字符串在内存中采用Unicode编码方式,任何一个字符对应两个字节的定长编码。
String常量池
Java为了提高性能,提出了字符串常量池的概念,对于直接赋值的字符串会缓存在字符串常量池之中,对于重复出现的字符串就不需要重新创建,会现在字符串常量池中先在找,如果存在直接指向常量池中储存的地址即可。
关于String a="abc"和String a=new String("abc")
的区别,对于二者来都会检测字符串常量池中是否存在“abc”字符串,如果存在则对于String a=“abc”来说不会创建新的对象,只会返回对该字符串的引用。而对于String a=new String(“abc”)来说不仅会在字符串常量池中进行创建 (如果字符串常量池中不存在的话)然后同时也会直接创建String对象。所以说String a=new String(“abc”)来说创建对象的数量可能是一个或者两个。
String常用方法
charAt()获取指定索引的字符
equals()判断两个字符串的字面量值是否相等
indexof()获取指定字符的第一次出现的索引
indexof(字符,索引)获取从该索引开始指定字符出现的第一次索引
lastIndexOf()获取最后一次出现的索引
length()返回字符串长度
startsWith()判断字符串是否以指定字符串开头
endWith()判断字符串是否以指定字符串结尾
substring(开始索引,结果索引)左闭右开截取字符串
toUpperCase()字符串转化为大写
toLowerCase()字符串转化为小写
Trim()去除前后空格