Java基础1.0

1.Java有哪些数据结构

Java语言是强类型语言,对于每一种数据都定义了明确的具体数据结构,在内存中分配了不同大小的内存空间。

基本数据结构

整数类型:byte,short,long,int。

字符类型:double,float。

布尔类型:boolean。

引用数据结构

类(class)、接口(interface)、数组。

2.Java三大特性

封装

封装是指利用抽象将数据和基于数据的操作封装到一起,使其构成一个不可分割的独立实体。

数据被保护在类的内部,尽可能的隐藏内部的实现细节,只保留一些对外接口使之与外部发生联系

比如一个房子是一个对象,里面有沙发,空调,电视机是这个房子的私有属性,因为有墙壁,所以我们随意的改变里面的布局不会影响到外面的人,并且房子的窗户可以看作与外界访问的接口。

继承

 子类继承父类的属性和方法,使得子类对象具有父类的属性和方法。

比如狗,猫都是动物,那么这两者就可以继承动物这个父类,姓名,年龄等属性就可以写入到父类里面,减少了重复代码。

多态

多态是指在面向对象编程中,同一个类的对象在不同情况下表现出来的不同行为和状态。

多态有三个前提条件:

  • 子类继承父类
  • 子类重写父类的方法
  • 父类引用指向子类对象

3.重载和重写的区别

重写

重写就是子类把父类的方法重新写一遍。比如子类继承了父类原有的方法,但是子类不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型都相同的情况下,对方法体进行修改,就是重写。但是子类函数的访问修饰符权限要少于父类的,并且不能抛出新的检查异常或者不能比原本方法的检查异常更广泛。重写是运行时的多态性。

重载

在一个类中,同名方法如果有不同的参数列表,视为重载,同时,重载对返回类型没有要求,但不能通过返回类型是否相同判断重载。重载是编译时的多态性。

4.访问修饰符的区别

Java中可以使用访问修饰符来保护对类,变量,方法,构造方法的访问。

  1. private:在同一类中可见,可以修饰对象,方法,不能修饰外部类
  2. default:在同一个包内课件,使用方法同上
  3. protected:对同一个包内的类和所有子类可见,同上
  4. public:对所有类可见,使用对象:类,接口,方法,变量

5.= =和equals()的区别

基本数据类型:= =比较的是值;引用数据类型:= =比较的是对象的内存地址(引用数据类型变量存储的是地址,对应的地址存储数据)

equals()不能作用于基本数据类型变量,如果对equals方法重写,比较的就是引用类型变量指向的对象地址,如果重写的话,比较的就是所指对象的内容。

6.hashCode()作用

hashCode的作用是获取哈希码,也成为散列码,,这个哈希码的作用是确定该对象在哈希表中的索引位置。

哈希表存储的是键值对,可以根据键快速检索出对应的值.

为什么要有hashCode()

以HashSet如何检查重复为例:当你把对象加入HashSet时,HashSet会先计算对象的hashCode值来判断对象加入的位置,同时也会于其他已经加入的对象的hashCode值比较,如果没有相符的hashCode,hashset会假设对象没有重复出现;但如果有相同hashCode对象,这时会调用equals()方法来检查hashCode相等的对象是否真的相等,如果相同,hashset就不会让其加入,如果不同,就会重新散列到其他位置,这样就大大减少了equals的次数,提高了执行速度。

为什么JDK要同时提供这两个方法

  1. 因为在一些容器中,比如刚刚的HashSet,有了hahsCode之后,判断元素是否存在的操作效率会更高。
  2. hashCode会帮我们大大缩小查找成本。

为什么两个对象有相同的 hashCode 值,它们也不一定是相等的?

因为 hashCode() 所使用的哈希算法也许刚好会让多个对象传回相同的哈希值。越糟糕的哈希算法越容易碰撞,但这也与数据值域分布的特性有关(所谓哈希碰撞也就是指的是不同的对象得到相同的 hashCode )。

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

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

相关文章

累积局部效应 (ALE) 图分析记录

Git地址:https://github.com/blent-ai/ALEPython/tree/dev 查看源码需要pip install alepython安装,这边查看源码发现就实际就一个py文件而已,我懒得再去安装,故直接下载源码,调用方法也可; # -*- coding:…

远程控制软件:探究云计算和人工智能的融合

在数字化时代,远程控制工具已成为我们工作与生活的重要部分。用户能够通过网络远程操作和管理另一台计算机,极大地提升了工作效率和便捷性。随着人工智能(AI)和云计算技术的飞速发展,远程控制工具也迎来了新的发展机遇…

正则表达式灾难:重新认识“KISS原则”的意义

RSS Feed 文章标题整理 微积分在生活中的应用与思维启发 捕鹿到瞬时速度的趣味探索 微积分是一扇通往更广阔世界的门,从生活中学习思维的工具。 数据库才是最强架构 你还在被“复杂架构”误导吗? 把业务逻辑写入数据库,重新定义简单与效率。…

网络原理(一):应用层自定义协议的信息组织格式 初始 HTTP

目录 1. 应用层 2. 自定义协议 2.1 根据需求 > 明确传输信息 2.2 约定好信息组织的格式 2.2.1 行文本 2.2.2 xml 2.2.3 json 2.2.4 protobuf 3. HTTP 协议 3.1 特点 4. 抓包工具 1. 应用层 在前面的博客中, 我们了解了 TCP/IP 五层协议模型: 应用层传输层网络层…

【JUC-Interrupt】中断相关概念

