java object... arguments_Java面试之基础题---对象Object

参数传递:Java支持两种数据类型:基本数据类型和引用数据类型。

原始数据类型是一个简单的数据结构,它只有一个与之相关的值。引用数据类型是一个复杂的数据结构,它表示一个对象。原始数据类型的变量将该值直接存储在其存储器地址处。使用对象和引用变量时会有所不同。。Java中的所有参数都通过值传递。

当参数是原始是原始数据类型时,实际参数的值将复制到参数。在方法主体中对参数值进行的任何更改只会更改形式参数的副本,而不会更改实际参数的值。当参数通过参考值传递时,存储在实际参数中的参考被复制到形式参数。实际参数和形式参数都指向内存中的相同对象。形式参数可以通过直接更改实例变量的值或通过调用对象上的方法来修改对象。通过形式参数对对象进行任何修改都可以通过实际参数立即可见,因为它们对保存对内存中同一对象的引用。形式参数本身可以被修改以引用方法内的另一个对象。要禁用将引用类型形式参数更改为引用不同对象的方法,在引用类型形式参数声明中使用关键字final。

可变长度参数:(varargs:variable-length arguments),声明一个接受可变数量的参数的方法或构造函数。声明可变长度参数,在方法参数的数据类型之后添加一个省略号...,省略号...之前和之后添加空格时可选的。可变长度参数方法可以有多个参数,但最多可以有一个可变长度参数。可变长度参数方法的可变长度参数必须是参数列表的最后一个,可以使用for循环来处理可变长度参数的参数列表。length属性给出了可变长度参数传递的值的数量。

重载可变长度参数方法

方法重载规则适应于可变长度参数方法。可以使用可变长度参数重载一个方法,只要方法的参数在连续顺序或数字上不同。

Java的关键字this。它是对类的当前实例的引用。它只能在实例的上下文使用。当实例变量或类变量被具有相同名称的另一个变量覆盖时,需要使用关键字this限定一个实例变量,并使用类名称定义一个类变量。可以使用关键字this来限定实例方法名。

final关键字不允许修改或替换其原始值或定义。可以在以下三个上下文中使用:变量声明,类声明,方法声明。变量被声明为final,它只能被赋值一次。final变量的值在设置后不能修改。变量声明包括局部变量的声明,方法/构造函数的形式参数,实例变量和类变量。final变量的值只设置一次,它不能被重新赋值。有两种方法来初始化final变量的值:(1)在声明时给予初始化。(2)将其初始化延迟到稍后的时间。必须在第一次读取final变量之前初始化它。

final类,它不能被扩展或继承。

final方法,不能在包含该方法的类的子类中重新定义(覆盖或隐藏)

构造函数是用于在对象创建后立即初始化对象的代码块。构造函数的结构看起来类似于一个方法。构造函数名称与类的名称相同。构造函数名称后面是一对括号,可能包括参数。可选的,右括号后面可以是关键字throws,其后面是逗号分隔异常列表。

重载构造函数:一个类可以有多个构造函数。也叫重载构造函数。如果一个类有多个构造函数,它们的顺序和参数类型都必须与其它构造函数不同。每个对象创建表达式调用一次构造函数。可以在对象创建的过程中只执行一个构造函数的代码一次。

从另一个构造函数调用构造函数:构造函数可以调用同一类中的另一个构造函数。必须使用关键字this从另一个构造函数调用另外一个构造函数。如果构造函数调用另一个构造函数,它必须是构造函数体中的第一个可执行语句。构造函数不能调用自身,因为它将导致递归调用。

从构造函数返回:构造函数在其声明中不能返回类型。但可以在构造函数体中使用没有返回表达式的return语句。当一个构造函数中的返回语句被执行时,控制返回给调用者,忽略构造函数的其余代码。

静态初始化块:静态初始化器。当类定义被加载到JVM中时,只对一个类执行一次静态初始化器,需要在其声明的开头使用static关键字。在一个类中可以有多个静态初始化器。所有静态初始化器都按文本出现的顺序执行,并在任何实例初始化器之前执行。

Java  Object 类:在java.lang 包中。所有的Java类都直接或间接扩展Object类。所有的Java类都是Object类的子类,Object类是所有类的超类。Object类本身没有超类。Object类的引用变量可以保存任何类的对象的引用。Object类有九个方法。可以在Java中的所有类中使用。toString、equals、hashCode、clone、finalize没有实现,需要子类自定义。在对象销毁前被垃圾收集器调用。notify、notifyAll、wait、getClass()在Object类中实现,不能自定义它。它返回对对象的Class对象的引用。

对象的哈希代码:哈希码(也叫散列码)是一个整数值。计算整数的算法称为散列函数。Java使用散列码从基于散列的集合中有效地检索数据。Object类有一个返回int的hashCode方法,它是对象的哈希码。该方法的默认实现通过将对象的内存地址转换为整数来计算对象的哈希码。如果两个对象使用equals()方法相等,则它们必须具有相同的哈希码。如果对同一个对象多次调用hashCode()方法,则该方法必须返回相同的整数值。如果一个类覆盖这两个方法中的任何一个,它必须基于散列集合覆盖该类的对象以保证能正确工作。Java 7 引入了一个实用程序类java.lang.Objects 。它包含一个hash()方法,用于计算任意数量值的哈希码。

