JavaDay10:面向对象:static静态、代码块、equal关键字、clone克隆

static静态、代码块、equal关键字、clone克隆

static静态

使用static关键字

  • 静态的内容能被共享,是所有的类共享的。
  • 静态的内容在类加载时被初始化,执行先于对象的创建。因此静态不能调用非静态的内容,非静态的内容可以调用静态内容。
  • 静态调用:1.对象名.属性(方法) 2.类名.属性(方法)
    推荐2,只有静态内容的调用可以直接用类名调用,因此能看出是静态内容。

代码块

用一对{ }括起来的代码。
分类:临时代码块、成员代码块、静态代码块

static{
	System.out.println("1---Person 静态代码块");
}
	
{
	System.out.println("2---Person 成员代码块");
}
	
public void eat(){
	{
		System.out.println("hello");
	}// 临时代码块
	System.out.println("一起吃吃吃。。。。。");
}
  • 静态代码块的内容只执行一次,在类加载的时候执行
    Person p =new Person()
    Person p的时候就执行静态代码块内容,new Person()后先执行成员方法,再执行构造方法

  • 成员代码块的执行顺序在构造方法之前

  • 优先顺序为(先从1判断):
    1.静态>非静态 2.父类>子类 3.代码块>构造方法

  • 父类跟子类静态代码块、成员代码块、构造方法执行顺序:
    父类为Person,子类为Student
    情况一: Student s1 = new Student();
    1.父类静态代码块–> 2.子类静态代码块–>3.父类成员代码块–> 4.父类构造方法–>5.子类成员代码块–>6.子类构造方法
    情况二:
    Student s1 = new Student();
    Student s2 = new Student();
    顺序为 1.父类静态代码块–> 2.子类静态代码块–>3.父类成员代码块–> 4.父类构造方法–>5.子类成员代码块–>6.子类构造方法–>7.父类成员代码块–> 8.父类构造方法–>9.子类成员代码块–>10.子类构造方法

    equals关键字

  • equals:比较两个对象是否“相等”,只能用于引用数据类型,不能用于基本数据类型。
    ==:比较对象为基本数据类型时比较的时值,比较对象为引用数据类型时比较的是地址。

  • 重写equals方法
    Object为万类之祖,可以重写父类Object中equals方法

public boolean equals(Object obj) {
       return (this == obj);
   }//Object类中equals方法

重写快捷方法:右键–>Source–>Generate hashCode() and equals()

clone克隆

创建对象有4种方式:new、clone、反射、反序列化
克隆步骤:

  1. 让类实现Cloneable接口

  2. 重写clone方法(默认为protected)为public,扩大访问作用域

public class Person implements Cloneable{//1.实现接口
	
    public String name  ;
	public String sex ;
	public int age ;
	
	@Override//2.重写clone()
	public Object clone() throws CloneNotSupportedException {
		return super.clone();
	}

}
  1. clone()默认返回一个Object类型的对象,调用此方法要对返回的对象进行强转
Person p = new Person();
p.name = "seven";
p.age = 18 ;
p.sex = "男";//浅拷贝,只拷贝属性
		
Person p2 = (Person) p.clone() ;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值