12 api ( Object类 , String类 )

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();
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值