Java基础1.0

news2024/11/26 15:32:34

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.coloradmin.cn/o/2247918.html

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

相关文章

七、SElinux

一、SElinux简介 SELinux是Security-Enhanced Linux的缩写,意思是安全强化的linuxSELinux 主要由美国国家安全局(NSA)开发,当初开发的目的是为了避免资源的误用传统的访问控制在我们开启权限后,系统进程可以直接访问当我们对权限设置不严谨时…

Paddle Inference部署推理(一)

一:Paddle Inference推理 简介 Paddle Inference 是飞桨的原生推理库,提供服务器端的高性能推理能力。由于 Paddle Inference 能力直接基于飞桨的训练算子,因此它支持飞桨训练出的所有模型的推理。 Paddle Inference 功能特性丰富&#xff…

【数据分享】2001-2023年我国30米分辨率冬小麦种植分布栅格数据(免费获取)

小麦、玉米、水稻等各类农作物的种植分布数据在农业、环境、国土等很多专业都经常用到! 本次给大家分享的是我国2001-2023年逐年的30米分辨率冬小麦种植分布栅格数据!数据格式为TIFF格式,数据坐标为GCS_WGS_1984。该数据包括我国11个省份的冬…

类和对象plus版

一.类的定义 1.1类定义的格式 图中class为关键字,Stack为类的名字,用{}框住类的主体,类定义完后;不能省略。 为了区分成员变量,一般习惯在成员变量前面或后面加一个特殊标识,_或者m_ 1.2访问限定符 c采用…

jquery-picture-cut 任意文件上传(CVE-2018-9208)

目录 1、漏洞描述 2、访问ip:port 3、一句话木马:exploit.php 4、上传一句话木马 5、中国蚁剑连接成功 6、拿到flag 1、漏洞描述 jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(框…

【Spring Boot】# 使用@Scheduled注解无法执行定时任务

1. 前言 在 Spring Boot中,使用Scheduled注解来定义定时任务时,定时任务不执行;或未在规定时间执行。 import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component;Component public c…

LM2904运算放大器的应用:测电池电压

在电子设备的广泛应用中,电池作为便携设备的能量来源,其电压监测显得尤为关键。LM2904作为一款低功耗、高增益带宽积和高共模抑制比的双运算放大器,非常适用于电池电压的测量与监测。本文详细介绍了LM2904在电池电压测量方面的应用&#xff0…

电子学习中的关键游戏化元素

游戏化彻底改变了电子学习领域,提供了一种使学习具有吸引力、互动性和有效性的方法。通过将类似游戏的功能集成到教育平台中,教育工作者可以增强动力,提高知识记忆,并创造动态的学习体验。游戏化的关键要素为设计与学习者产生共鸣…

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

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

竞赛经验:关于不记得字母表,如何知道字母顺序qwq

利用ASCII码算出码值再转成字符即可 #include <bits/stdc.h> using namespace std;int main() {for(int i 1; i < 30; i){cout << char(ai) << ;} }结果&#xff1a; ps:大意了&#xff0c;本想用电脑目录&#xff0c;但没考虑到会有文件不存在导致缺…

GitLab指定用户分配合并权限

进入项目 -》 Project Settings Repository -》展开 Protected branches -》 添加要保护的分支&#xff0c;设置角色 管理用户角色权限 查看到不同用户的角色&#xff0c;一般设置Developer只有Merger Request权限&#xff0c;Maintainer还有Merge审批权限 GitLab 中的权限…

C语言菜鸟入门·关键字·union的用法

目录 1. 简介 2. 访问成员 2.1 声明 2.2 赋值 3. 共用体的大小 4. 与typedef联合使用 5. 更多关键字 1. 简介 共用体&#xff08;union&#xff09;是一种数据结构&#xff0c;它允许在同一内存位置存储不同的数据类型&#xff0c;但每次只能存储其中一种类型的…

[C++]了解内置类型升级

内置类型升级 1.调用模板T时&#xff0c;为什么可以使用T()类型的匿名对象来传参2.内置类型被升级成为类后的使用事项 1.调用模板T时&#xff0c;为什么可以使用T()类型的匿名对象来传参 当我们在定义或声明一个函数时&#xff0c;如果想使用模板T类型的默认构造&#xff08;例…

JavaScript的基础数据类型

一、JavaScript中的数组 定义 数组是一种特殊的对象&#xff0c;用于存储多个值。在JavaScript中&#xff0c;数组可以包含不同的数据类型&#xff0c;如数字、字符串、对象、甚至其他数组。数组的创建有两种常见方式&#xff1a; 字面量表示法&#xff1a;let fruits [apple…

Neural Magic 发布 LLM Compressor:提升大模型推理效率的新工具

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

友思特新闻 | 友思特荣获广州科技创新创业大赛智能装备行业赛初创组优胜企业!

2024年11月19日&#xff0c;第十三届中国创新创业大赛&#xff08;广东广州赛区&#xff09;暨2024年广州科技创新创业大赛智能装备行业赛颁奖典礼隆重举行。 赛事奖项介绍&#xff1a;广州科技创新创业大赛智能装备行业赛 第十三届“中国创新创业大赛&#xff08;广东广州赛区…

以灵魂的方式进入:从table和drawer哪个单词更长说起

有两个单词&#xff0c;table和drawer&#xff1a; table n.桌子drawer n.抽屉 现在就问&#xff0c;这两个单词&#xff0c;哪个单词更长&#xff1f;你会说&#xff0c;神经&#xff0c;这还用问吗&#xff1f;哪个单词更长&#xff0c;不一目了然吗&#xff1f; 其实&…

车载测试核心知识点和面试题

今天为大家分享一下车载测试岗位面试的时候&#xff0c;一定会问的相关技术。这些工具在测试的工作中会用到&#xff0c;在面试中也会经常被问到。所以同学们一定要去实战操作&#xff0c;这样理解和吸收才会更加深刻。 一、车载仪表台架测试CANoe工具实战 我们知道&#xff…

C/C++逆向:虚函数逆向分析

虚函数&#xff08;Virtual Function&#xff09;是C中实现多态的一种机制&#xff0c;它允许在运行时通过基类的指针或引用调用派生类中的函数&#xff0c;而不是基类中的版本。虚函数通常与继承和多态结合使用。通过在基类中使用 virtual 关键字声明函数&#xff0c;允许派生…

es写入磁盘的过程以及相关优化

数据写入到内存buffer同时写入到数据到translog buffer,这是为了防止数据不会丢失每隔1s数据从buffer中refresh到FileSystemCache中,生成segment文件,这是因为写入磁盘的过程相对耗时,借助FileSystemCache,一旦生成segment文件,就能通过索引查询到了refresh完,memory bu…