1.String类
-
字符串是常量,创建之后不可改变
-
字符串字面量存储在字符串池中,可以共享
-
String s = "hello";产生一个对象,字符串池中存储
-
String s = new String("hello");产生两个对象,堆、池各存储一个
常用方法
-
public int length():返回字符串的长度
-
public char charAt(int index):根据线下表获取字符
-
public boolean contains(String str): 判断当前字符串中是否包含str
-
public char[] toCharArray():将字符串转换成数组
-
public int indexOf(String str):查找str首次出现的下标,存在,则返回该下标;不存在,则返回 -1;
-
public int lastindexOf(String str):查找字符串在当前字符串中最后一次出现的下标索引
-
public String trim():去掉字符串前后的空格
-
public String toUpperCase():将小写转成大写
-
public boolean endWith(String str):判断字符串是否以str结尾
-
public String replace(char oldChar,char new Char); 将旧字符串替换成新字符串
-
public String[] split(String str):根据str做拆分
2.Object类
-
超类、基类,所有类的直接或间接父类,位于继承树的最顶层
-
任何类,如果没有书写extends显示继承某个类,都默认直接继承Object类,否则为间接继承
-
Object类中所定义的方法,是所有对象都具备的方法
-
Object类型可以储存任何对象
-
作为参数,可接受任何对象
-
作为返回值,可返回任何对象
-
1.getClass()方法
-
public final Class<?> getClass(){}
-
返回引用中储存的实际对象类型
-
应用:通常用于判断两个引用中实际存储对象类型是否一致
public class Student {
private String name;
private int age ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
}
p
ublic class TestStudent {
public static void main(String[] args) {
Student s1 = new Student("aaa",20);
Student s2 = new Student("bbb",22);
//判断s1和s2是不是同一个类型(getClass方法)
Class class1 = s1.getClass();
Class class2= s2.getClass();
if(class1==class2){
System.out.println("s1和s2属于同一个类型");
}else {
System.out.println("s1和s2不属于同一个类型");
}
}//结果输出,属于同一个类
}
2.hashCode()方法
-
public int hashCode(){}
-
返回该对象的哈希码值
-
哈希值根据对象的地址或字符串或数字使用hash算法计算出来的int类型的数值
-
一般情况下相同对象返回相同哈希码
//hashCode方法
System.out.println(s1.hashCode());//460141958
System.out.println(s2.hashCode());//1163157884
Student s3 = s1;
System.out.println(s3.hashCode());//460141958 与s1相等
3.toString()方法
-
public String toString(){}
-
返回该对象的字符串表示
-
可以根据程序需求覆盖该方法 如:展示对象各个属性值
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
4.equals()方法
-
public boolean equals(Object obj){}
-
默认实现为(this == obj),比较两个对象地址是否相同
-
可进行覆盖,比较两个对象的内容是否相同
//equals方法,判断两个对象是否相等 System.out.println(s1.equals(s2));//false
public boolean equals(Object obj) { return (this == obj); }
5.finalize()方法
-
当对象被判定为垃圾对象是,由JVM自动调用此方法,用以标记垃圾对象,进入回收队列
-
垃圾对象:没有有效引用指向此对象时,为垃圾对象
-
垃圾回收:由GC销毁垃圾对象,释放数据存储空间
-
自动回收机制:JVM的内存耗尽,一次性回收所有垃圾对象
-
手动回收机制:使用System.gc():通知JVM执行垃圾回收
类型转换与装箱、拆箱
-
Number父类中提供6个共性方法
-
parseXXX()静态方法
public class demo1 {
public static void main(String[] args) {
//类型转换:装箱,基本类型转成应用类型的过程
int num1 = 18 ;
//引用Inter类创建对象
Integer integer = new Integer(num1);
Integer integer1 = Integer.valueOf(num1);
System.out.println("装箱");
System.out.println(integer);//18
System.out.println(integer1);//18
//类型转换:拆箱,引用类型转成基本类型
Integer integer2 = new Integer(100);
int num2=integer2.intValue();
System.out.println("拆箱");
System.out.println(num2);//100
//jdk1.5之后,提供自动装箱和拆箱
int age = 30;
//自动装箱
Integer integer3 = age;
System.out.println(integer3);//30
//自动拆箱
int age2=integer3;
System.out.println(age2);//30
System.out.println("---------------------------");
//基本类型和字符串之间转换
//1 基本类型转成字符串
int n1 =100 ;
//1.1使用+号
String s1 = n1+"";
System.out.println(s1.getClass().getName());
//1.2使用Integer中的toString()方法
String s2 = Integer.toString(n1);
System.out.println(s1);//100
System.out.println(s2);//100
//2.字符串转成基本类型
String str = "150" ;
//使用Integer.parseXXX();
int n2=Integer.parseInt(str);
System.out.println(n2);//150
//boolean 字符串形式转成基本类型“true”-->true
String str2 = "true";
boolean b1 = Boolean.parseBoolean(str2);
System.out.println(b1);//true
}
}