java -- Object类
2020-12-13 15:41
标签:饿汉 工具类 -- 创建 自定义类 ret int java 思考 答:1).Object类是所有类的父类,位于java.lang包中。 2).数组也是Object类的子类。 3).Object类的常用方法有: --- toString(); --- equals(); --- hashCode(); ---..... * 1.Object类中的equals方法 1.== : 如果比较的是基本数据类型,那么比较的是具体的值 1.设计模式:设计模式是在大量的实践中总结和理论化之后优选的代码结构,编码风格,以及解决问题的思考方式 2.常见的有23中设计模式:单例设计模式,代理设计模式,装饰设计模式,观察者设计模式..... 3.单例设计模式:在一个项目中某个类中只有一个对象 4. 懒汉式和饿汉式的区别? 1.static修饰变量:类变量 2.static修饰方法:静态方法 3.思考?什么时候使用static修饰属性和方法 static修饰属性: 类加载的过程 在Object类中的定义为: 是一个本地方法,返回的对象的地址值。 但是,同样的思路,在String等封装类中对此方法进行了重写。方法调用得到一个计算公式得到的 int值 答:toString方法可以将任何一个对象转换成字符串返回,返回值的生成算法为:getClass().getName() + ‘@’ + Integer. toHexString(hashCode())。 例1):打印对象时直接调用类的toString方法 public static void main(){ Student stu1 = new Student(); stu1.setName(“张三”); stu1.setAge(23); System.out.println(stu1); System.out.println(stu1); } 打印: Student@152b6651; 例2).类本身重写toString方法重写Student类的toString方法后 public static void main(){ Student stu1 = new Student(); stu1.setName(“张三”); Stu1.setAge(23); System.out.println(stu1); } 打印:Student:name = 张三,age = 23; 例3).public class Student{ Private String name = “123”; //学生姓名 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 String toString(){ Return “Student:” + “name=” + name + “,age=” + age; } } java -- Object类 标签:饿汉 工具类 -- 创建 自定义类 ret int java 思考 原文地址:https://www.cnblogs.com/jiujiang/p/11613848.html一.什么是Object类?有哪些常用方法?
二.equals方法
* public boolean equals(Object obj){
return (this == obj);
}
* 2.像String,Data这些类已经重写了equals方法,用来比较内容
* 3.往往我们在自定义类中都会重写equals方法,用来进行内容的比较。
如果不重写equals方法,那么就会默认调用Object类中的equals方法进行地址值的比较。+面试题]==和equals的区别?
如果比较的是引用数据类型,那么比较的是地址值(两个引用是否只指向同一对象)
2.equals:如果不重写equals方法,那么默认调用Object类中的equals方法进行地址值比较。
如果重写了equals方法,那么就进行内容的比较。 // 重写equals方法进行属性内容的比较
@Override
public boolean equals(Object obj) {
if(this == obj) { // 说明两个对象是同一个
return true;
}
if(obj instanceof Person) {
Person p = (Person)obj; // 向下转型
return this.name.equals(p.name) && this.age == p.age;
}
return false;
三.设计模块
1.饿汉式:线程安全的 2.懒汉式:线程不安全的,但是延迟了对象创建的时机。// 懒汉式: 线程不安全的,但是延迟了对象创建的时机,一定程度上减少了内存的开销
class Bank2{
// 私有化构造器
private Bank2() {};
private static Bank2 bank = null;
public static Bank2 getSingleton() {
if(bank == null) {
bank = new Bank2();
}
return bank;
}
}
// 饿汉式: 线程安全的
class Bank{
// 私有化构造器
private Bank() {}
// 类内部创建一个私有化对象
private static Bank bank = new Bank();
// 创建一个共有方法获取对象
public static Bank getSingleton() {
return bank;
}
}
四.static
1.同一个类的对象共同拥有一份类变量。每个对象各自拥有一份实例变量
当一个对象对类变量进行修改后,其它的对象看到的都是修改后的类变量
2.类变量是随着类的加载而加载的,而实例变量是随着对象的创建而创建
3.类加载只加载一次
4.如何调用类变量:类名.类变量名 对象名.类变量名
1.静态方法是随着类的加载而加载的。
2.调用静态方法:类名.静态方法名 对象名.静态方法名
3.静态方法中不能调用,实例变量和非静态方法,非静态方法中可以调用类变量和静态方法
4.静态方法中不能使用"this"和"super"
1.当一个变量为常量时必须使用static修饰
2.当多个对象共同使用一份属性时使用static修饰。
static修饰方法:
1.工具类中的方法一般都是用static修饰
2.有时为了调用类变量,方法也会使用static修饰
a.当我们创建对象时,首先会在方法区查找该类的信息
b.如果方法区没有该类的信息,这是便会进行类加载。如果方法区有该类的信息则直接创建对象
c.类加载:将字节码文件加载到JVM中,同时在方法区特定的区域用来存放类变量
d.类加载完成后,再来创建对象
f.再次创建对象时仍在方法区查找该类的信息。如果存在将不再进行类加载(类加载只加载一次)五.hashCode()
public native int hashCode();
六.什么是toString方法?举例说明