equals方法、包装类、static关键字、单例的设计模式、代码块

==符号使用
(1)如果比较的是基本数据类型,比较两个变量保存的数据是否相等(不一定类型一致,除了boolen类型)
(2)引用数据类型:比较两个对象的地址值是否相等,即两个引用是否指向同一个对象实体
equals()方法的使用
只能适用于引用数据类型
Object类中定义的equals方法和==的作用是相同的,但是Object类的一些子类,如String、Date,File等子类重写了equals方法,重写后比较的是两个对象的“实体内容”是否相同
包装类和基本数据类型的转换
自动装箱:基本数据类型转换为包装类
自动拆箱:包装类转化为基本数据类型

基本数据类型和包装类转换为String类型
调用String重载的valueOf(Xxx,xxx);
String类型转换为基本数据类型和包装类
调用包装类的parseXxx()方法
数组也是Object类的一个子类
给Integer赋值的范围在-128~127范围内,可以直接使用数组中的元素,不用再去new了,目的:提高效率
static关键字:静态的
特点:
随着类的加载而加载
优先于对象存在
修饰的成员,被所有对象所共享
访问权限允许时,可不创建对象,直接被类调用
static修饰属性:静态变量
1、属性、按照是否使用static修饰,分为静态属性和非静态属性(实例变量)
实例变量:创建多个对象的时候,每个对象都有独立的拥有一套类中的非静态属性,当我们修改了一个对象的时候,其他对象的相同属性值不会被修改
静态变量:创建多个对象的时候,多个对象共享同一个静态变量,当我们修改了一个对象的时候,其他对象的相同属性值也会被修改
其他的说明:
(1)静态变量会随着类的加载而加载,可以通过类.静态变量的方式来调用
(2)静态变量的加载要早于对象的创建
(3)在内存中只有一份,存在于方法区的静态域中
2、方法
通过“类。静态方法”来调用
静态方法中只能调用静态的方法或属性
非静态方法,及可以调用非静态的方法或属性,也可以调用静态的方法或属性
怎么判断一个属性要不要用static?
看属性是不是被多个对象共享的,不会随着对象的不同而不同
怎么判断一个方法要不要用static?
(1)操作静态的属性的方法,通常设置为static
(2)工具类中的方法
单例的设计模式
概念:采取一定的方法保证在整个系统中,对某个类只能存在一个对象实例
区分饿汉式和懒汉式
饿汉式:
好处:线程安全
坏处:加载时间过长
懒汉式
好处:延长对象的创建
坏处:线程可能不安全,可以调优
//饿汉式
class Bank{

//1.私有化类的构造器
private Bank(){
	
}

//2.内部创建类的对象
//4.要求此对象也必须声明为静态的
private static Bank instance = new Bank();

//3.提供公共的静态的方法,返回类的对象
public static Bank getInstance(){
	return instance;
}

}

/*

  • 单例模式的懒汉式实现

*/
public class SingletonTest2 {
public static void main(String[] args) {

	Order order1 = Order.getInstance();
	Order order2 = Order.getInstance();
	
	System.out.println(order1 == order2);
	
}

}

class Order{

//1.私有化类的构造器
private Order(){
	
}

//2.声明当前类对象,没有初始化
//4.此对象也必须声明为static的
private static Order instance = null;

//3.声明public、static的返回当前类对象的方法
public static Order getInstance(){
	
	if(instance == null){
		
		instance = new Order();
		
	}
	return instance;
}

}
代码块
类的成员之四:代码块(或初始化块)
*

    1. 代码块的作用:用来初始化类、对象
    1. 代码块如果有修饰的话,只能使用static.
    1. 分类:静态代码块 vs 非静态代码块
    1. 静态代码块
  • >内部可以有输出语句
    
  • >随着类的加载而执行,而且只执行一次
    
  • >作用:初始化类的信息
    
  • >如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行
    
  • >静态代码块的执行要优先于非静态代码块的执行
    
  • >静态代码块内只能调用静态的属性、静态的方法,不能调用非静态的结构
    
    1. 非静态代码块
  •  >内部可以有输出语句
    
  •  >随着对象的创建而执行
    
  •  >每创建一个对象,就执行一次非静态代码块
    
  •  >作用:可以在创建对象时,对对象的属性等进行初始化
    
  •  >如果一个类中定义了多个非静态代码块,则按照声明的先后顺序执行
    
  •  >非静态代码块内可以调用静态的属性、静态的方法,或非静态的属性、非静态的方法
    

*/
对象赋值的顺序
对属性可以赋值的位置:

  • ①默认初始化
  • ②显式初始化/⑤在代码块中赋值
  • ③构造器中初始化
  • ④有了对象以后,可以通过"对象.属性"或"对象.方法"的方式,进行赋值
  • 执行的先后顺序:① - ② / ⑤ - ③ - ④
    本文章为本人复习面向对象所写,主要参考了尚硅谷的课程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值