JAVA面试基础(一)

1.为什么Java代码可以实现一次编写、到处运行?
JVM是Java跨平台的关键。
在程序运行前,java源代码.java需要经过编译器编译成字节码.class。在程序运行时,JVM负责将字节码翻译成特定平台下的机器码并运行,也就是说,只要在不同的平台上安装对应的JVM,就可以运行字节码文件。
注意:
1.编译的结果是生成字节码而不是机器码,字节码不能直接运行,必须通过JVM翻译成机器码才能运行。
2.跨平台的是java程序,而不是JVM。

2.一个Java可以有多个类吗(不含内部类)
1.一个java文件里可以有多个类,但是最多只能有一个被public修饰的类
2.如果这个文件中包含pubilc修饰的类,那么这个类名必须和java文件名一致。

3.Java访问权限的了解
java语言为我们提供了三种访问修饰符,分别是private、protected、public,在使用这些修饰符修饰目标的时候,一个可以形成四种访问权限,多一种是default,这是在不加任何修饰符的时候就是default。

修饰成员变量或者是成员方法的时候:
private:该成员可以被该类内部成员访问
default:该成员可以被该类内部成员访问,也可以被同一个包下其他的类访问
protected:该成员可以被该类内部成员访问,也可以被同一个包下其他的类访问,还可以被它的子类访问
public:该成员可以被任意包下,任意类的成员进行访问

修饰类的时候,只有两种访问权限:
default:该类可以被同一个包下其他类访问
public:该类可以被任意包,任意类访问

4.java的数据类型
java数据类型分为基本数据类型引用数据类型
基本数据类型有8个,可以分为4个小类:

整数类型(byte/short/int/long)
byte:1字节 8bit,数据范围-2^7 ~ 2^7 -1
short: 2字节 16bit 数据范围 -2^15 ~ 2^15 -1
int: 4字节 32bit 数据范围 -2^31 ~ 2^31 - 1
long: 8字节 64bit 数据范围 -2^63 ~ 2^63 - 1

浮点类型(float/double)
float: 4字节 32bit 数据范围大约是 -3.4 * 10^38 ~ 3.4 * 10^38
double: 8字节 64bit 数据范围大约是 -1.8 * 10^38 ~ 3.4 * 10^38

字符类型(char)
char: 2字节 16bit 数据范围是\u0000 ~ \uffff

布尔类型(boolean)
boolean:java没有明确规定,不同JVM实现机制不同

引用数据类型就是对一个对象的引用,可以把其分为3类:
数组、类、接口
引用本质还是通过指针指向堆中的内存空间,只是java语言不再沿用指针这个说法

5.成员变量和局部变量的区别
java中的变量分为成员变量局部变量,区别如下:
成员变量
1.成员变量是在类的范围里面定义的变量
2.成员变量有默认初始值
3.未被static修饰的成员变量也叫实例变量,它存储于对象所在的堆内存中,生命周期和对象一样
4.被static修饰的成员变量也叫类变量(静态变量),存储于方法区中,生命周期和当前类一样

局部变量
1.局部变量是在方法里定义的变量
2.局部变量没有默认初始值
3.局部变量存储于栈内存中,作用的范围结束,变量空间会自动释放

6.为什么会有包装类
java语言是面向对象的语言,设计理念是“一切皆于对象”。但是8种基本数据类型出现了例外,因为他们都不具备对象的特征,所以java为每个基本数据类型都定义了一个对应的引用类型,也就是包装类

7.如何对Integer和Double类型判断相等
首先Integer和Double是不能直接比较的,是因为:
1.不能用==进行比较,因为他们不是相同的数据类型
2.不能转为字符串进行比较,因为浮点数有小数点,整数值不带,永远不可能相等
3.不能用CompareTo进行比较,因为该方法只针对相同类型进行比较

但是他们都继承于Number类型,所以可以把他们两个分别转为相同的基本数据类型(如double)再使用==进行比较

Integer i = 100;
Doubel d = 100.0;
System.out.println(i.doubleValue() == d.doubleValue());
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值