Java中比较容易混淆的知识点

1.  equals()  和  ==  运算符

  - equals是方法, 而==是运算符(当然也可以说是广义上的方法, 或者最终都是调用方法).

  - equals() 是从Object类中继承来的, 在Object中 equals是直接调用的 ==运算符.

  - 在equals中, 怎么比较, 可以自己定义, 而 == 运算符是直接比较的变量中直接存放的值.

    - 对于8种基本类型而言, 变量内存放的就是值, 所以使用 == 运算符比较的时候是比较它们的值(不同的基本类型也可以比较, 如 int 和 char).

    - 对于对象而言, 变量存放的是对象的引用, 如: String str = new String("Roger"); str存放的是对象的地址. 所以, 不同的对象, 即使它们的值相同, 引用也不一定相同.

2. 抽象类

  - 包含抽象方法的类, 所以要想理解抽象类 , 先理解抽象方法

  - 抽象方法

    - 没有具体实现, 必须用 abstract 修饰

    - 必须为public, 因为必须让之类继承和实现. (如果为private, 则不能被子类继承.) 缺省为public

  - 抽象类

    - 不能定义对象(因为有残缺的方法, 就算定义出来也是残疾对象, 没用)

    - 如果子类没有实现它的所有抽象方法, 子类也是抽象类.

3. 接口

  - 接口泛指供别人调用的方法或者函数. 所以它可以看作是对行为的抽象.

  - 可以包含变量和方法

    - 变量: 被隐式指定为public static final的. 一般情况下不在接口中定义变量.

    - 方法: 被隐式指定为public abstract 的.

  - 接口中所有方法都必须是抽象方法(抽象类中可以有非抽象方法.).

  - 不能含静态代码块及静态方法(抽象类可以有).

4. 接口和抽象类对比

  - 语法上: 可以根据定义进行区别

  - 设计上

    - 抽象类是对一类事物的抽象, 即对类抽象. 而接口是对行为抽象.

    - 接口是对行为的规范, 而抽象类即规范了行为, 又规范了属性.

时间: 2024-10-20 02:44:22

Java中比较容易混淆的知识点的相关文章

JAVA中一些需要记录的知识点(基础部分)

为了准备一年以后的校招,开始重头在复习一遍JAVA,为了方便初学者或者其他在整理基础知识的朋友,发个日志,欢迎讨论,并指出错误,谢谢! JDK与JRE的区别: JRE是所有JAVA程序运行所需要的环境,任何JAVA程序的运行都依赖于JRE,当前从JAVA官网选择安装JAVA即安装的是JRE. JDK是为开发人员所提供的工具包,对开发人员来说属于必备项,一般在JDK本身包含JRE,但是一般JDK还会再安装一套JRE,这一套JRE被成为公共JRE(如图),JDK需要从oracle的官网下载. 当前的

Java中main()的args的知识点浅谈

我们先来了解下Java中main()方法的默认定义格式: public static void main(String[] args){ }1.main方法是程序执行的入口,除了args这个形参变量可以改变外,其他都不能改变. 2.JVM为什么这么定义? 因为JVM在运行这个Java应用程序的时候,首先会调用main方法,调用时不实例化这个类的对象,而是通过类名直接调用,因此需要是限制为public static. JVM规定,不能有返回值,所以返回值类型为void. main()方法中必须有一

java中string内存的相关知识点

(一):区别java内存中堆和栈: 1.栈:数据可以共享,存放基本数据类型和对象的引用,其中对象存放在堆中,对象的引用存放在栈中: 当在一段代码块定义一个变量时,就在栈中 为这个变量分配内存空间,当该变量退出该作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用. 2.堆:存放用new产生的数据,其中清理垃圾采用垃圾回收机制. 在堆中产生了一个数组或对象后,还可以 在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了

Java中SSM框架全面知识点,业务时间的精神食粮

------------------异常问题 :出现重复定义了访问路径java.lang.IllegalStateException: Ambiguous mapping found. Cannot map 'userController' bean method 406 请求头和响应头不匹配做ajax注册的时候 出现的问题 ClassNotFindException说明缺少jar包 或者名字写错 NoSuchBeanDefinitionException 如果BeanFactory在Sprin

java中的小知识点

1.数据类型的相关知识点 1.1.java内置封装类的转换 java中内置的封装类Byte.Integer.Float.Double和Long都可以转换成double类型的数值:因为这些封装好的类中都有doubleValue()的方法,进而调用此方法就可以转换成Double类型的数值啦:[各个类声明的引用对象,都会有相应的xxxValue()方法,转换成自己需要的数据类型] 比如: package fdx.test.ShuJuKind; public class TestOne { public

Java中多线程知识点总结

Java中有一个比较重要的知识点是多线程,废话就不说了,直接进入多线程的知识点.对多线程我们需要了解和知道一下的知识点:多线程的实现,多线程的安全性,多线程的线程通信,守护线程和线程的优先级等知识点. 首先,我想写点我对多线程的一点认识,其中说的语言不会很官方,但是我相信里面绝对没有坑,不会把大家带到歧途上去的.首先多线程的出现是为了更好的利用计算机的资源,提高程序的响应速度.多线程的运行由操作系统来控制,多核和单核的cpu执行同一个多线程程序的过程可能会不同,在单核中多线程程序只能在单核之间切

js和java中正则表达式的易混淆点

js中正则表达式的使用 对表单中的值进行正则表达式匹配一般有两种方法: var reg = new RegExp(regStr); reg.test(value); 如下: var reg = new RegExp("\\d{3}"); reg.test("abc123def"); 结果:true 注:new RegExp中传的是正则表达式的字符串,\需要用\转义. str.match(regex);      如"abc123def".matc

Java中Api知识点总结笔记带案列

博客园 CSND 开源中国 w3school前端网站 一个汉字俩个字节 一个英文一个字节 <Arraylist的用法> 包含了 list.size() list.get() list.add()方法 list.set() list.removepackage ArrayList; import java.util.ArrayList; public class Newguanli { /*public void showNew(){ //1先创建集合对象 ArrayList list=new

java中数组排序.知识点

import java.util.*; //选择排序 class SwitchTest { public static void main(String[] args) { int[] arr = {3,5,6,23,45,2}; //排序前 printArray(arr); //排序后 // selectSort(arr); Arrays.sort(arr);//java中已经定义好的一种排序方式,开发中,对数组排序,要使用该句代码 // bubbleSort(arr); printArray