超类Object和键盘类Scanner

第一部分:Object
一、构造方法
1、无参的构造方法
二、常用方法
(一)hashCode
1、特点
  • 返回该对象的哈希码值,整数。
  • 针对不同的对象返回不同的整数,通过将该对象的内部地址转换成一个整数来实现。
  • 默认使用IDE重写后,会和成员变量有关。
2、分析hashCode方法与HashSet类 
1)哈希算法提高从集合中查找元素的效率,将集合分成若干个区域,每个对象可以计算出一个哈希码。
2)将对象的哈希码分组, 每组分别对应某个存储区域,根据一个对象的哈希码就可以确定该对象应该存储在哪个区域。
2)HashSet底层用的也是数组。
  • 当向数组中利用add(Object o)添加对象的时候,系统先找对象的hashCode。
  • int hc=o.hashCode(); 返回的hashCode为整数值:Int I=hc%n;(n为数组的长度),取得余数后,利用余数向数组中相应的位置添加数据,以n为6为例,如果I=0则放在数组a[0]位置,如果I=1,则放在数组a[1]位置。
  • 如果equals()返回的值为true,则说明数据重复。如果equals()返回的值为false,则再找其他的位置进行比较。这样的机制就导致两个相同的对象有可能重复地添加到数组中,因为他们的hashCode不同。
  • 如果我们能够使两个相同的对象具有相同hashcode,才能在equals()返回为真。
2-参加hash算法的对象的属性,不要去修改,不然会破坏算法。
(二)equals
1、特点:
  • 指示其他某个对象是否与此对象“相等”,内部是使用“==”实现,看源码。
  • 默认情况下比较的是地址值。比较地址值一般来说意义不大,所以我们要重写该方法,用来比较对象的成员变量值是否相同。
  • 像 String 类默认重写了 Object 的equals方法,比较的是内容【值】是否相同。
2、类型的比较
  • ==:
    • 基本类型:比较的就是值是否相同。 
    • 引用类型:比较的就是地址值是否相同
  • equals:
    • 引用类型:默认情况下,比较的是地址值。
    • 不过,我们可以根据情况自己重写该方法。一般重写都是自动生成,比较对象的成员变量值是否相同。
    • String 重写后,比较是值。
3、日常使用:
  • 基本类型,使用“==”比较
  • String 和引用类型使用 “equals”比较
(三)getClass
1、特点:
  • 得到内存中的字节码对象。
  • 反射时使用
(四)toString
1、特点
  • 返回该对象的字符串表示
  • toHexString,把一个整数转成一个十六进制表示的字符串
  • getClass().getName() + "@" + Integer.toHexString(hashCode())
2、建议所有子类都重写该方法。
3、直接输出一个对象的名称,其实就是调用该对象的toString()方法。
(五)finalize
1、特点:
  • 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
  • 用于垃圾回收,但是什么时候回收不确定。
(六)clone 
1、特点:
  • 创建并返回此对象的一个副本。
  • Cloneable:此类实现了 Cloneable 接口,以指示 Object.clone() 方法可以合法地对该类实例进行按字段复制。
    • 这个接口是标记接口,告诉我们实现该接口的类就可以实现对象的复制了。
(七)wait
(八)notify 
(九)notifyAll
第二部分:键盘类:Scanner 
一、特点
1、基本格式: 
  • public boolean hasNextXxx():判断是否是某种类型的元素 
  • public Xxx nextXxx():获取该元素 
2、举例:用int类型的方法举例
  • public boolean hasNextInt() 
  • public int nextInt() 
3、注意:
  • InputMismatchException:输入的和你想要的不匹配
二、问题
1、常用的两个方法:
  • public int nextInt():获取一个int类型的值
  • public String nextLine():获取一个String类型的值
2、一个问题:
  • 先获取一个数值,在获取一个字符串,会出现问题,其他都不会有问题。 
  • 主要原因:就是那个换行符号的问题。因为 Scanner 可以解析正则表达式。
3、如何解决呢?
  • 方法1:先获取一个数值后,在创建一个新的键盘录入对象获取字符串。 
  • 方法2:把所有的数据都先按照字符串获取,然后要什么,你就对应的转换为什么。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值