JAVA面试库

1、基础

1.1、面向对象编程有哪些特性

1、抽象

抽象就是对同一个目标的共有的属性、特征、方法、功能、行为等进行抽取并归纳总结,它是一种将复杂现实简单化为模型的过程,它关注的是对象行为,而不用关注具体的实现细节。

在面向对象编程中,抽象主要是通过抽象类和接口来实现的:

  • 抽象类是不能被实例化的,它包含一些抽象的方法和具体的实现方法。
  • 接口是一种特殊的抽象类型,一般仅包含抽象方法的声明,在java8+中可以包含默认的方法和静态方法实现

抽象可以在不知道具体实现的情况下编程,提高了代码的灵活性和拓展性。

2、封装

封装就是指隐藏对象的属性和实现细节,将对象的数据、属性、行为、方法等组合到下一个单一的单元中,并通过访问修饰符控制成员属性的访问和修改权限,再通过特定公开的方法setter和getter方法暴露给外面访问。

private String name = "ccshen";public String getName(){return name;
}

name属性被private封装起来,外面只能通过对象的getName才能访问。

3、继承

继承是一种实现代码重用的机制,允许一个类继承另一个类的成员和方法,使得子类也能具有父类相同的行为。

继承是通过 extends 关键字实现的:

public class Dog extends Animal{@Overridevoid eat(){System.out.printIn("狗吃饭")}
}

java类之间只能实现单继承,接口之间可以多继承。

4、多态 

多态指同一个行为在不同情况下的多种不同表现形式或形态,主要体现为同一个接口或父类的引用指向不同的实现对象,并能够在运行时动态决定调用的具体实现,这使得程序具有更好的灵活性和可扩展性。

Animal animal = new Dog();
animal.eat();

通过父类引用变量指向子类时,当调用父类的方法时,它实际上会根据实际对象的类型,去调用子类中的方法。

1.2、JDK与JRE的区别

JDK:是整个Java的核心,包含了Java的运行环境(JRE)和一系列Java开发工具完整包。

JRE:是Java程序的运行环境,包含JVM、Java核心类库等。JRE只能运行Java应用程序,不能用于编译开发,它是JDK的子集。

安装JDK后就有JRE目录,JRE属于JDK的子集。

1.3、如何编译和运行Java文件  

使用javac命令来编译.java文件        

javac Test.java

运行后会生成Test.class文件

1.4、Java标识符命名规则

  • 标识符只能由字母、数字、下划线(_)、美元符号($)组成
  • 标识符不能由数字开头
  • 标识符不能使用Java关键字,比如 for 
// 类名
class User(){// 变量名int firstName;// 常量名private static final int default_code = 60;// 合法方法名public void setFirstName(int firstName){this.firstName = firstName;}
}

1.5、Java定义常量

Java常量是指使用final修饰的变量,它们的值在初始化后不能被改变

final int age = 30;

加修饰范围,以及静态关键字

private static final age = 30;

常量的作用域可以是类级别(普通、静态),方法级别。

1.6、Java有哪几种基本数据类型 

Java有 4类 8种 数据类型

整数型:byte、short、int、long

浮点型:float、double

字符型:char

布尔型:boolean

1.7、== 和 equals 比较有什么区别

==

如果比较的对象是基本的数据类型,则比较的是数值是否相同

如果比较的对象是引用数据类型,则比较的是对象的地址是否相同

equals

equals是Object类提供的方法,接收Object参数类型

用来比较两个对象是否相等,默认比较的是对象地址,不能用于比较基本数据类型,但可以是包装类型,所以,如果是要比较两个对象的值是否相等,一般需要重写equals与hashcode方法 。

比如常用的String、Date、Integer等类都重写了equals和hashcode方法,比较的是存储对象的内容是否相等,而不是堆内存地址。     

1.8、s1 = s1 + 1 和 s1 += 1 区别 

如果s1原有数据类型小于int类型,则s1 = s1 + 1发生编译异常

因为s1是short类型,1是int类型,所以计算结果为int类型,它不能自动转换为比它小的数据类型,所以发生编译异常。

