JavaSE阶段十组易混淆概念总结

目录

📌 & 与 &&

📌 this 与 super

📌 方法重载与重写

📌 抽象类与接口

📌 "==" 与 equals

📌 String 与 StringBuffer

📌 HashSet 与 HashMap

📌 Collection 与 Collections

📌 final 与 finally

📌 throws 与 throw



📌 & 与 &&


○  &    无论左边是真是假,右边表达式都运算.

○  &&  当左边表达式为真,右边表达式才运算;若左边为假,那么右边不参与运算.

  ( ||  和 |  同理  ,|| 表示左边为真,右边不参与运算)

✎  实际开发中推荐使用  &&   || 

📌 this 与 super


 this代表当前对象,可以调用当前类的构造方法, 成员变量和成员方法等。

 super代表当前对象中从父类的引用的资源,可以调用父类构造方法,成员变量和方法。

   关于 this关键字   

○ this在非静态实例方法中:表示调用该方法的对象,即谁在调用,this就代表谁。

○ 当方法的局部变量与当前对象的成员变量重名时,就可以在成员变量前面加this. ,如果没有重名问题,就可以省略this.

○ this.成员变量会先从本类声明的成员变量列表中查找,如果未找到,会去从父类继承的在子类中仍然可见的成员变量列表中查找。

○ this不能出现在静态代码块和静态方法中

   关于 super关键字   

○ 在子类构造方法中要调用父类的构造方法,需要注意:super语句只能出现在子类构造方法体的第一行。

○ 用“super.成员变量名”来引用父类成员变量

○ 用“super.方法名(参数列表)”的方式访问父类的方法。

注意:super和this都不能出现在静态方法和静态代码块中

📌 方法重载与重写


   关于方法的重载   

在一个类中有多个名称相同的方法时,在调用时通过方法的重载,即改变方法的参数的个数,类型,顺序,来区分同名的方法。

注意:方法的重载与返回值类型无关

   关于方法的重写   

当父类中方法的实现不能满足子类需求时,可以在子类中对父类的方法进行重写 ( 覆盖) , 这样调用时, 就会调用子类中重写的方法。 

重写时需要注意:

● 子类重写的方法结构与父类方法的结果必须一致(方法名,参数列表,返回值类型必须一致)

● 子类重写的方法使用的访问权限不能小于父类被重写方法的访问权。

● 构造方法,静态方法不能重写,成员变量不存在重写。

● 使用 @Override 注解标签

        @Override是Java中的一个注解标签,定义在重写的方法上面,表示此方法是从父类重写而来,也可以不用添加,不过建议保留,因为编译器可以进行语法验证 ,并且阅读代码时可以明确的知道此方法是重写的。

📌 抽象类与接口


   关于抽象类   

抽象方法是一种特殊的方法,只有声明没有具体的实现,必须用abstract关键字修饰,没有方法体。 

   关于接口   

○ 接口可以看做是一种特殊的抽象类,里面可以包含抽象方法,但不能被创建对象;

○ 接口可以被类实现,实现类必须实现接口中定义的所有方法;

○ 接口和抽象类十分的类似,接口内部的方法也是默认抽象的,不可在内部实例化的,只能由接口的调用者去实现。

○ 接口通过关键字 interface定义;类通过implements关键字来实现接口。

📌 "==" 与 equals


   关于 "=="   

“ == ” 比较等号两边是否相等

当==用于基本类型比较时,比较的是变量的值是否相等。

当==用于引用类型比较时,比较的是对象的地址是否相等。

