JAVA笔记(三)

一.equals()的使用

  1. 是一个方法,而非运算符
  2. 只能适用于引用数据类型
  3. Object类中equals()的定义: public Boolean equals(Object obj){

return(this==obj);}

    4.说明:Object类中定义的equals()和==的作用是相同的:比较俩个对象的地址值是否相同,即俩个引用是否指向同一个对象实体

    5.像String、Date、File、包装类等都重写了Object类中的equals(),重写后,比较的不是俩个引用的地址是否相同,而是比较俩个对象的“实体内容”是否相同。

    6.通常情况下,我们自定义的类如果使用equals()的话,也通常是比较俩个对象的“实体内容”是否相同,那么,我们就需要对Object类中的equals()进行重写,

    7.重写的原则:比较俩个对象的“实体内容”是否相同。

二.==:运算符

  1. 可以使用在基本数据类型变量和引用数据类型变量中
  2. 如果比较的是基本数据类型变量:比较俩个变量保存的数据是否相等。(不一定类型要相同)
  3. 比较的是引用数据类型变量:比较两个对象的地址值是否相同,即俩个引用是否指向同一个对象实体
  4. 补充 :==符号使用时,必须保证符号左右俩边的变量类型一致

三.toString()的使用

当我们输出一个对象的引用时(输出地址),实际上就是调用当前对象的toString()

Date now=new Date(); System.out.println(“now=”+now); 相当于 System.out.println(“now=”+now.toString());

四.static 静态 关键字

  1. 可以用来修饰的结构:主要用来修饰类的内部结构(属性、方法、代码块、内部类)
  2. 属性,是否使用static修饰,分为   静态属性、非静态属性(实例变量)
    1. 实例变量:我们创建了类的多个对象,每个对象都独立的拥有一套类中的非静态属性,当修改其中一个对象中的非静态属性时,不会导致其他对象中同样的属性的值的修改。
    2. 静态变量:我们创建了类的多个对象,多个对象共享同一个静态变量,当通过某一个对象修改静态变量时,会导致其他对象调用此静态变量时,是修改过的。
  3. static修饰属性的其他说明:
    1. 静态变量随着类的加载而加载,可以通过 类.静态变量 的方式进行调用
    2. 静态变量的加载要早于对象的创建
    3. 由于类只会加载一次,则静态变量在内存中也只会存在一份:存在方法区的静态域中
  4. 方法:静态方法,类方法
    1. 随着类的加载而加载,可以通过 类.静态方法  的方式进行调用
    2. 静态方法中,只能调用静态的方法或属性,非静态方法中,既可以用非静态的也可以用静态的
  5. 注意点:在静态的方法内,不能使用this、super关键字

 

五.单例模式之饿汉式

class  类名{

1.私有化类的构造器

private 类名(){}

2.内部创建类的对象,要求此对象也必须声明为静态的

private static 类名 instance=new 类名();

                     3.提供公共的静态的方法,返回类的对象

                          public static 类名 getInstance(){

                            return instance;

                     }

懒汉式

class  类名{

1.私有化类的构造器

private 类名(){}

2.声明当前类对象,没有初始化,要求此对象也必须声明为静态的

private static 类名 instance=null;

                     3.提供公共的静态的方法,返回类的对象

                          public static 类名 getInstance(){

                            if(instance==null)

                                   instance=new 类名();

                            return instance;

                     }

 

六.代码块

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

由父及子,静态先行

七.赋值的位置,执行的顺序

  1. 默认初始化
  2. 显式初始化/在代码块中赋值
  3. 构造器中初始化
  4. 有对象后,可以通过 对象.属性 或 对象.方法 的方式进行赋值

八.final 最终的  关键字

  1. 可用来修饰:类、方法、变量
  2. 修饰类:此类不能被其他类所继承(如String类、System类、StringBuffer类)
  3. 修饰方法:表明此方法不可被重写(如Object类中的getClass())
  4. 修饰变量:此时的“变量”就称为一个常量
    1. 修饰属性:可以考虑赋值的位置:显式初始化、代码块中初始化、构造器中中初始化
    2. 修饰局部变量:尤其是修饰形参时,表明此形参是一个常量,当我们调用此方法时,给常量形参赋一个实参,一旦赋值以后,就只能在方法体内使用此形参,且不能进行重新赋值
    3. static final 修饰属性:全局常量

九.abstract    抽象的  关键字

  1. 用来修饰的结构:类、方法
  2. 修饰类:抽象类
    1. 此类不能实例化
    2. 抽象类中一定有构造器,便于子类实例化时调用
    3. 开发中,都会提供抽象类的子类,让子类对象实例化,完成相关操作
  3. 修饰方法:抽象方法
    1. 抽象方法只有方法的声明,没有方法体
    2. 包含抽象方法的类,一定是抽象类(因为如果不是抽象类就可以创造对象,可以调用方法,但是抽象方法没有方法体,无法调用,所以要保证不能创造对象),反之,抽象类中可以没有抽象方法
    3. 若子类重写了父类中的所有的抽象方法后,此子类才可以实例化,不然该子类也是个抽象类
  4. 注意点:abstract不能用来修饰私有方法、静态方法、final的方法和类

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值