Java学习总结之包机制概述、import机制、访问控制权限、JDK类库中的根类:Object、内部类

包机制概述

  1. 为什么要使用package
    package是java中包机制。包机制的作用是为了方便程序的管理,不同功能的类分别存放在不同的包下(按照功能划分的不同软件包有不同的功能)
  2. package怎么用?
    package是一个关键字,后面加包名。例如:
    package com.GUT.glut
    注意!
    package语句只允许出现在java源代码的第一行
  3. 包命名规范:
    公司域名倒叙+项目名+模块名+功能名

import机制

  1. import什么时候使用?
    A类中使用B类
    A类和B类都在同一个包下不需要使用import
    A类和B类不在同一个包下需要使用import
  2. import怎么用?
    import只能出现在package语句之下,class声明语句之上。import还可以使用“”的方式
    注意!
    java.lang.
    ;这个包下的类不需要使用import导入

访问控制权限

  1. 访问控制权限有哪些?
    private、protected、public、默认
  2. 控制范围?
    private:表示私有的,只能在本类中访问
    public:表示公开的,在任何位置都可以访问
    默认:表示只能在本类以及同包下访问
    protected:表示只能在本类、同包、子类中访问
    范围从大到小排序:public > protected > 默认 >private
  3. 访问控制权限可以修饰什么?
    属性(4个都能用)
    方法(4个都能用)
    类(public和默认能用,其他不行)
    接口(public和默认能用,其他不行)

JDK类库的根类:Object

  1. Object类中有哪些常用的方法?
protected Object clone()   //负责对象克隆的
boolean equals(Object obj) //判断两个对象是否相等
protected void finalize() //垃圾回收器负责调用的方法
int hashCode() //获取对象哈希值
String toString() //将对象转换成字符串形式
  1. 关于Object类中的toString()方法
  • 源代码:
public String toString(){
       return this.getClass().getName()+"@"+Integer.toHexStringChashCode();
}

源代码上toString()方法的默认实现是:
类名@对象的内存地址转换成十六进制的形式

  • SUN公司设计toString()方法的目的是什么?
    通过调用这个方法可以将一个java对象转换成字符串表现形式

  • 建议所有的子类都去重写toString()方法,toString()方法应该是一个简洁的、详实的、易阅读的方法

  • 如何重写toString()方法?

public String toStirng(){
       return java语句;
}

注意!
输出引用的时候会自动调用该引用的toString()方法

  1. 关于Object类中的equals方法
  • equals方法的源代码
public boolean equals(Object obj){
       return (this == obj);
}
  • SUN公司设计这个方法的目的?
    以后编译的过程中,都要通过equals方法来判断两个对象是否相等。
    equals方法是判断两个对象是否相等的
  • 判断两个对象是否相等,不能使用" = =" ,因为 “= =”比较的是两个对象的内存地址
  • 在Object类中的equals方法当中,默认采用的是“= =”判断两个对象是否相等,所以Object类中的equals方法不够用,需要子类重写equals方法
  • equals如何重写?
public boolean equals(Object obj){
       if(obj == null || !(obj intanceof 比较的对象)){
                 return false;//如果obj为空或者obj不是比较的对象,返回false
       }
       if(this == obj){
                 return ture;//如果this和obj保存的内存地址相同,返回true
       }
       //上述判断都完成,执行到这一步的时候就可以java语句判断两个对象是否相等了
}
  • IDEA生成equals方法?
    Alt+insert 选择要生成的equals方法对应的对象
  • String类已经重写了equals方法,比较两个字符串不能使用“= =”,必须使用equals,equals是通用的,同时,String类也重写了toString()方法
  • 总结!
    java中基本数据类型使用“= =”判断,所有引用数据类型统一使用equals方法来判断是否相等

4.Object类中的finalize()方法

  • 这个方法为protected修饰,在Object类中这个方法的源代码为:
    protected void finalize() throws Throwable{}
  • 这个方法只有一个方法体,里面没有代码,这个方法是protected修饰的
  • finalize()不需要程序员手动调用,JVM的垃圾回收器负责调用这个方法
  • finalize的执行时机:
    当一个java对象即将被垃圾回收期回收时,垃圾回收器负责调用finalize()方法
  • finalize()方法实际上是SUN公司为java程序员准备的一个时机:垃圾销毁时机。如果希望在对象销毁时机执行一段代码的话,这段代码要写到finalize()方法当中
  • java中垃圾回收器不是轻易启动的,垃圾太少或时间没到等种种条件下,有可能启动也有可能不启动

内部类

  1. 什么是内部类?
    内部类:在类的内部又定义了一个新的类,被称为内部类
  2. 内部类的分类:
    静态内部类:类似于静态变量
    实例内部类:类似于实例变量
    局部内部类:类似于局部变量
  3. 使用内部类编写的代码可读性很差,能不用尽量不用
  4. 匿名内部类是局部内部类中的一种,因为这个类没有名字所以叫匿名内部类
  5. 匿名内部类缺点:代码太复杂太乱,可读性太差;类没有名字,只能使用一次不能重复使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值