DAY9
1、Object类
Object是所有类的根类,所有的类都直接或者间接的继承Object类;
Object类只有一个空参的构造方法,Object类里面的所有非私有方法子类中都有
该类下的方法研究:
- hashCode()
public int hashCode()返回该对象的哈希码值,哈希值是由地址值计算得来的,一般是唯一的
- getClass()
public final Class getClass()返回当前运行类的对象
通过面向对象思想,一个类也可以通过分析封装成一个具体的类,一个类:成员变量,成员方法,构造方法,类名,接口,包名,父类… - toString()
public String toString()将对象转换成字符串
输出语句会默认调用对象的toString()方法 - equals()
public boolean equals(Object obj)指示其他某个对象是否与此对象“相等”;
2、Scanner类
Scanner类是用于接收键盘录入的数据的,可以接收很多基本数据类型还有字符串类型
Scanner类的成员方法:
- hasNextInt()
public boolean hasNextInt():当且仅当此扫描器的下一个标记是有有效的int值时才返回true;
可以在接收一个数据之前用hasNextXxx方法判断要接收的值和当前类型是否一致,如果不一致hasNextXxx方法就会返回false;
就比如你使用的是nextInt方法接收一个int类型的值,那么可以先使用hasNextInt检查用户输入的值是否可以被int类型接收,如果不可以就不接收,如果强制接收就会报错
- nextLine()
public String nextLine():将键盘录入的值当做字符串返回 - next()
public String next():将键盘录入的有效值进行输出,此方法会将空格当做无效字符;
注意事项:先使用nextInt再使用nextLine会出现当nextInt接收完值之后,程序就停止了,为什么了?
3、String类(重要)
String类代表字符串。Java程序中的所有字符串字面值(如“abc”)都作为此类的实例实现
字符串常量是放在方法区中的常量区 - String(byte[] bytes)
public String(byte[] bytes):通过使用平台的默认字符集解码指定的byte数组,构造一个新的String - String(byte[] bytes,String charseName)
public String(byte[] bytes,String charseName)通过指定的编码将字节数组转换成字符串
- String(byte[] bytes,int offset,int length)
将字符数组中的某一部分转换成字符串
bytes:要解码为字符的byte
offset:要解码的第一个byte的索引
length:要解码的byte数
注意:快捷键:Ctrl+Shift+F:快速格式化代码
- String(char[] value)
public String(char[] value):将字符数组转换成字符串
- String(char[] value,int offset,int count)
public String(char[] value,int offset,int count):将字符数组中的一部分转换成字符串
value:作为字符源的数组
offset:初试偏移量
count:长度
- String(String original)
public String(String original):创建指定参数的字符串的一个副本,这个副本放在堆中
经典面试题:
1、对象问题
图解说明:
2、比较问题
图解说明:
依据各个功能将String类的方法进行划分: - String的判断功能方法
- equals(Object obj)
boolean equals(Object obj):比较当前字符串的值和参数字符串的值是否相等
- equalsIgnoreCase(String str)
boolean equalsIgnoreCase(String str):忽略英文字母大小写比较
- contains(String str)
boolean contains(String str):判断当前字符串是否包含参数字符串
- startWith(String str)
boolean startWith(String str):判断当前字符串是否是以参数字符串开头
- endsWith(String str)
boolean endsWith(String str):判断当前字符串是否是以参数字符串结尾
- isEmpty()
boolean isEmpty():判断当前字符串是否为空
- String类获取功能
- int length()
获取字符串的长度 - char charAt(int index)
获取指定索引位置上面对应的字符
- int indexOf(char ch)
返回指定字符在此字符串中第一次出现的索引 - int indexOf(String str)
返回参数字符串在当前字符串中的第一次出现的索引位置
注意:上述两个可以用第二个来代替 - int indexOf(char ch,int fromIndex)
从指定的索引开始搜索ch在当前字符串中第一次出现的索引位置 - int indexOf(String str,int fromIndex)
从制定的索引开始搜索str在当期字符串中第一次出现的索引位置
- String sunstring(int start)
从指定的start索引开始截取到当前字符串的末尾,返回截取的字符串 - String sunstring(int start,int end)
截取当前字符从start索引位置开始,end-1位置结束(包含头,不包含尾)
- String类的转换功能
- public byte[] getBytes()
使用平台默认编码将字符串转换成字节数组 - public char[] toCharArray()
将字符串转换成字符数组
- public static String valueOf(char[] chs)
将一个字符数组转换成字符串 - public static String valueOf(int i)
将一个int的值转换成字符串
注意:此方法可以用字符串拼接代替
- public String toLowerCase()
将当前字符串中的英文全部转换成小写 - public String toUpperCase()
将当前字符串中的英文全部转换成大写 - public String concat(String str)
将当前字符串和参数字符串拼接
- String类的替换功能
- String replace(char old,char new)
将当前字符串中的所有old的字符替换成new的参数字符 - String replace(String old,String new)
将当前字符串中的所有old字符串替换成new的参数字符串
- 去除字符串的头尾空格
- String trim()
注意:此函数一般应用到登录功能
- 按照字典顺序比较两个字符串
- int compareTo(String str)
如果参数字符串等于此字符串,则返回值为0;如果此字符串按字典顺序小于字符串参数,则返回一个小于0的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于0的值 - int compareToIgnoreCase(String str)
与上述情况类似,只是忽略英文字母大小写
案例:字符串翻转
案例:将字符串“axhhauububbuaa”中的字母“a,b”删除然后输出
4、StringBuffer类及其构造方法 - StringBuffer和String的区别?
StringBuffer是一个线程安全的可变容器,里面可存储字符串,里面还提供了一些针对字符串操作的方法 - StringBuffer底层是基于什么数据结构实现的?
StringBuffer内部是用字符数组存储字符串 - public StringBuffer()
构造一个其中不带字符的字符串缓冲区,其初始容量为16个字符 - public StringBuffer(int capacity)
构造一个不带字符,但具有指定初始容量的字符串缓存去 - public StringBuffer(String str)
构造一个字符串生成器,并初始化为指定的字符串内容。该字符串生成器的初始容量为16加上字符串参数的长度
- StringBuffer类的成员方法
添加功能: - public StringBuffer appeng(String str)
将指定的字符串追加到此字符序列 - public StringBuffer insert(int offset,String str)
将字符串插入此字符序列中;offset:偏移量;str:一个string
删除功能: - public StringBuffer deleteCharAt(int index)
删除指定索引上面的字符 - public StringBuffer delete(int start, int end)
删除指定索引start到结束索引end的子字符串
start:起始索引(包含);end:结束索引(不包含)
替换功能: - public StringBuffer replace(int start,int end,String str)
使用给定String中的字符串替换此序列的子字符串中的字符
start:起始索引(包含);end:结束索引(不包含);str:将替换原有内容的字符串
反转功能: - public StringBuffer reverse()
将字符串反转
截取功能: - public String substring(int start)
从开始索引start截取到字符串末尾的一个子字符串 - public String substring(int start,int end)
从开始索引start截取到结束索引end-1
注意:截取功能和前面几个功能不同,返回值类型时String类型,本身并没有发生改变