equals()方法的特性:1.自反性。x.equals(x)应该返回true

2、对称性。如果x.equals(y)返回true,那么y.equals(x)

3、传递性,如果x.equals(y)为true,且y.equals(z),那么x.equals(z)

4、一致性,如果x.equals(y)返回true,它应该返回true,知道x或y的状态改变

类的toString()方法非常重要。当需要对象的字符串表示时,Java会自动调用toString()方法。当连接一个字符串和一个对象时,实例调用的就是toString()方法。

Java对象克隆:Java不提供克隆(复制)对象的自动机制。克隆对象意味着逐位复制对象的内容。要支持克隆操作,请在类中实现clone()方法。clone()方法声明为protected。因此,不能从客户端代码调用它。需要在类中声明clone()方法为public来克隆类的对象。它的返回类型是Object。这就需要使用clone()方法转换返回值。

Java提供了一种在对象即将被销毁时执行资源释放的方法。在Java中创建对象,但是不能销毁对象。JVM运行一个称为垃圾收集器的低优先级特殊任务来销毁不再引用的所有对象。垃圾回收器给我们一个机会,在对象被销毁前执行清理代码。Object类有一个finalize()方法就是用于在对象被销毁之前执行清理代码,这个方法声明为protected,Object类中的finalize()方法不会做任何事情。所以需要覆盖类中的finalize()方法。

Java不可变对象:在创建状态后无法改变状态的对象称为不可变对象。一个对象不可变的类称为不可变类。不变的对象可以由程序的不同区域共享而不用担心其状态改变。不可变对象本质上是线程安全的。关键字final声明属性,那么属性不可变,对象也就是不可变的。

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

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

相关文章

华为光伏usb适配器_华为系列原装充电器拆解第三弹:比亚迪版华为10W充电器

在对华为18W充电器的比亚迪版和赛尔康版进行拆解之后,充电头网今天继续为大家带来华为10W充电器的比亚迪版和达宏版的拆解。这两种10W规格的华为充电器外观延续了华为原装充电器的风格,而且型号也是一样的。那么,我们先一起来看看比亚迪版华为…

JMetro版本11.5.10和8.5.10发布

在这里,我们再次使用JMetro的另一个版本。 此版本中的新增功能: 工具栏内控件的新样式 新的可编辑组合框样式 对其他样式的一些调整 一些修复 继续阅读以获取详细信息。 可编辑的ComboBox新样式 JMetro早期版本的可编辑ComboBox看起来非常糟糕&am…

1s后跳转 android_优雅保活方案,原来Android还可以这样保活

作者:NanBox保活现状我们知道,Android 系统会存在杀后台进程的情况,并且随着系统版本的更新,杀进程的力度还有越来越大的趋势。系统这种做法本身出发点是好的,因为可以节省内存,降低功耗,也避免…

java mongo api_MONGODB的javaAPI简单应用

1 建立连接要建立MongoDB的连接,你只要指定要连接到的数据库就可以。这个数据库不一定存在,如果不存在,MongoDB会先为你建立这个库。同时,在连接时你也可以具体指定要连接到的网络地址和端口。下面的是连接本机数据库的一些例子&a…

wordpress致命错误怎么解决_pppoe错误是什么意思 pppoe错误怎么解决

最近有网友反应无线路由器上设置PPPoE拨号上网后,发现PPPoE连接不上,显示pppoe错误是什么意思呢?pppoe错误怎么解决呢?接下来详细为大家介绍:pppoe错误怎么解决无线路由器设置PPPoE拨号后,PPPoE拨号连接不上,不能够上…

java ssm 多租户_(十一)java B2B2C 源码 多级分销springmvc mybatis多租户电子商城系统- SSO单点登录之OAuth2.0登录流程(2)...

上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名密码实现OAuth2.0的登录认证):上面的图很清楚的描述了当前登录…

hibernate 序列_Hibernate身份,序列和表(序列)生成器

hibernate 序列介绍 在上一篇文章中,我谈到了不同的数据库标识符策略。 这篇文章将比较最常见的替代主要关键策略: 身份 序列 表(序列) 身份 IDENTITY类型(包括在SQL:2003标准中)受以下支持…

java中date加1s_是否有一个java库将描述时间度量(例如“1d 1m 1s”)的字符串转换为毫秒?...

解析器不是太复杂&#xff1a;public static long parse(String input) {long result 0;String number "";for (int i 0; i < input.length(); i) {char c input.charAt(i);if (Character.isDigit(c)) {number c;} else if (Character.isLetter(c) &&…

