Java基础知识

Java语言特点

  • 简单易学
  • 面向对象(封装、继承、多态)
  • 平台无关性(Java虚拟机实现平台无关性)
  • 可靠性
  • 安全性
  • 动态性
  • 高性能
  • 支持多线程
  • 支持网络编程
  • 编译与解释并存

高性能:Java是一种先编译后解释的语言,所以它不如全编译性语言快。但是有些情况下性能是很要紧的,为了支持这些情况,Java设计者制作了“及时”编译程序,它能在运行时把Java字节码翻译成特定CPU(中央处理器)的机器代码,也就是实现全编译了。

动态性:Java语言设计成适应于变化的环境,它是一个动态的语言。例如,Java中的类是根据需要载入的,甚至有些是通过网络获取的。

==equalshashCode()区别

  • ==
    • 基本数据类型比较的是值是否相等
    • 引用数据类型(数组、对象等)比较的是内存地址是否相等
  • equals()
    • 类重写了equals()方法,根据equals() 具体的逻辑判断两个对象是否相等
    • 如果没有重写,equals()内部直接调用==比较两个对象的地址,等价于==
  • hashCode()
    • 默认的hashCode()方法返回对象的地址
    • 一般重写equals(),通常需要重写hashCode()
    • 在散列表中,需要先通过hashCode()计算出哈希码,如果哈希表中没有相符的hashCode,则认为该对象没有出现;如果存在有相同hashCode的对象,则会通过equals()比较hashCode相同的对象的内容是否相等。

hashCode和equals的相关规定

  • 如果两个对象相等,则hashCode一定是相同的
  • 两个对象相等,对两个对象分别调用equals方法均返回true
  • 两个对象有相同的hashCode值,他们不一定是相等的(哈希表中)
  • 如果equals()方法被重写,则hashCode()也必须要重写
  • hashCode() 的默认行为是对堆上的对象产生独特值。如果没有重写 hashCode(),则该类的两个对象无论如何都不会相等(即使这两个对象具有相同的数据)

JDK和JRE

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

请我喝杯咖啡吧~

支付宝
微信