线程中断 一、相关概念二、API2.1、isInterrupted方法2.2、interrupted方法2.3、interrupt 三、总结: 一、相关概念 一个线程不应该由其他线程中断或停止,应该有线程自己来决定。 在Java中没有办法立即停止一个线程,因此提供了用于停止线程…

直播技术-Android基础框架

目录 (一)直播间架构 (二)核心任务调度机制 (1)复制从滑动直播间加载流程 (2)核心任务调度机制-代码设计 (3)核心任务调度机制-接入指南 (三&#xff0…

【es6】原生js在页面上画矩形添加选中状态高亮及显示调整大小控制框(三)

接上篇文章,这篇实现下选中当前元素显示调整大小的控制框,点击document取消元素的选中高亮状态效果。 实现效果 代码逻辑 动态生成控制按钮矩形,并设置响应的css // 动态添加一个调整位置的按钮addScaleBtn(target) {const w target.offsetWidth;con…

ArcGIS应用指南:ArcGIS制作局部放大地图

在地理信息系统(GIS)中,制作详细且美观的地图是一项重要的技能。地图制作不仅仅是简单地将地理数据可视化,还需要考虑地图的可读性和美观性。局部放大图是一种常见的地图设计技巧,用于展示特定区域的详细信息&#xff…

记录一些PostgreSQL操作

本文分享一些pg操作 查看版本 select version(); PostgreSQL 11.11 查看安装的插件 select * from pg_available_extensions; 查看分词效果 select ‘我爱北京天安门,天安门上太阳升’::tsvector; ‘天安门上太阳升’:2 ‘我爱北京天安门’:1select to_tsvector(‘我爱北京天…

RHCSA作业2

压缩 将整个 /etc 目录下的文件全部打包并用 gzip 压缩成/back/etcback.tar.gz [rootjyh ~]# cd /etc [rootjyh etc]# tar -czf etcback.tar.gz /etc tar: Removing leading / from member names tar: /etc/etcback.tar.gz: file changed as we read it [rootjyh etc]# ls使当…

大语言模型(LLM)安全:十大风险、影响和防御措施

一、什么是大语言模型(LLM)安全? 大语言模型(LLM)安全侧重于保护大型语言模型免受各种威胁,这些威胁可能会损害其功能、完整性和所处理的数据。这涉及实施措施来保护模型本身、它使用的数据以及支持它的基…

递推进阶与入门递归

一、递推进阶,勇攀高峰 昆虫繁殖 题目描述 科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过X个月产Y对卵,每对卵要过两个月长成成虫。假设每个成虫不死,第一个月只有一对成虫,且卵长成成虫…

深入浅出:JVM 的架构与运行机制

一、什么是JVM 1、什么是JDK、JRE、JVM JDK是 Java语言的软件开发工具包,也是整个java开发的核心,它包含了JRE和开发工具包JRE,Java运行环境,包含了JVM和Java的核心类库(Java API)JVM,Java虚拟…

极客大挑战2024wp

极客大挑战2024wp web 和misc 都没咋做出来&#xff0c;全靠pwn✌带飞 排名 密码学和re没做出几个&#xff0c;就不发了 web ez_pop 源代码 <?php Class SYC{public $starven;public function __call($name, $arguments){if(preg_match(/%|iconv|UCS|UTF|rot|quoted…

C++设计模式-策略模式-StrategyMethod

动机&#xff08;Motivation&#xff09; 在软件构建过程中&#xff0c;某些对象使用的算法可能多种多样&#xff0c;经常改变&#xff0c;如果将这些算法都编码到对象中&#xff0c;将会使对象变得异常复杂&#xff1b;而且有时候支持不使用的算法也是一个性能负担。 如何在运…

【初阶数据结构和算法】leetcode刷题之设计循环队列

文章目录 一、实现循环队列1.大致思路分析2.循环队列的结构定义和初始化结构定义初始化 3.循环队列的判空和判满判空和判满难点分析判空判满 4.循环队列的入队列和出队列入队列出队列 5.循环队列取队头和队尾元素取队头元素取队尾元素 6.循环队列的销毁7.最后题解源码 一、实现…

【网络通信】数据集合集!

本文将为您介绍经典、热门的数据集&#xff0c;希望对您在选择适合的数据集时有所帮助。 1 RITA 更新时间&#xff1a;2024-11-22 访问地址: GitHub 描述&#xff1a; RITA 是一个用于网络流量分析的开源框架。 该框架以 TSV 或 JSON 格式提取 Zeek 日志&#xff0c;目前支…

.net core MVC入门(一)

文章目录 项目地址一、环境配置1.1 安装EF core需要包1.2 配置数据库连接二、使用EF创建表2.1 整体流程梳理2.1 建表详细流程三、添加第一个视图3.1整体流程梳理3.1 添加视图,并显示在web里四、使用EF增加Catogory数据,并且读取数据到页面4.1整体流程梳理4.2 实现五、增加Cat…

蓝桥杯不知道叫什么题目

小蓝有一个整数&#xff0c;初始值为1&#xff0c;他可以花费一些代价对这个整数进行变换。 小蓝可以花贵1的代价将教数增加1。 小蓝可以花费3的代价将整数增加一个值,这个值是整数的数位中最大的那个(1到9) .小蓝可以花费10的代价将整数变为原来的2倍, 例如&#xff0c;如果整…

css效果

css炫彩流光圆环效果 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title><style>*{margin: 0;padding: 0;}body{width: 100%;height: 100vh;}.container{position: relative;width: 100%;height: 100vh…