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. 接口和抽象类对比
- 语法上: 可以根据定义进行区别
- 设计上
- 抽象类是对一类事物的抽象, 即对类抽象. 而接口是对行为抽象.
- 接口是对行为的规范, 而抽象类即规范了行为, 又规范了属性.
Java中比较容易混淆的知识点的更多相关文章
- 【Java基础】Java中你必须知道的知识点
目录 Java中面向对象的基础知识 1. 什么是面向对象 2. 三大基本特征和五项基本原则 3. Java的平台无关性 4. 值传递和引用传递 5. 方法重载和重写 6. 基本数据类型 7. 包装类 ...
- Java中容易遗漏的小知识点( 一 )(为了和小白一样马上要考试的兄弟准备的,希望小白和大家高过不挂)
笔者csdn博客同文地址:https://blog.csdn.net/weixin_45791445/article/details/106597515 我是小康小白,一个平平无奇的Java小白.热爱 ...
- Java中main()的args的知识点浅谈
我们先来了解下Java中main()方法的默认定义格式: public static void main(String[] args){ }1.main方法是程序执行的入口,除了args这个形参变量可 ...
- java中string内存的相关知识点
(一):区别java内存中堆和栈: 1.栈:数据可以共享,存放基本数据类型和对象的引用,其中对象存放在堆中,对象的引用存放在栈中: 当在一段代码块定义一个变量时,就在栈中 为这个变量分配内存空间,当该 ...
- JAVA中一些需要记录的知识点(进阶部分)···持续更新
1.JAVA中的相对路径 file = new file("")与file = new file("./")方式相同,该路径为整个project的根目录(实际上 ...
- java 中一些需要注意的知识点
java数组的length属性是容量,而不是数组真实元素的个数: 多线程中的interrupt()方法并不会终止处于"运行状态"的线程,它只是将线程的中断标记设为true. juc ...
- 第79节:Java中一些要点
第79节:Java中一些要点 前言 一些知识点忘了没,可以通过一个点引出什么内容呢?做出自己的思维导图,看看自己到了哪一步了呢 内容 如果有人问jre,jdk,jvm是什么,你怎么回答呢? jre的英 ...
- 【转】Java中的多线程学习大总结
多线程作为Java中很重要的一个知识点,在此还是有必要总结一下的. 一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程 ...
- Java异常的10个关键知识点
前言 总结了Java异常十个关键知识点,面试或者工作中都有用哦,加油. 一. 异常是什么 异常是指阻止当前方法或作用域继续执行的问题.比如你读取的文件不存在,数组越界,进行除法时,除数为0等都会导致异 ...
随机推荐
- Java程序员之JS(一) 入门
背景:使用了JS做一个 WEB 项目之后,一直有使用JS 的一个功能,突然某一天项目重新规划,开始自己手动写一些原始JS,情况不妙,原来之前一直是用同事搭建好的框架在开发,对 JS 零基础的我一直在 ...
- 科普Spark,Spark是什么,如何使用Spark
科普Spark,Spark是什么,如何使用Spark 1.Spark基于什么算法的分布式计算(很简单) 2.Spark与MapReduce不同在什么地方 3.Spark为什么比Hadoop灵活 4.S ...
- hadoop中使用hprof工具进行性能分析
在编写完成MapReduce程序之后,调优就成为了一个大问题.如何使用现有工具快速地分析出任务的性能? 对于本地的java应用程序,进行分析可能稍微简单,但是hadoop是一个分布式框架,MapR ...
- MongoDB day01
MongoDB芒果数据库 数据存储阶段 文件管理阶段(.txt .doc .xlc) 优点:数据可以长期保存:数据有一定格式化规范:可以大量存储:使用简单方便 缺点:数据一致性差:用户查找修改不方便: ...
- read/write/fsync与fread/fwrite/fflush的关系和区别
read/write/fsync: 1. linux底层操作: 2. 内核调用, 涉及到进程上下文的切换,即用户态到核心态的转换,这是个比较消耗性能的操作. fread/fwrite/fflush: ...
- 我为什么一直不愿意用bootstrap
做前端有2年多的时间了,知道bootstrap已经很久了. 第一次了解bootstrap是1年前,公司的一次培训中. 当时感到非常的愤怒,因为对框架的了解不够深入产生了这样的一个想法: 怎么会有这种框 ...
- node制作代理服务器
下面代码实现的功能是这样的: 首先创建一个HTTP服务器,当服务器接收到客户端的请求后,向"www.taobao.com"网站请求数据,当从该网站接受到的响应数据后,将响应数据发送 ...
- lnmp环境自动化部署
lnmp.sh #!/bin/bash#This project to install lnmp#Author:菜逼cd命令玩家#Time:2016.10.13#objective:简化人工手动操作, ...
- MVC、MVP、MVVM架构模式
MVC模式 如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论. MVC模式就是架构模式的一种,不仅适用于 ...
- BGP中IBGP和EBGP的区别和联系
我们知道,在自治系统内部使用IGP路由协议:而在不同自治系统之间使用BGP路由协议(严格来讲,BGP不是路由协议).BGP产生的原因是为了在不同自治系统(AS)之间进行路由转发,而其中又提出了EBGP ...