StringBuffer常见的方法
1、append():追加连接
2、reverse():翻转字符串
public class TestStringBuffer1{
public static void main(String[] args){
//26个字母
//String str = "abcdefgh....z";
//String str = "";
//for(char x = 'a';x <= 'z';x++){
// str += x;
//}
//System.out.println(str);
StringBuffer buffer = new StringBuffer();
for(char x = 'a';x <= 'z';x++){
//buffer.append(x);
//buffer.append(",");
buffer.append(x).append(",");
}
System.out.println(buffer);
buffer.reverse();
System.out.println(buffer);
}
}
Object类的核心方法
1、clone():"克隆"对象的方法(不常用)
public class TestClone2{
public static void main(String[] args)throws Exception{
Book b1 = new Book("西游记",1983);
Book b2 = b1.clone();
System.out.println(b1 == b2);
}
}
//2:当前的类实现接口
class Book implements Cloneable{
String name;
int year;
public Book(String name,int year){
this.name = name;
this.year = year;
}
//clone() -> 只能在Book类体里面使用
//1:将继承得到的clone()权限改大
@Override
public Book clone()throws CloneNotSupportedException{
Object obj = super.clone();
return (Book)obj;
}
}
2、toString():制定一个对象打印显示的内容。
每一个引用数据类型都有toString(),在toString()没有覆盖的时候和Object类型保持一致,在。
Object类中toString() -> 类型@XXXX,如果对Object类显示的效果不满意 可以覆盖toString()方法。
@Override
public String toString(){
return name;
}
3、equals():制定一个类型的比较规则,只要XXX一样就视为相等对象。
每一个引用数据类型都有equals()方法 在没有覆盖的时候比较地址,如果不想要比较地址。
@Override
public boolean equals(Object obj){//a.equals(b)
//只要两个学生的姓名一样视为相等对象
Student x = this;//调用者
Student y = (Student)obj;//参数对象
//分别得到他们的姓名
String n1 = x.name;//调用者的姓名
String n2 = y.name;//参数对象的名字
//比较
return n1.equals(n2);
}
4、hashCode():生成一个对象的散列特征码
注意:当此方法【equals】被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
x.equals(y) = true x.hashCode() == y.hashCode()
public class TestHashCode1{
public static void main(String[] aargs){
String x = new String("etoak");
String y = new String("etoak");
System.out.println(x.equals(y));
System.out.println(x.hashCode());
System.out.println(y.hashCode());
Student a = new Student("张三");
Student b = new Student("张三");
System.out.println(a.equals(b));
System.out.println(a.hashCode());
System.out.println(b.hashCode());
}
}
/**
Object
toString():打印对象 -》 类型@XXX
equals():比较内容 -》 比较地址
hashCode():得到哈希码值 -》 通过地址计算哈希码值
String Student
toString():StringXXXX toString():Student@XXX
equals():比较对象地址 equals():比较地址
hashCode():通过地址计算哈希码值 hashCode():地址生成哈希码值
方法覆盖: 方法覆盖:
toString():内容
equals():内容 equals():name
hashCode():通过内容
*/
class Student{//extends Object -> hashCode()
String name;//
public Student(String name){
this.name = name;
}
@Override
public boolean equals(Object obj){//obj = cat
if(obj == null)return false;
if(!(obj instanceof Student))return false;
if(obj == this)return true;
Student s1 = this;
Student s2 = (Student)obj;
String n1 = s1.name;
String n2 = s2.name;
return n1.equals(n2);
}
@Override
public int hashCode(){
return name.hashCode();
}
}
ArrayList的核心方法
1、list.add(元素);
将指定的元素追加到此列表的末尾。
2、list.add(下标,元素);
Collections.addAll(集合,元素,元素…); 一次添加多个元素
在此列表中的指定位置插入指定的元素。
3、list.contains(元素)
如果此列表包含指定的元素,则返回 true 。
4、list.get(下标)
返回此列表中指定位置的元素。
5、list.indexOf(元素)
返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1.
6、list.lastIndexOf(元素)
返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1
7、list.isEmpty()
如果此列表不包含元素,则返回 true 。
8、list.set(下标,元素)
用指定的元素替换此列表中指定位置的元素。
9、size()
返回此列表中的元素数。 得到集合大小。
10、Object[] data = list.toArray()
将集合中的元素装进Object[] ;
11、remove(int 下标)
删除该列表中指定位置的元素。 底层从elementdate数组里面将后面的下标往前面移动一位
12、remove(Object 元素)
从列表中删除指定元素的第一个出现(如果存在)。 底层拿着被删除的元素和集合中其他得到元素做equals()。
ArrayList的构造方法
1、ArrayList list = new ArrayList list();
2、ArrayList list = new ArrayList list(int 容量);
3、ArrayList list = new ArrayList list(单值集合);
迭代器的三个方法
1、hasNext():检查序列中是否还有元素。
2、next();获得序列中的下一个元素。
3、remove();将迭代器新返回的元素删除。当我们使用迭代器在遍历集合的时候 不允许对集合的整体进行添加/删除操作 否触发CME异常,如果在遍历的时候想要删除的话 使用迭代器的删除方法。
import java.util.*;
public class TestArrayList5{
/**
当我们使用迭代器在遍历集合的时候 不允许对集合的整体
进行添加/删除操作 否则触发CME异常
CME异常=ConcurrentModificationException = 并发修改异常
forEach底层基于迭代器实现的
如果我们想要一边遍历的同时对集合进行删除的话:
使用迭代器的删除方法
*/
public static void main(String[] args){
ArrayList<Integer> list = new ArrayList<>();
Collections.addAll(list,45,30,66,13,88,72,51);
//删除所有不及格的成绩
//for + 下标
/*
for(int x = 0;x < list.size();x++){
if(list.get(x) < 60){
list.remove(x);
}
}*/
//foreach
/*
for(Integer x : list){
if(x < 60){
//ConcurrentModificationException
list.remove(x);
}
}*/
//迭代器
for(Iterator<Integer> car = list.iterator();car.hasNext();){
Integer x = car.next();
if(x < 60){
//list.remove(x);
car.remove();
}
}
System.out.println(list);
}
}