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{
    @Override
    void 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后赋值

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【千帆AppBuidler】零代码构建AI人工智能应用,全网都在喊话歌手谁能应战,一键AI制作歌手信息查询应用

欢迎来到《小5讲堂》 这是《千帆平台》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 背景创建应用平台地址随机生成快速创建应用头像应用名称应用描述…

S32K3的中断向量表

S32K312的中断向量表所在文件名称是S32K312_COMMON.h 中断向量内容是&#xff1a; /*!* addtogroup Interrupt_vector_numbers Interrupt vector numbers* {*//** Interrupt Number Definitions */ #define NUMBER_OF_INT_VECTORS 229 /**< Number of inte…

knife4j在线文档 测试框架

一、Knife4j介绍&#xff1a; 1.1.介绍&#xff1a; Knife4j是基于SpringBoot构建的一个文档生成工具&#xff0c;它可以让开发者为我们的应用生成在线API文档&#xff1b; 目的是可以更加方便的基于API文档进行测试。 生成的文档还可以导出&#xff0c;然后给到前端开发团队…

pyenv 之 python 多版本管理(win11)

1. 背景 常常会用到Python的多个版本&#xff0c;因此可以使用Pyenv来对Python版本进行管理。 2. win11下载 pyenv 在终端执行下载语句&#xff1a; pip install pyenv-win --target D:\software\pyenv 其中 D:\software\pyenv 为你想要下载到的文件目录&#xff0c;建议在 …

党务政务服务热线|基于SSM的党务政务服务热线平台(源码+数据库+文档)

目录 基于SprinBootvue的党务政务服务热线平台 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2后台功能模块 5.2.1管理员功能模块 5.2.2部门功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; …

CSRF 攻击实验:更改请求方式绕过验证

前言 CSRF&#xff08;Cross-Site Request Forgery&#xff09;&#xff0c;也称为XSRF&#xff0c;是一种安全漏洞&#xff0c;攻击者通过欺骗用户在受信任网站上执行非自愿的操作&#xff0c;以实现未经授权的请求。 CSRF攻击利用了网站对用户提交的请求缺乏充分验证和防范…

抖音剪辑音乐配乐音效合集,短视频制作分类配乐库素材

一、素材描述 这是一套短视频剪辑配乐库&#xff0c;包含大气震撼、儿童幽默、片头片尾、科技未来、惊险悬念、婚礼婚庆、各种各样、轻松明朗、民族风格、叙事抒情等配乐分类&#xff0c;基本上是应有尽有了。本套配乐库素材&#xff0c;大小18.18G&#xff0c;5个分卷压缩文件…

Git使用(3):版本管理

一、查看历史 编写一个java类进行测试 选择Git -> Show Git Log查看日志。 第一次修改推送到远程仓库了&#xff0c;所以有origin&#xff08;远程仓库地址&#xff09;&#xff0c;第二次修改只提交到本地仓库所以没有。 二、版本回退 1、本地回退 在要回退的版本上右键&a…

使用Flask-SocketIO构建实时Web应用

文章目录 准备工作编写代码编写HTML模板运行应用 随着互联网的发展&#xff0c;实时性成为了许多Web应用的重要需求之一。传统的HTTP协议虽然可以实现实时通信&#xff0c;但是其长轮询等机制效率低下&#xff0c;无法满足高并发、低延迟的需求。为了解决这一问题&#xff0c;诞…

计算机网络实验2:路由器常用协议配置

实验目的和要求 掌握路由器基本配置原理理解路由器路由算法原理理解路由器路由配置方法实验项目内容 路由器的基本配置 路由器单臂路由配置 路由器静态路由配置 路由器RIP动态路由配置 路由器OSPF动态路由配置实验环境 1. 硬件&#xff1a;PC机&#xff1b; 2. 软…

3588 pwm android12 的操作,包含 NDK native C++

问题&#xff1a; 客户需要在android12 的界面上操作板卡上的 PWM 蜂鸣器设备。 过程&#xff1a; 1 了解一下 3588 android12 源码的 关于PWM 的驱动。 设备树找不到 pwm 但是&#xff0c; 还不知道&#xff0c;android12 最终包含的 设备树是哪个&#xff0c;但是经过我的…

【吊打面试官系列】Java高并发篇 - 并发编程三要素?

大家好&#xff0c;我是锋哥。今天分享关于 【并发编程三要素&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 并发编程三要素&#xff1f; 1、原子性 原子性指的是一个或者多个操作&#xff0c;要么全部执行并且在执行的过程中不被其他操作打断&#xff0c;要…

MySQL和吉客云单据接口对接

MySQL和吉客云单据接口对接 源系统:吉客云 杭州吉客云网络技术有限公司是经国家认定的高新技术企业&#xff0c;是国内领先的SaaSERP软件服务商&#xff0c;致力于为企业提供安全稳定、高可用性和高扩展性的一站式数字化解决方案。 写入目标:MySQL MySQL是最流行的数据库之一&a…

算法day06

第一题 1658. 将 x 减到 0 的最小操作数 如题上述&#xff1a; 本题原来的意思给定一个数字x&#xff0c;从数组的左边或者右边 使用x减去数组中的数字&#xff0c;直到减去最后一个数字为0时&#xff0c;返回最小的操作次数&#xff1b;如果最终减去的数组中的数字之后不能得…

MySQL数据库从入门到精通(下)

对表做了修改之后&#xff0c;记得点击对应图标按钮重新执行一下。 1.创建角色表 数据库一开始就要设计好&#xff0c;轻易不要改动。一个账号下可能有多个角色&#xff0c;所以我们单独再创建另一个表role用来存储所有的角色信息。其中idrole表示角色id&#xff0c;name表示名…

【NR学习一】NR中的带宽、子载波间隔、PRB数量、FFT点数与采样率之间的关系

NR中的带宽、子载波间隔、PRB数量、FFT点数与采样率之间的运算关系 在5G NR&#xff08;New Radio&#xff09;系统设计中&#xff0c;带宽&#xff08;Bandwidth&#xff09;、子载波间隔&#xff08;Subcarrier Spacing, SCS&#xff09;、资源块&#xff08;Resource Block…

移动烽火HG光猫超密破解

1、查找mac地址 cmd 运行 arp -a 192.168.1.1 2、开启telnet功能 浏览器输入 http://192.168.1.1/cgi-bin/telnetenable.cgi?telnetenable1&key3086F178B450 注释&#xff1a; telnetenable1 开启telnet功能 key 是第一步查询的mac地址&#xff0c;去掉横线、小写…

玩转Matlab-Simscape(初级)- 05 - 基于Solidworks、Matlab Simulink、COMSOL的协同仿真(理论部分1)

** 玩转Matlab-Simscape&#xff08;初级&#xff09;- 05 - 基于Solidworks、Matlab Simulink、COMSOL的协同仿真&#xff08;理论部分1&#xff09; ** 目录 玩转Matlab-Simscape&#xff08;初级&#xff09;- 05 - 基于Solidworks、Matlab Simulink、COMSOL的协同仿真&am…

Unity里的Time

Time and frame rate management Time类&#xff1a; Time script reference page. 一些常见的属性有&#xff1a; Time.time 返回从游戏开始经历的时间.Time.deltaTime 返回从上帧结束到现在经历的时间&#xff0c;和帧率成反比Time.timeScale 控制时间流逝的因子Time.fixe…

web前端框架设计第八课-表单控件绑定

web前端框架设计第八课-表单控件绑定 一.预习笔记 1.v-model实现表单数据双向绑定 2.搜索数据的实现 3.全选案例实现1—JQ方法 4.单选案例实现 5.数据级联&#xff08;二级级联&#xff09; 6.v-model中的修饰符 二.课堂笔记 三.课后回顾 –行动是治愈恐惧的良药&#xff0c…