Java面试题

JVM、 JRE、 JDK之间的关系 

     
JVM负责将Java字节码翻译成机器码,以便在特定平台上执⾏Java程序。
JDK是Java的开发⼯具包,它包含了开发和编译Java程序所需的⼯具,以及运⾏Java程序的JRE
JRE是Java应⽤程序运⾏的环境,它包含了运⾏Java程序所需的库、 Java虚拟机(JVM)以及其他⽀持⽂件。

简⽽⾔之, JVM提供了Java程序运⾏的虚拟环境, JDK是⽤于开发Java程序的⼯具包,⽽JRE是⽤于运⾏Java程序的
环境。在开发阶段,你需要JDK;⽽在部署和运⾏阶段,你只需要JRE。

Java有⼏种数据类型
  • 整型: byte 、 short、 int、 long (int默认)

  • 浮点型: float 、 double (double默认)

  • 布尔型: boolean

  • 字符型: char

对应的包装类为 Byte 、 Short 、 Integer 、 Long 、 Float 、 Double 、 Character 、 Boolean

基础数据类型的转换⽅式
  • ⾃动类型转换:⼩–>⼤ byte --> short --> int --> long --> float --> double
  • 强制类型转换:⼤–>⼩ ⼩类型 变量名 = (⼤类型) 值
     

注意:⾃增/⾃减运算符、复合赋值运算符底层做了优化,内部⾃动强制类型转换; 如:++, --, +=, -=, ......

基本类型和包装类型的区别


为了在对象环境中使⽤基本类型, Java提供了对应的包装类型。

  • 基本类型直接存储数据值,在栈上分配内存,占⽤固定的内存空间,
  • 包装类型是对象动态分配内存,在堆上创建,包含额外的信息,例如⽅法和字段,同时也占⽤更多的内存空间。

不过Java提供了⾃动装箱(autoboxing)和拆箱(unboxing)的功能,使得基本类型和包装类型之间的转换更加
⽅便。

什么是⾃动装箱和⾃动拆箱

⾃动装箱是指将基本类型转换为对应的包装类型,⽽⾃动拆箱是指将包装类型转换为对应的基本类型。这些转换通常由编译器⾃动处理。

装箱其实就是调用了包装类的valueOf()方法,拆箱其实就是调用了xxxValue()方法。

注意:所有整型包装类对象之间值的标记,全部使用equals方法比较。

成员变量和局部变量的区别

1.声明位置:

  • 成员变量:声明在类中,但在方法,构造函数或块之外。它们是类的一部分,因此可以被整个类的方法访问。
  • 局部变量:声明在方法,构造函数或块中。它们只在声明它们的方法,构造函数或块中可见。

2.作用域

  • 成员变量:具有类的整个实例的生命周期,可以在整个类中使用。
  • 局部变量:仅在声明它们的方法,构造函数或块中可见,并且只在该方法,构造函数或块的执行期间存在。

3.生命周期

  • 成员变量:随着对象的创建而创建,随着对象的销毁而销毁。
  • 局部变量
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人生如梦亦如幻唯心在

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值