几何画板200个经典课件_项目制学科联动 | 金芬娥首席工作室:灵动“画板”,研修创新,协同进步...

西湖区成立115个“项目制首席教师工作室”&#xff0c;建立中小学、幼儿园学科联动机制&#xff0c;以专业发展为目标&#xff0c;以教育问题为导向&#xff0c;整合发挥学科教研员、学科带头人和名师工作室领衔人的智力资源&#xff0c;助推教师的专业成长及区域的学科建设。西…

通过这些简单的步骤从头开始学习Java

Java是用于软件开发的最流行的编程语言之一。 无论您的最终目标或技能水平如何&#xff0c;学习和掌握Java都将为您作为开发人员打开大门。 今天&#xff0c;我们将讨论一些原因&#xff0c;我们认为您应该开始学习Java&#xff0c;然后提供有关入门的深入路线图。 为什么要学…

vs 服务容器中已存在服务_敏捷基础设施和公共基础服务

敏捷基础设施和公共基础服务敏捷基础设施和公共基础服务是微服务架构的有力支撑&#xff1b;能够简化业务开发&#xff0c;提升架构能力的基线。Cloud Native的基石是微服务架构、敏捷基础设施和公共基础服务。敏捷基础设施 - 通过容器封装环境&#xff0c;开发人员可以直接将所…

java 的简单代码_java初学 简单代码

1.简单的java程序public class RightAndWrong {public static void main(String argc[]){boolean bool true;if (bool false){System.out.println("This is wrong!");}else{System.out.println("This is right!");}}}//编译 javac RightAndWrong.java//…

使用php吧excel数据存到数据库,php如何存excel数据到数据库

一、使用PHPExcel Parser Pro软件&#xff0c;但是这个软件为收费软件&#xff1b;二、可将EXCEL表保存为CSV格式&#xff0c;然后通过phpmyadmin或者SQLyog导入&#xff0c;SQLyog导入的方法为&#xff1a;将EXCEL表另存为CSV形式&#xff1b;打开SQLyog&#xff0c;对要导入的…

sle linux lftp禁止匿名登陆_软件测试常用linux命令整理

作为一个名软件测试工程师&#xff0c;掌握Linux的基本操作是必须的。下面罗列下linux的常用命令&#xff0c;方便大家今后操作linux时查找&#xff0c;然后通过[帮助命令]进行具体的使用。1、帮助命令man -- man 命令 查看命令的使用帮助说明。2、显示目录和文件的命令ls --…

对编写的代码进行单元测试_编写数据访问代码测试–单元测试是浪费

对编写的代码进行单元测试几年前&#xff0c;我是为我的数据访问代码编写单元测试的那些开发人员之一。 我正在孤立地测试所有内容&#xff0c;我对自己感到非常满意。 老实说&#xff0c;我认为自己做得很好。 哦&#xff0c;男孩&#xff0c;我错了&#xff01; 这篇博客文章…

用php模拟斗地主发牌,php模拟实现斗地主发牌

本文实例为大家分享了php实现斗地主发牌的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下闲来无聊&#xff0c;就写了这个方法&#xff0c;也算是熟悉下php的数组操作&#xff0c;还请各位大神多指教。$arr 数组&#xff0c;好像有点问题&#xff0c;应该 2>"…

python odoo_Odoo开发教程20-使用 Python 虚拟环境安装 Odoo第二讲

配置插件(add-ons)路径社区贡献的插件可以打包成 Python 库&#xff0c;发布到 Python 包索引(PyPI -Python Package Index)&#xff0c;然后像其它库一样使用 pip 安装。为了能使用这一方法&#xff0c;Odoo 自动添加了 sitepackages/文件夹至插件配置路径&#xff0c;用于安装…

如何在AWS EC2实例上部署Spring Boot应用程序

你好朋友&#xff0c; 在本教程中&#xff0c;我们将看到如何在AWS EC2实例上部署Spring Boot应用程序。 这是我们将要执行的步骤。 1.使用Spring Boot Initialiser创建一个Spring Boot项目。 2.创建一个休息端点&#xff0c;部署后我们可以访问 3.启动EC2实例 4.将我们的…

ps -ef grep java解释,ps -ef | grep java(示例代码)

ps命令将某个进程显示出来grep命令是查找中间的|是管道命令 是指ps命令与grep同时执行PS是LINUX下最常用的也是非常强大的进程查看命令grep命令是查找&#xff0c;是一种强大的文本搜索工具&#xff0c;它能使用正则表达式搜索文本&#xff0c;并把匹配的行打印出来。grep全称是…

python世界第一语言_Java 跌落神坛!Python 正式登顶世界第一编程语言

编程语言流行指数(PYPL)排行榜近日公布了2019年2月份榜单。在最新一期榜单上&#xff0c;Python的份额高达26.42&#xff05;&#xff0c;稳居第一&#xff0c;并且猛增5.2%&#xff0c;同时成为增长势头最好的语言。而被挤到第二的Java&#xff0c;目前份额为21.2&#xff05;…