java常用类(一)
Object类:一切子类的父类
-
public int hashCode()
返回对象的哈希码值(可以理解为地址值,但不是实际地址值) -
public final class getClass()
返回此Object类运行时类class类的方法 -
public String getName()
已String的形式返回此classString str = obj.getClass().getName();//打印当前类名及包名
-
public String toString()
返回该对象的字符串表示=this.getClass().getName()+’@’+Integer.toHexString(this.hashCode)
-
public boolean equals(Object obj)
指示其他某个对象是否与此对象相等父类的equals比较的是地址值,一般子类重写该方法
-
protected void finailize():
垃圾回收器,当垃圾回收器确定不存在该对象的更多应用时,有对象的垃圾回收器调用此方法。什么时候回收不确定时间 -
protected Object clone()
创建并返回一个对象的副本implements Cloneable //子类重写时要接口Cloneable,并扔出异常
//浅克隆 Students s = new Students(); Object obj = s.clone(); Students s2 = (Student)obj;
面试题 : ==和equals的区别
-
==
基本类型:比较的是值是否相等
引用类型:比较的是地址值是否相等
-
equals()
只能比较引用类型。默认情况下,比较的是地址值是否相等,但是我们可以根据需要重新该方法
Scanner类
- InputStream is = System.in; //输入流
- Scanner(InputStream is); //构造方法
- hasNextXxx(); //判断是否是某种类型
- nextXxx(); //返回某种类型的元素
String类
<1>构造方法
public String()
空构造public Strin(bute[] bytes)
把字节数组转化为字符串public String(byte[] bytes,int index, int length)
把字节数组的一部分转化为字符串public String(char[] value)
把字符串数组转成字符串public String(char[] value,int index, int count)
把字符串数组的一部分转成字符串
构造方法相关知识
-
a.字符常量池:一旦被赋值就存在于常量池中,不能改变
面试题:下面分别创建了几个对象
String s1 = new String("hello world"); String s2 = "hello world";
区别:前者会创建两个对象,后者会创建一个对象
-
字符串如果是变量相加,先开空间,再拼接。字符串如果是常量相加,是先加,然后在常量池找,如果有直接返回,否则就创建对象
<2>String类的成员方法
A. 判断功能
-
boolean equals (Object obj)
比较字符串的内容是否相同,区分大小写 -
boolean equalsIgnoreCase(String str)
不区分大小写 -
boolean contains(String str)
判断大字符串是否包含小字符串 -
boolean startsWith(String str)
判断字符串是否已某个指定字符串开头 -
boolean endsWith(String str)
判断字符串是否已某个指定字符串结尾 -
boolean isEmpty()
判断字符串内容是否为空注意:
String s = ""; //字符串内容为空 String s = null; //字符串对象为空
B. 转化功能
-
byte[] getBytes()
把字符串转化为字节数组 -
char[] toCharArray()
把字符串转化为字符数组 -
static String valueOf(char[] chs)
把字符数组转化为字符串 -
static String valueOf(int i)
把int类型的数据转化为字符串String类的value方法可以把任意类型的数据转化为字符串
-
String toLowerCase()
把字符串转成小写 -
String toUpperCase()
把字符串转成大写 -
String concat(String str)
把字符串拼接
C.获取功能
-
int length
获取字符串长度 -
char charAt(int index)
获取指定索引位置的字符 -
int indexOf(int ch)
获取指定索引位置的字符 -
int indexOf(int ch, int fromIndex)
返回字符串在指定索引位置之后第一次出现的字符 -
int indexOf(String str)
-
int indexOf(String str, int fromIndex)
-
String subString(int start)
从指定位置截取字符,默认到结尾 -
String subString(int start, int end)
截取字符串,包左不包右已知一个字符串,输出另一个字符串,第一个字符大写,其余小写
String result = s.subString(0,1).toUppserCase().concat(s.subString(1).toLowerCase());
D.其他功能
-
替换功能
Strnig replace(char old, char new)
String replace(String old, String new)
-
去除空格
String trim()
-
按字典顺序比较两个字符串
int compareTo(String str)
相等返回0,大于返回1,小于返回-1int compareToIgnoreCase(String str)
SringBuffer类
线程安全的可变字符串。长度和内容可变,而String不可变
A.构造方法
public StringBuffer
无参构造public StringBuffer(int capacity)
指定容量的字符串缓冲区对象public StringBuffer(String str)
指定字符串内容的缓冲区对象
B.方法
-
public int capacity()
返回当前容量(理论值,默认为16) -
public int length()
返回当前长度(实际值)
C.成员方法
-
public StringBuffer append(String str)
添加功能,任意类型转换为字符串sb.append("hello").append("true").append(12).append(34.56)
-
public StringBuffer insert(int offset, String str)
在指定位置插入字符串 -
public StringBuffer deleteCharAt(int index)
删除指定位置的字符 -
public StringBuffer delete(int start, int end)
-
public StringBuffer replace(int start, int end, String str)
替换字符串,包左不包右 -
public StringBuffer reverse()
反转功能 -
public StringBuffer substring(int start)
截取 -
public SringBuffer substring(int start, int end)
截取,包左不包右
D. StringBuffer与String之间的相互转换
-
String ----> StringBuffer
// 1.通过构造方法 StringBuffer sb = new StringBuffer(s); //2.通过append方法 sb.append(s);
-
StringBuffer ----> String
//1.通过构造方法 String s = new String(sb); //2.通过toString方法 String s = sb.toString();
面试题:String, StringBuffer, StringBuilder的区别?
- String是内容不可变的,而StringBuffer, StringBuilder都是内容可变的
- StringBuffer是同步的,数据安全高,效率低。StringBuilder不是同步的,数据安全低,效率高。
StringBuffer和数组的区别
- 二者都可以看作一个容器,装其他数据
- StringBuffer的数据最终是一个字符串数据,而数组可以存放多种数据,但必须是一种数据类型的
- 形式参数:String作为参数传递,和基本类型是一样的