public static void main(String[] args) {//int属于基本数据类型int a = 5;int b = 5;System.out.println(a == b); //true//数组属于引用数据类型int[] c={1,2,3};int[] d={1,2,3};System.out.println(c); //[I@1b6d3586System.out.println(d); //[I@4554617cSystem.out.println(c==d);//  false  数组c与数组d的地址不同}

   关于 equals   

equals()方法属于Object类,Object类是所有Java类的祖先;equals方法默认比较的是两个对象的

地址是否相等, 所以我们就以使用 == 代替它;实际使用equals方法时,在其他类中,一般都重写

了equals(), 把它改造为比较对象中的内容是否相等。

public class Test_2 {public static void main(String[] args) {Person p1 = new Person("小魏",16);Person p2 = new Person("小魏",16);System.out.println(p1==p2);   // 输出:false 比较的是地址System.out.println(p1.equals(p2)); // 输出:true 已经对equals方法进行了重写,使其比较的是两对象内容是否相等}
}

●  (Object 中的 equals 方法默认使用==比较,比较的是对象地址,这点需要注意 )

●  在Person类中对equals方法进行重写,使其比较的是对象中的内容是否相等

 @Overridepublic boolean equals(Object obj) {if(obj instanceof Person){Person other =(Person)obj;return name.equals(other.name) && age ==other.age;}return false;}

📌 String 与 StringBuffer


✎ String修饰的字符串是一个值不能改变的字符串,用String声明的字符串对象值一旦给定就不能

改变了,每次拼接都会创建新的字符串对象,耗时且占用空间。


✎ StringBuffer是内容可以改变的字符串,值可以改变且不需要创建新对象,在多任务执行时是安全的

适合单线程。

 

📌 HashSet 与 HashMap


 ✍   关于 HashSet   

  HashSet是单列集合Set接口下的实现类, 并且我们知道Set中所存储的元素是不重复的.

★ 关于HashSet在添加元素时,是如何判断元素重复的?        

○  在底层会先调用hashCode(),注意,Object中的hashCode()返回的是对象的地址,此时并不会调用;此时调用的是类中重写的hashCode(),返回的是根据内容计算的哈希值,遍历时,会用哈希值先比较是否相等,会提高比较的效率;但哈希值会存在问题:内容不同,哈希值相同;这种情况下再调equals比较内容,这样既保证效率又确保安全。

 ✍   关于 HashMap  

  HashMap是双列结合Map接口下的实现类,并且我们知道双列集合数据存储是以 ( 键,值 ) 形式存    储且键不能重复,值可以重复,HashMap中的键是无序的。

 ★ 关于HashMap底层存储数据的结构 :(面试高频题)

○ 底层使用了一个长度默认为16的哈希数组,用来确定元素的位置,每次用key计算出哈希值,再     用哈希值%数组长度确定元素位置,将元素放在哈希表中指定的位置。

○ 后来继续添加元素,如果出现位置相同且不重复的元素,那么将后来元素添加到之前元素的next     节点。

○ 当链表长度等于8且哈希数组的长度大于64时链表会自动转为红黑树。

补充: 哈希表负载因子为0.75 , 当哈希表使用数组的0.75倍时会自动扩容为原来数组长的2倍。

📌 Collection 与 Collections


   关于 Collection   

Collection接口定义了单列集合共有的方法,其子接口SetList分别定义了存储方式。

   关于 Collections   

Collections是集合类的工具类,与数组的工具类Arrays类似.

📌 final 与 finally


   关于 final   

○ final 可以修饰类,方法,参数,成员变量(常量)

○ final 修饰的类不能被继承,所以不能修饰抽象类,例如Java中String类就是final修饰。

○ final 修饰的方法不能被重写。

○ final 修饰方法的参数,参数值在方法中不能被改变。

○ final 修饰的成员变量值不能改变,因此称为常量。

   关于 finally   

○ finally关键字常常在异常处理中使用,finally块中的内容总是会执行的,,且只能有一个finally语句.

当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。

 try{   编写可能出现异常的代码 }catch(异常类型){  处理机制  }finally{  代码总能执行  } 

📌 throws 与 throw


○ throws 用在方法声明的地方,只声明方法异常的类型,并不处理异常。谁用谁异常谁处理。

○ throw 是一个关键字 在方法体中,会抛出一个异常,然后生成一个处理异常的新对象,通过传输一些异常数据,返回处理异常的结果 throw 为手动抛出异常,也可以抛出一些自己写的异常

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/789996.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CANN训练营笔记】Atlas 200I DK A2体验手写数字识别模型训练推理

环境介绍 开发板:Huawei Atals 200I DK A2 内存:4G NPU:Ascend 310B4 CANN:7.0 准备环境 下载编译好的torch_npu wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/wanzutao/torch_npu-2.1.0rc1-cp39-cp39-linux_aarch…

烂笔头笔记:Windows 11下照片查看器显示偏色问题修复

本文出处:http://blog.csdn.net/chaijunkun/article/details/137278931,转载请注明。由于本人不定期会整理相关博文,会对相应内容作出完善。因此强烈建议在原始出处查看此文。 最近在研究HDR视频的截图算法,目的就是生成色彩正确…

基于Springboot + MySQL + Vue 大学新生宿舍管理系统 (含源码)

目录 📚 前言 📑摘要 📑操作流程 📚 系统架构设计 📚 数据库设计 💬 管理员信息属性 💬 学生信息实体属性 💬 宿舍安排信息实体属性 💬 卫生检查信息实体属性 &…

pytest--python的一种测试框架--接口测试

接口测试 工具: POSTMAN; 接口选择: 豆瓣电影,进制数据 POSTMAN下载: 1.POSTMAN官网:https://www.postman.com/products/; 2.点product选Download Postman 下载完之后双击打开就可以用的。…

Element-Plus日期选择组件封装农历日期

背景 在使用element-plus开发项目过程中,需要填入人员的生卒日期,经观察,对于大部分人来说,这类日期通常是农历日期,然而我们在系统建设过程中,对于日期字段,约定成俗的都会使用公历日期&#…

Lecture 1 - Introduction

Lecture 1 - Introduction MIT 6.824 Distributed Systems 1、概念预览 分布式系统需要考虑的因素: Parallelism :并行性Fault tolerence :容错性Physicial :不同系统之间物理距离引起的通信问题Security :不同的计…

封装一个vue3的公共组件

在Vue 3中,封装公共组件的场景包括但不限于以下几种情况: 重复使用的组件:如果你发现某个组件在多个地方重复使用,那么将其封装成公共组件是很有意义的。比如,页面中的各种表单控件(输入框、下拉框、日期选…

MySQL 数据学习笔记速查表(视图、存储过程、事务)

文章目录 十三、视图1、视图是什么?2、视图的特性?3、视图的作用?4、视图的用途?5、视图的使用?1、基本语法2、创建视图3、调用视图4、视图练习(1) 利用试图简化复杂的联结(2) 利用视图重新格式化检索出的数据(3) 利用…

Django详细教程(一) - 基本操作

文章目录 前言一、安装Django二、创建项目1.终端创建项目2.Pycharm创建项目(专业版才可以)3.默认文件介绍 三、创建app1.app介绍2.默认文件介绍 四、快速上手1.写一个网页步骤1:注册app 【settings.py】步骤2:编写URL和视图函数对…

Node爬虫:原理简介

在数字化时代,网络爬虫作为一种自动化收集和分析网络数据的技术,得到了广泛的应用。Node.js,以其异步I/O模型和事件驱动的特性,成为实现高效爬虫的理想选择。然而,爬虫在收集数据时,往往面临着诸如反爬虫机…

OSPF-基础、虚链路、overflow,缺省

OSPF 1、OSPF基础 2、区域内的路由计算 3、区域间的路由计算(矢量)(区域间的防环原则) 3.1、非骨干区域都与骨干区域相连。 3.2、骨干区域不会接收非骨干的3类LSA。 3.3、无论COST,1类LSA总是由于3类LSA。 ABR&…

快消企业数字化转型实战解析:探寻未来增长新动力

2024年,快消行业正站在数字化转型的风口浪尖。 “今年是过去十年最差的一年,但却可能是未来十年最好的一年。”这句话几乎成为了今年的流行语。 但是这句话是情绪,不是事实。未来十年,中国会成为全球最大的消费品市场&#xff0…

北方经贸经济类知网收录月刊投稿发表论文

《北方经贸》期刊是由国家新闻出版总署批准,黑龙江省教育厅主管,黑龙江省经济管理干部学院主办的经济类综合期刊。期刊融理论性、知识性、实践性于一体,立足龙江,辐射全国,面向世界,注重研究解决重大现实理…

vulnhub靶机: DC-9

dc-9靶机下载 将靶机设置为NAT模式,本次实验使用的内网网段为192.168.198.0/24,kali的ip为192.168.198.172 信息搜集 ip主机扫描: nmap -sP 192.168.198.0/24 确定靶机ip为192.168.198.171 主机端口扫描: nmap -T4 -A -v 192…

python基础——模块【模块的介绍,模块的导入,自定义模块,*和__all__,__name__和__main__】

📝前言: 这篇文章主要讲解一下python基础中的关于模块的导入: 1,模块的介绍 2,模块的导入方式 3,自定义模块 🎬个人简介:努力学习ing 📋个人专栏:C语言入门基…

大数据面试专题 -- kafka

1、什么是消息队列? 是一个用于存放数据的组件,用于系统之间或者是模块之间的消息传递。 2、消息队列的应用场景? 主要是用于模块之间的解耦合、异步处理、日志处理、流量削峰 3、什么是kafka? kafka是一种基于订阅发布模式的…

通过SSH在苹果手机上查看系统文件:远程访问iOS文件系统的方法

​ 目录 引言 用户登录工具和连接设备 查看设备信息,电池信息 查看硬盘信息 硬件信息 查看 基带信息 销售信息 电脑可对手机应用程序批量操作 运行APP和查看APP日志 IPA包安装测试 注意事项 引言 苹果手机与安卓手机不同,无法直接访问系统文件…

python基于django协同算法的个性化音乐推荐系统的设计与实现

本个性化音乐推荐系统以Django作为框架,b/s模式以及MySql作为后台运行的数据库。本系统主要包括以下功能模块:首页,个人中心,用户管理,歌曲类型管理,明星歌手管理,歌曲音乐管理,歌曲…

权限提升技术:攻防实战与技巧

本次活动赠书1本,包邮到家。参与方式:点赞收藏文章即可。获奖者将以私信方式告知。 网络安全已经成为当今社会非常重要的话题,尤其是近几年来,我们目睹了越来越多的网络攻击事件,例如公民个人信息泄露,企业…

【Jenkins】关于账号,证书验证的设置问题

当你的电脑启动了Jenkins,这时候一定要小心更改管理员账号和密码~~~ 当你的电脑启动了Jenkins,这时候一定要小心更改管理员账号和密码~~~ 当你的电脑启动了Jenkins,这时候一定要小心更改管理员账号和密码~~~ 重要的事情说3遍,如…