从零开始学Java-Day11
API
Objex(顶级父类):
在不明确给出超类的情况下,Java会自动把Object作为要定义类的超类
package cn.tedu.api;
import java.util.Objects;
//本类用于测试顶级父类Object
public class TestObject {
public static void main(String[] args) {
Student student = new Student("大和赤骥", 3);
Student student2 = new Student("大和赤骥", 3);
System.out.println(student);
System.out.println(student2);
System.out.println(student.hashCode());
System.out.println(student2.hashCode());
/*
*equals()默认实现是==,比较2给对象的地址值
*/
System.out.println(student.equals(student2));
}
}
class Student {
String name;
int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString(){
return "Student{" + "name:" + name + "," + "age:" + age + "}";
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return age == student.age &&
Objects.equals(name, student.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
toString()
- 默认实现打印对象的地址值
- 重写后:打印的是对象的属性和属性值
hashCode():对象的哈希码值,一串数字,用来区分不同的对象
equals():
- equals()默认实现的是==,比较的是地址值
- 重写后比较的是属性值
String 字符串,使用""来包裹
String底层维护了一个char[]
String 创建的两种方式
方式一:char[] value = {'a', 'b', 'c'}; String s = new String(value);--没有高效的效果
方式二:String s = "abc";有高效的效果,存在堆的常量池
package cn.tedu.api;
import javax.jws.soap.SOAPBinding;
//本类用于测试String类的用法
public class TestString {
public static void main(String[] args) {
String s = "abc";
/*字符串底层维护着是一个char[],对象存在堆中*/
char[] value = {'a', 'b', 'c'};
String s1 = new String(value);
String s2 = new String(value);
System.out.println(s1 == s2);//false
/*String底层也重写了equals,比较的是两给串的实际参数而不是地址值*/
System.out.println(s1.equals(s2));//true
System.out.println("================");
/*此种创建方式有一个高效的效果,底层也会new String()存放在堆中的常量池中
* 第二次创建时会查看之前是否创建如果有,就不再创建,效率高,只有这种创建方式才有
* 高效的效果*/
String str = "abc";
String str1 = "abc";
System.out.println(str == str1);//true
System.out.println(str.equals(str1));//true
}
}
package cn.tedu.api;
import java.util.Arrays;
//本类用于测试String常用方法
public class TestString2 {
public static void main(String[] args) {
String s = "abc";
char[] value = {'a', 'b', 'c'};
String s1 = new String(value);
System.out.println(s.charAt(0));//打印下标为0的元素
System.out.println(s.concat("111"));//将"111"链接到字符串末尾
System.out.println(s.startsWith("a"));//判断是否以a开头
System.out.println(s.endsWith("a"));//判断是否以a结尾
System.out.println(s == s1);//判断2给字符串地址是否相同
System.out.println(s.equals(s1));//判断2给字符串的值是否相同
System.out.println(s.length());//打印字符串的长度
System.out.println(s.indexOf('a'));//打印字符串中a的下标
System.out.println(s.indexOf("a"));
System.out.println(s.lastIndexOf('c'));//打印字符串反转中c的下标
System.out.println(s.lastIndexOf("c"));
System.out.println(s.toLowerCase());//使字符串中的字母全都小写
System.out.println(s.toUpperCase());//使字符串中的字母全都大写
System.out.println(s.getBytes());//将字符串转成字节数组
System.out.println(Arrays.toString(s.getBytes()));
String s2 = "a b%c d e";
System.out.println(s2.split("%"));//以%为标记分割字符串
System.out.println(Arrays.toString(s2.split("%")));
s2 = " abcde ";
System.out.println(s2.trim());//去除字符串首尾的空格
System.out.println(s.substring(0,2));//截取0~2位置的字符串左闭右开
System.out.println(String.valueOf(54) + 54);//将整形54转化为字符串的54
}
}
posted on 2021-06-15 18:43 无声specialweek 阅读(31) 评论(0) 编辑 收藏 举报