解决办法使用类型强制转换:

public static void main(String[] args){short s1 = 1;s1 = (short)(s1 + 1);// s1 = 2
}

使用s1 += 1不会有问题,因为 s1 += 1;支持隐式强制类型转换

public static void main(String[] args){short s1 = 1;s1 += 1;// s1 = 2
}

1.9、float n = 1.8 有错吗

有错!!!

因为double是双精度型浮点型,float是单精度型浮点型。

数字1.8默认是double类型,如果将一个double类型的值赋值给一个float类型的变量时,需要进行类型转换,因为double类型的精度高于float类型。

这种情况,如果不显示进行类型转换,编译器报错,因为可能会有精度丢失

因此需要强制类型转换或后面加上F:

float n = (float)1.8;

float = 1.8F;

1.10、i++ 与 ++i 区别

i++是先赋值后加1,++1是先加1后赋值

 

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

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

相关文章

CPT7数据保存详细步骤

一、连接设备、打开NovAtelConnect 软件 (1)点击1,并在2中输入如下命令: LOG RANGEB ONTIME 1 // 输出原始数据记录在板卡LOG RAWEPHEMB ONTIME 1 // 输出 GPS 原始星历记录在板卡LOG bdsephemerisb ONTIME 1 // 输出

关爱内向儿童:理解与支持助力成长

引言 每个孩子都是独特的,有些孩子天生性格外向,善于表达,而有些孩子则比较内向,喜欢独处。内向并不是缺点,而是一种性格特质。然而,内向的孩子在社交和学习过程中可能会面临一些挑战。本文将探讨内向儿童…

沉钒废水回收钒

沉钒废水处理与钒回收的重要性 沉钒废水是含钒元素的特殊废水,钒在工业生产中广泛应用,但其排放造成资源浪费与环境威胁。为实现钒的有效回收,研究和实践了多种处理技术。 沉钒废水处理技术 1. 化学沉淀法:添加沉淀剂&#xff…

【Linux】linux | 配置系统日志 | 安全日志 | 操作日志 | 登录日志

