12
Object
构造方法
public Object
成员方法
public final Class<?> getClass() //获得Class对象,该对象中包含所有类的信息
public int hashCOde() //返回对象的hashCOde值,一般通过该对象的内部地址转换成一个整数
public String toString() //对象的字符串形式,可重写,建议所有子类重写该方法
public boolean equals() //判断两个对象是否是同一对象,字符串中"=="用来比较地址值是否相同.equals()用来比较字符串内容是否相同
hashCode()和equals()方法
- hashCode() :
- hashCode默认比较的是地址值
- 如果两个对象的hashCode值不同 , 代表他们一定不是同一个对象
- 如果两个对象的hashCode值相同 , 他们也不一定是同一个对象
-
equals() :
- 判断两个对象是否是同一个对象 ,可重写
-
用法 :
- 一般我们在比较对象是否是同一个对象时 , 是同时使用hashCode()和equals()
***1.***先用hashCode()作比较 :
如果hashCode不同 : 一定不是同一个对象
如果hashCode相同 : 不一定 , 继续用equals()作比较
equals为true , 说明是同一个对象
equals为false , 说明不是同一个对象
***2.***为了保证equals和hashCode结果的一致性
我们在重写equals()方法时 , 也要重写hashCode()
自动重写hashCode()和equals() : 右键->source-> generate hashCode and equals
String
构造方法
public String() //创建一个空字符串
public String(byte[] byte) //把一个byte类型的数组转换成字符串
public String(byte[] byte,int offset,int length) //把一个byte类型的数组转换成字符串,从offset开始,转换length个长度 offset:偏移量 length:长度
public String(char[] value) //把一个char类型数组转换成字符串
public String(char[] value,int offset,int count) //把一个char类型的数组转换成字符串,从offset开始,转换count个数量
public String(String original) //初始化一个新创建的String对象,使其表示一个与参数相同的字符序列
public class StringDemo1{
public static void main(String[] args) {
String s1 = new String();
System.out.println(s1);
System.out.println("================");
byte[] by = new byte[] {97,98,99,100,101,102};
String s2 = new String(by);
System.out.println(s2);
System.out.println("================");
String s3 = new String(by, 1, 3);
System.out.println(s3);
System.out.println("================");
char[] ch = new char[] {'春','夏','秋','冬'};
String s4 = new String(ch);
System.out.println(s4);
System.out.println("================");
String s5 = new String(ch, 1, 2);
System.out.println(s5);
String s6 = new String("helloworld");
String s7 = "HelloWorld";
System.out.println(s6==s7);
}
}
附:
- 直接赋值 , 存储在常量池中的 , 相同内容的字符串在常量池中值存储一份 , 共用一份
- 使用new创建 , 存储在堆空间中
String s1 = "helloworld";
String s2 = new String("HelloWorld");
- 使用"+"拼接字符串时
- 如果拼接的内容中存在变量 : 存放在堆内存中(底层使用new StringBuilder)
- 如果都是常量 : 存放在常量池中
成员方法
判断功能
boolean equals(Objct obj) //比较字符串的内容
boolean equalsI gnoreCase(String str) //忽略大小写比较字符串的内容
boolean contains(String str) //判断是否包含
boolean startsWith(String str) //判断是否以...开头
boolean endWith(String str) //判断是否以...结尾
boolean isEmpty() //判断是否为空串
public class StringDemo2{
public static void main(String[] args) {
String s1 = "java";
String s2 = "Java";
System.out.println(s1.equals(s2));
System.out.println("===========================");
System.out.println(s1.equalsIgnoreCase(s2));
System.out.println("===========================");
String ss = "javaphpphyoncalajs";
System.out.println(ss.contains(s1));
System.out.println("===========================");
System.out.println(ss.startsWith(s1));
System.out.println("===========================");
System.out.println(ss.endsWith("ajs"));
System.out.println("===========================");
String s3 = "";
String s4 = null;
System.out.println(s3.isEmpty());
System.out.println("===========================");
//System.out.println(s4.isEmpty());//空指针异常
System.out.println("===========================");
}
}
获取功能
int length() //获取字符串的长度
char charAt(int index) //返回指定索处的char值
int indexOf(String str) //返回str在字符串中第一次出现的索引位置,不存在返回-1
String substring(int start) //截取字符串,从start一直截取到最后,包含start
String substring(int start,int end) //截取字符产,[start-end),包含start,不包含end
public class StringDemo3 {
public static void main(String[] args) {
String ss = "woaijavafeichangaijavahenaijavaaisijavale";
String s = "java";
int i = ss.indexOf(s);
int count = 0;
while (i != -1) {
count++;
i = ss.indexOf(s, i+s.length());
}
System.out.println("java在这个字符串中一共出现了" + count + "次");
}
}
转换功能
byte[] getBytes() //把一个字符串转成byte类型的数组
char[] toCharArray() //转成char类型的数组
static String valueOf(int i) //把int类型转成字符串
String toLowerCase() //转成小写
String toUpperCase() //转成大写
String concat(String str) //字符串的拼接
public class StringDemo4 {
public static void main(String[] args) {
String ss = "aBcd";
byte[] by = ss.getBytes();
for (int i = 0; i < args.length; i++) {
System.out.println(by[i]);
}
char[] ch = ss.toCharArray();
for (int i = 0; i < ch.length; i++) {
System.out.println(ch[i]);
}
int a = 10;
String s = a + "";
System.out.println(s);
System.out.println(s instanceof String);
String v = String.valueOf(a);
System.out.println(v);
System.out.println(v instanceof String);
System.out.println(ss.toLowerCase());
System.out.println(ss.toUpperCase());
String st = ss.concat("java");
System.out.println(st);
}
}
其他功能
String replace(char old,char new) //替换
String relace(String ole,String new) //替换
String trim() //去除首尾空格
int compareTo(String str) //按照字典顺序比较
int compareToIgnoreCase(String str) //不区分大小写按照字典顺序比较
String[] split(String regex) //根据括号内的字符串对大串进行切割操作
public class StringDemo5 {
public static void main(String[] args) {
String str = "hello";
String str1 = str.replace('e', 'o');
System.out.println(str1);
String str2 = str.replace("llo", "java");
System.out.println(str2);
String s = " java python php c ";
String tr = s.trim();
System.out.println(tr);
String ss1 = "abcdef";
String ss2 = "abcdefghthy";
System.out.println(ss1.compareTo(ss2));
}
}
public class StringDemo6 {
public static void main(String[] args) {
String string = "小明,男,29;小红,女,20;小花,男,25;小绿,男,26";
// 按分号进行切割
String[] split = string.split(";");
Student[] stuArr = new Student[split.length];
for (int i = 0; i < split.length; i++) {
System.out.println(split[i]);
// 二次切割
String[] elements = split[i].split(",");
// 进行赋值
Student stu = new Student(elements[0], elements[1], elements[2]);
// 将对象存到数组中
stuArr[i] = stu;
}
for (int i = 0; i < stuArr.length; i++) {
System.out.println(stuArr[i]);
}
}
}
class Student {
String name;
String sex;
String age;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String name, String sex, String age) {
super();
this.name = name;
this.sex = sex;
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", sex=" + sex + ", age=" + age + "]";
}
}
StringBuffer/StringBuider
区别
- StringBuilder/StringBuffer
- StringBuilder : 线程不安全的 , 效率高
- StringBuffer : 线程安全的
- String 和 StringBuffer/StringBuilder
- String : 每次更改 , 创建新的对象 , 性能低
- StringBuilder: 不需要创建新的 , 效率高
构造方法
public StringBuffer()
public StringBuffer(int capacity)
public StringBuffer(String str)
成员方法
**添加功能**
public StringBuffer append(String str) //追加
public StringBuffer insert(int offset,String str) //插入
**删除功能**
public StringBuffer deleteCharAt(int index) //删除执行索引对应的字符
public StringBuffer delete(int start,int end) // 删除从[start-end)
**替换功能**
public StringBuffer replace(int start,int end,String str) //替换
**反转功能**
public StringBuffer reverse() // 反转
**截取功能**
public String substring(int start) //字符串的截取
public String substring(int start,int end)
public class StringBufferDemo1 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append(true).append("halou").append(false).append(12);
System.out.println(sb);
sb.insert(4, "javajava");
System.out.println(sb);
sb.delete(4, 12);
System.out.println(sb);
sb.replace(4, 9, "hello");
System.out.println(sb);
sb.reverse();
System.out.println(sb);
String str = sb.substring(0, 4);
System.out.println(str);
}
}
public class StringBufferDemo2 {
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5, 6, 7 };
String str = printArr(arr);
System.out.println(str);
System.out.println(Arrays.toString(arr));
}
public static String printArr(int[] arr) {
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
sb.append(arr[i] + "]");
} else {
sb.append(arr[i] + ", ");
}
}
return sb.toString();
}
}