【Java】语法特性篇

语法特性篇

Java对象的比较

1. 对象比较的问题

  • Java中引用类型的变量不能直接按照 > 或者 < 方式进行比较
  • 那为什么==可以比较?
    • 因为:对于用户实现自定义类型,都默认继承自Object类,而Object类中提供了equal方法,而==默认情况下调 用的就是equal方法,
    • 但是该方法的比较规则是:没有比较引用变量引用对象的内容,而是直接比较引用变量的地 址,但有些情况下该种比较就不符合题意。

2. 对象比较的方法

  • 覆写基类的 equals
  • 基于 Comparble 接口类的比较
  • 基于比较器比较 

 覆写基类的equals

【Java】语法特性篇_第1张图片

说明:

  • equals 是子类重写父类 Object中的方法;
  • 只能比较是否相等的;
  • 返回值是boolean类型,即true or false

基于Comparble接口类的比较

【Java】语法特性篇_第2张图片

说明:

  • 本身类需要使用implements 实现 Comparable 接口;
  • 重新接口中compareTo方法;
  • 返回值是 int 类型;
  • 在类的内部实现,侵入性强,耦合度高;

基于比较器比较 

【Java】语法特性篇_第3张图片

说明:

  • 需要重新定义一个比较类,该比较类需要使用implements 实现Comparator接口;
  • 重新方法中compare方法;
  • 返回值是int类型
  • 在类的外部实现,侵入性小,耦合度低;

Java中的字符串常量池

【Java】语法特性篇_第4张图片

intern 方法
intern 是一个 native 方法 (Native 方法指:底层使用 C++ 实现的,看不到其实现的源代码 ) 该方法的作用是手 动将创建的 String对象添加到常量池中 【Java】语法特性篇_第5张图片

Java 反射

1. 反射的理解

Java的反射机制是在运行状态的时候,对于任意一个类,获取其中的所有属性和方法,并且任意使用与调用,还可以修改部分类型信息。

2. 用途

  • 1. 获取只对系统开放的方法;
  • 2. 开发各种通用框架;
  • 3. 反射程序就能判断出该对象和类属于哪些类。

3. 反射相关的类

【Java】语法特性篇_第6张图片

Java的枚举

【Java】语法特性篇_第7张图片

枚举不能被反射

Java的lambda表达式

【Java】语法特性篇_第8张图片

  • lambda方法体中,不能修改外部变量的值,但是可以修改引用指向中的值,也就是说,不能修改"栈上的值,可以修改堆上的值";
  • Java 的 lambda要搭配函数式接口使用;
  • lambda 可以使用集合遍历forEach中,比较接口等等

你可能感兴趣的:(#,Java,java,开发语言)