当前位置: 首页 > web >正文

“数据类型与OOP核心”的一些问题


问:Java 中有哪些基本数据类型?

答:Java 提供了 8 种基本数据类型,分为四类:

  • 整数类型byte(1 字节,范围:-128 到 127)、short(2 字节,范围:-32,768 到 32,767)、int(4 字节,范围:-2^31 到 2^31-1)、long(8 字节,范围:-2^63 到 2^63-1)。
  • 浮点类型float(4 字节,单精度,约 6~7 位有效数字)、double(8 字节,双精度,约 15 位有效数字)。
  • 字符类型char(2 字节,采用 Unicode 编码,范围:‘\u0000’ 到 ‘\uffff’)。
  • 布尔类型boolean(理论上占用 1 位,实际存储可能为 1 字节,取值为 truefalse)。

这些基本数据类型在内存中的大小和默认值是面试中常考的基础知识。


问:基本类型与包装类型的区别是什么?

答:基本类型是 Java 的内置类型,存储在栈内存中,效率较高。包装类型是基本类型的对象表示,存储在堆内存中,提供了更多的方法和功能。

例如,int 对应的包装类型是 Integerchar 对应的是 Character。包装类型允许在集合中使用基本类型的值,并提供了如 null 值的支持。


问:自动装箱与拆箱的原理是什么?

答:自动装箱是指 Java 编译器自动将基本类型转换为对应的包装类型,自动拆箱则是将包装类型转换为基本类型。

例如:

Integer a = 5; // 自动装箱
int b = a;     // 自动拆箱

需要注意的是,频繁的装箱和拆箱可能会影响性能,尤其是在循环或大量数据处理时。


问:为什么浮点数运算可能会有精度丢失?

答:浮点数在计算机中采用二进制表示,某些十进制小数无法精确表示,导致精度丢失。

例如,0.1 在二进制中是一个无限循环小数,无法精确表示。

因此,在涉及精确计算(如财务计算)时,建议使用 BigDecimal 类。


问:String 是基本数据类型吗?为什么?

答:String 不是基本数据类型,而是一个引用类型的类。

它是 Java 中非常常用的类,具有不可变性(immutable),即一旦创建,其值不能更改。这种设计有助于提高性能和安全性,特别是在多线程环境下。


问:面向对象的三大特征是什么?

答:面向对象编程的三大特征是封装、继承和多态。

  • 封装(Encapsulation):将数据和操作数据的方法封装在一起,隐藏内部实现细节,只暴露必要的接口。
  • 继承(Inheritance):子类可以继承父类的属性和方法,实现代码重用。
  • 多态(Polymorphism):同一个方法在不同对象上表现出不同的行为,主要通过方法重载和方法重写实现。

这些特性是面向对象编程的核心,有助于提高代码的可维护性和扩展性。


问:抽象类和接口的区别是什么?

答:抽象类和接口都是用于定义类的规范,但有以下区别:

  • 抽象类
    • 可以包含成员变量、构造方法和非抽象方法。
    • 使用 abstract 关键字定义。
    • 适用于具有共性的类。
  • 接口
    • 只能包含常量和抽象方法(Java 8 以后可以包含默认方法和静态方法)。
    • 使用 interface 关键字定义。
    • 适用于定义行为规范。

选择使用抽象类还是接口,取决于具体需求。


问:方法重载(Overload)与方法重写(Override)的区别是什么?

答:方法重载和方法重写都是实现多态的方式,但有以下区别:

  • 方法重载
    • 发生在同一个类中。
    • 方法名相同,参数列表不同。
    • 与返回类型无关。
  • 方法重写
    • 发生在子类与父类之间。
    • 方法名、参数列表和返回类型必须相同。
    • 访问修饰符不能比父类更严格。

理解这两个概念有助于掌握多态性。


问:Java 中的访问修饰符有哪些?各自的访问范围是什么?

答:Java 中的访问修饰符有四种:

  • private:仅在同一个类中可见。
  • default(无修饰符):在同一个包中可见。
  • protected:在同一个包中以及子类中可见。
  • public:在所有地方可见。

合理使用访问修饰符有助于实现封装性。


问:Java 中的多态是如何实现的?

答:Java 的多态主要通过方法重写和接口实现来实现。

当父类引用指向子类对象时,调用的方法是子类中重写的方法,而不是父类的方法。这使得程序具有更好的扩展性和可维护性。


http://www.xdnf.cn/news/6830.html

相关文章:

  • 团队模式总结
  • python第二十七天
  • 吉客云数据集成到金蝶云星空的最佳实践
  • ai agent(智能体)开发 python高级应用4:什么是代理,如何设置squid代理服务器,让crawl4ai 0.6.3 用上代理,获取到数据平权
  • MySQL中表的增删改查(CRUD)
  • 【Win32 API】 lstrcpyA()
  • Python3.12之解决:externally-managed-environment问题(二十九)
  • 薄膜压力传感器主要应用场景
  • STM32外设AD-轮询法读取模板
  • 系统架构设计师案例分析题——web篇
  • 软考 系统架构设计师系列知识点之杂项集萃(61)
  • vue.js中的列表过滤+排序
  • Qt窗口中消除边框的解决方法
  • DAY24元组和OS模块
  • 【mysql】并发 Insert 的死锁问题 第二弹
  • Spring actuator
  • SQLMesh 增量模型从入门到精通:5步实现高效数据处理
  • 云、边、端
  • Echart设置圆饼图pie中间文字排版
  • 物体雅克比、空间雅克比、解析雅克比、几何雅克比
  • JDK 9中对字符串的拼接做了什么
  • 几个正整数常用的位运算操作
  • 获取淘宝商品评论API接口(item_review)返回参数说明。
  • 项目依赖版本修改
  • 浮点数截断法:四舍五入的精确模拟
  • 第三十二节:特征检测与描述-Harris 角点检测
  • 实变函数 第二章 点集
  • 数据结构与算法——单链表(续)
  • NoSQL数据库复习题目要点
  • 北斗导航 | 基于深度学习的卫星导航数据训练——检测识别故障卫星