一、诉求 1、linux服务器开启日志功能,并记录10个月的登录 二、操作 1、进入目录 cd /etc 2、编辑配置 vi logrotate.conf 3、复制配置 /var/log/wtmp {monthlycreate 0664 root utmpminsize 1Mrotate 10 }/var/log/btmp {missingokmonthlycreate 0600 root …

【动态规划】子序列问题II|最长定差子序列|最长的斐波那契数列的长度|最长等差数列|等差数列的划分

一、最长定差子序列 1218. 最长定差子序列 算法原理: 💡细节: 1.正常创建dp表,分析状态转移方程:可能b存在于多个不同的位置,那么要用哪个下标的dp呢? 用最后一个b的,因为用前面的可…

C++ 将字符串解析为argc、argv

文章目录 前言一、如何实现?1、实现split2、split双引号3、奇数下标元素加入结果4、偶数下标元素split空格 二、完整代码三、使用示例1、解析命令行2、构造argc、argv 总结 前言 一般开启子进程的时候,需要传参数,通常直接传输命令行字符串&…

怎么做微信在线预约

在快节奏的现代生活中,我们总是追求更高效、更便捷的服务体验。而微信,这个拥有数亿用户的社交平台,早已不仅仅是一个聊天工具,它更是一个融合了多种功能的综合性服务平台。今天,就让我们一起探讨如何通过微信在线预约…

软考--试题六--中介者模式(Mediator)

中介者模式(Meditor) 意图 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互 结构 适用性 1、一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关…

机房、配电室可视化运维这么卷?不搞3D,出门没法打招呼。

机房和配电室的可视化运维确实可以非常复杂和卷。通过使用3D技术,可以更加直观地展示机房和配电室的布局、设备分布和运行状态。 以下是一些与机房和配电室可视化运维相关的关键点: 3D建模:使用计算机图形学和3D建模软件,可以创建…

亚马逊测评真人号与自养号:如何选择?区别与作用全面解析

亚马逊卖家都希望能打造出热销产品的产品列表,因为评论对于列表的曝光和流量有着巨大的影响。然而,获取有效的产品评论并不容易,许多卖家为了提高自己产品在同类别中的竞争力,选择进行测评。测评可以快速提高产品的排名、权重和销…

AGV小车有什么优点?后期将在各行业逐渐取代人工物料搬运

AGV 随着工厂自动化、计算机集成制造系统技术的逐步发展、及柔性制造系统、自动化立体仓库的广泛应用,AGV作为连接和调节离散型物流管理系统使作业连续化的必要自动化搬运装卸手段,其应用范围和技术水平有了更为迅猛的发展。 AGV立体仓库 随着AGV自动化技…

WebGL软件的开发框架

WebGL(Web Graphics Library)是一种用于在网页浏览器中实现3D图形渲染的JavaScript API。它允许开发者利用图形处理单元(GPU)来实时渲染复杂的3D场景,从而创建出令人惊叹的交互式体验。在WebGL开发中,有一些…

记PLSQL链接Oracle数据库

一、环境 Windows环境安装plsql工具 Oracle部署在服务器上面。 由于我之前在本地Windows安装了一个Oracle数据库,结果导致之前已经在连接的PLSQL链接不上。 二、操作 PLSQL工具正常安装,主要就是一些Oracle的一些配置,和oracle客户端。 o…

农林科学SCI期刊,IF=6+,影响力高,对国人非常友好!

一、期刊名称 Crop Journal 二、期刊简介概况 期刊类型:SCI 学科领域:农林科学 影响因子:6.6 中科院分区:1区 出版方式:开放出版 版面费:$900 三、期刊征稿范围 《作物杂志》是一份双月刊、国际、同…

Pikachu 靶场敏感信息泄露通关解析

前言 Pikachu靶场是一种常见的网络安全训练平台,用于模拟真实世界中的网络攻击和防御场景。它提供了一系列的实验室环境,供安全专业人士、学生和爱好者练习和测试他们的技能。 Pikachu靶场的目的是帮助用户了解和掌握网络攻击的原理和技术,…

RTMP低延迟推流

人总是需要压力才能进步, 最近有个项目, 需要我在RK3568上, 推流到公网, 最大程度的降低延迟. 废话不多说, 先直接看效果: 数据经过WiFi发送到Inenter的SRS服务器, 再通过网页拉流的. 因为是打金任务, 所以逼了自己一把, 把RTMP推流好好捋一遍. 先说说任务目标, 首先是MPP编码…

Docker部署nacos集群

前提: 购买一台服务器 虚拟机也行 ,无论是哪一个内存都要足够 阿里:https://ecs-buy.aliyun.com/ecs?spm5176.8789780.J_4267641240.2.1e7e39fbopfoRn#/custom/prepay/cn-hangzhou 腾讯 、华为。。。。我目前只使用过这三个。 下载 Xshell …

第十节:Vue指令:v-for列表循环

1. 数组的循环 用 v-for 指令根据一组数组的选项列表进行渲染。 1.1 通过索引渲染数组内容 通过数组的索引获取数组的数据 <div id"app"><ul><li>{{ fruites[0] }}</li><li>{{ fruites[1] }}</li><li>{{ fruites[2] …

Spring:了解@Import注解的三种用法

一、前言 在 Spring 框架中&#xff0c;Import 注解用于导入配置类&#xff0c;使得你可以在一个配置类中引入另一个或多个配置类&#xff0c;从而实现配置的模块化。这对于组织大型应用程序的配置非常有用&#xff0c;因为它允许你将配置分散到多个类中&#xff0c;然后再将它…

C语言如何创建⼀个动态链表?

一、问题 创建动态链表就是指在程序执⾏过程中&#xff0c;从⽆到有&#xff0c;按照需求开辟结点和输⼊各结点数据&#xff0c;并建⽴起前后相连接的关系。那么&#xff0c;如何创建动态链表呢&#xff1f; 二、解答 以建⽴⼀个有任意名学⽣数据的单向动态链表为例&#xff0…