1 eclipse导入项目,导出项目
2 常用类
object类
每个类都以他为父类(他就是上帝)
成员方法:
(1) public int hashCode()返回该对象的哈希码值
返回值是整数类型
可以理解为地址值 不是实际意义的地址值
默认继承
(2)public final class getClass()
通过这个方法获取当前类的字节码文件对象
返回当前类的运行时类(跟反射有关)
了解:
class类下面有一个
public String getNAme()以String的
形式返回此Class对象所表示的实体名称
}
public class Code{
public static void main (String[] args){
//创建一个对象
Student s = new Student ();
System.out.println(s.hashCode());//366712642哈希码值
Student s1 = new Student ();
System.out.println(s1.hashCode());//1829164700
Student s2 = new Student ();
System.out.println(s2.hashCode());//2018699554 每一次都不一样
System.out.println("================================");
Student s3 = new Student ();
Class c=s3.getClass();//获取当前类的字节码文件对象
System.out.println(c);
String str=c.getName();//获取当前字节码文件对象的全路径名称
System.out.println(str);
}
}
(3)public String toString ()
返回该队象的字符串表示
建议所有子都重写该方法(alt+shift+s-->s)
默认输出对象名称 实际执行toString 没意义 要重写
toString()等价于 某个对象.getClass.getName()+@+integer....
integer 整数转换十六进制
重写后 toString 后获取的是对象的成员信息
就有意义了
//学生类
class Student extends Object {
private String name ;//姓名
private int age ;//年龄
public Student() {
super();
}
public Student(String name, int age) {
super();
this.name = name;
this.age = 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;
}
//重写toString()方法
//自动生成
//@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
//测试类
class Code{
public static void main(String[] args){
//创建学生对象
Student s=new Student();
//toString 会重写
Student ss=new Student("周杰伦",38);
Student sss=new Student("周杰伦",38);
System.out.println(ss);//Student [name=周杰伦, age=38]
System.out.println(sss);//Student [name=周杰伦, age=38]
System.out.println(ss==sss);//flase 地址值不一样
}
}
(4) public boolean equals 默认比较两个对象地址值是否相同
有条件
a) 比较两个类型是否是一致的类型
b)比较地址值没有意义 要比较值
子类要重写 才会有意义
基本类型 比较的是数值是否相同
引用类型 比较的是地址值是否相同
class Student extends Object {
private String name ;//姓名
private int age ;//年龄
public Student() {
super();
}
public Student(String name, int age) {
super();
this.name = name;
this.age = 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;
}
}
class Code{
public static void main(String[] args){
Student s1=new Student("李荣浩",38);
Student s2=new Student("李荣浩",38);
System.out.println(s1==s2);//比较的是地址 没有意义
Student s3=s1;
//重写后(用工具自动会生成)
System.out.println(s1==s2);//ture
}
}
(5) protected void finalize () throws Throwable (异常类;范围最大的)
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法
什么时候回收不用的对象或者一些变量,在GC空闲时回收...(System类使用
protected object clone() 建立并返回此对象的一个副本(复制该对象的字段)
throw CloneNotsuppertedException(浅克隆)
class Student extends Object implements Cloneable {
private String name ;//姓名
private int age ;//年龄
public Student() {
super();
}
public Student(String name, int age) {
super();
this.name = name;
this.age = 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;
}
//重写Clone方法
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
class Code{
public static void main (String [] args) throws CloneNotSupportedException {
Student s= new Student("马云", 45);
System.out.println(s.getName()+"---"+s.getAge());//马云 45
//当前对象的类实现了 cloneable接口就可以使用clone
Object obj=s.clone();//用obj接收
Student s2=(Student) obj;//强制转换
System.out.println(s2.getName()+"---"+s2.getAge());
//马云 45
}
}