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

每日五道java面试题之java基础篇(二)

在这里插入图片描述

第一题. 为什么说 Java 语⾔“编译与解释并存”?

⾼级编程语⾔按照程序的执⾏⽅式分为编译型解释型两种。

简单来说,编译型语⾔是指编译器针对特定的操作系统将源代码⼀次性翻译成可被该平台执⾏的机器码;解释型语⾔是指解释器对源程序逐⾏解释成特定平台的机器码并⽴即执⾏。

⽐如,你想读⼀本外国的⼩说,你可以找⼀个翻译⼈员帮助你翻译,有两种选择⽅式,你可以先等翻译⼈员将全本的⼩说(也就是源码)都翻译成汉语,再去阅读,也可以让翻译⼈员翻译⼀段,你在旁边阅读⼀段,慢慢把书读完。

Java 语⾔既具有编译型语⾔的特征,也具有解释型语⾔的特征,因为 Java 程序要经过先编译,后解释两个步骤,

由 Java 编写的程序需要先经过编译步骤,⽣成字节码( *.class ⽂件),这种字节码必须再经过 JVM,解释成操作系统能识别的机器码,在由操作系统执⾏。因此,我们可以认为 Java 语⾔编译与解释并存
在这里插入图片描述

第二题. Java 有哪些数据类型?

定义:Java 语⾔是强类型语⾔,对于每⼀种数据都定义了明确的具体的数据类型,在内存中分配了不同⼤⼩的内存空间。

Java 语⾔数据类型分为两种:基本数据类型和引⽤数据类型
在这里插入图片描述
基本数据类型:

  • 数值型
    • 整数类型(byte、short、int、long)
    • 浮点类型(float、double)
  • 字符型(char)
  • 布尔型(boolean)

Java 基本数据类型范围和默认值
在这里插入图片描述
引⽤数据类型:

  • 类(class)
  • 接⼝(interface)
  • 数组([])

第三题. 自动类型转换、强制类型转换?看看这⼏⾏代码?

Java 所有的数值型变量可以相互转换,当把⼀个表数范围⼩的数值或变量直接赋给另⼀个表数范围⼤的变量时,可以进⾏⾃动类型转换;反之,需要强制转换。
在这里插入图片描述
这就好像,⼩杯⾥的⽔倒进⼤杯没问题,但⼤杯的⽔倒进⼩杯就不⾏了,可能会溢出。

float f=3.4 对吗?
不正确。3.4 是单精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换 float f =(float)3.4; 或者写成 float f =3.4F

short s1 = 1; s1 = s1 + 1; 对吗? short s1 = 1; s1 += 1; 对吗?

对于 short s1 = 1; s1 = s1 + 1;编译出错,由于 1 是 int 类型,因此 s1+1 运算结果也是 int 型,需要强制转换类型才能赋值给 short 型。
⽽ short s1 = 1; s1 += 1;可以正确编译,因为 s1+= 1;相当于 s1 = (short(s1 + 1);其中有隐含的强制类型转换。

第四题 什么是⾃动拆箱/封箱?

  • 装箱:将基本类型⽤它们对应的引⽤类型包装起来;
  • 拆箱:将包装类型转换为基本数据类型;
    Java 可以⾃动对基本数据类型和它们的包装类进⾏装箱和拆箱。
    在这里插入图片描述
    举例:

Integer i = 10; //装箱
int n = i; //拆箱

第五题. &和&&有什么区别?

&运算符有两种⽤法: 短路与 、 逻辑与 。

&&运算符是短路与运算。逻辑与跟短路与的差别是⾮常巨⼤的,虽然⼆者都要求运算符左右两端的布尔值都是true 整个表达式的值才是 true。

&&之所以称为短路运算是因为,如果&&左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进⾏运算。很多时候我们可能都需要⽤&&⽽不是&。

例如在验证⽤户登录时判定⽤户名不是 null ⽽且不是空字符串,应当写为 username != null&&!username.equals(“”) ,⼆者的顺序不能交换,更不能⽤&运算符,因为第⼀个条件如果不成⽴,根本不能进⾏字符串的 equals ⽐较,否则会产⽣ NullPointerException 异常。
注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!
在这里插入图片描述


http://www.kler.cn/a/234136.html

相关文章:

  • 数据产品:深度探索与案例剖析
  • 相机光学(四十)——2x2 Adjacent Pixel Binning
  • 【JavaScript】为 setInterval()定义变量,存储ID
  • 排序算法 -快速排序
  • 第四十五章 Vue之Vuex模块化创建(module)
  • Git在版本控制中的应用
  • Go内存优化与垃圾收集
  • 安全之护网(HVV)、红蓝对抗
  • 蓝桥杯官网练习题(Excel地址)
  • 【Chrono Engine学习总结】3-地型terrain
  • Linux基础-配置网络
  • 数据分析基础之《pandas(7)—高级处理2》
  • hook函数——useRef
  • 无人机应用场景和发展趋势,无人机技术的未来发展趋势分析
  • ubuntu22.04安装部署03: 设置root密码
  • 机器学习简介
  • 2.9 Binance_interface APP 现货交易-限单价平仓
  • MySQL数据库-索引概念及其数据结构、覆盖索引与回表查询关联、超大分页解决思路
  • 人工智能之参数估计
  • 算法学习——LeetCode力扣栈与队列篇1
  • 计算机视觉主要知识点
  • CleanMyMac X 4.14.7帮您安全清理Mac系统垃圾
  • [UI5 常用控件] 08.Wizard,NavContainer
  • 论文笔记:相似感知的多模态假新闻检测
  • Nginx实战:3-日志按天分割
  • python coding with ChatGPT 打卡第19天| 二叉树:合并二叉树