Java全栈面试题1】JavaSE

目录

[1. java为什么能够跨平台运行?](#1. java为什么能够跨平台运行?)

[2. Java代码是如何运行的?](#2. Java代码是如何运行的?)

[3. JVM,JRE,JDK 分别是什么](#3. JVM,JRE,JDK 分别是什么)

[4. Java中有哪些基本类型?](#4. Java中有哪些基本类型?)

[5. char为什么能存储一个汉字?](#5. char为什么能存储一个汉字?)

[6. 谈谈&和&&的区别?](#6. 谈谈&和&&的区别?)

[7. switch语句里面的条件可不可以是byte、long、String?使用时候还应注意什么?](#7. switch语句里面的条件可不可以是byte、long、String?使用时候还应注意什么?)

[8. switch中支持的类型](#8. switch中支持的类型)

[9. return,break,continue 的区别](#9. return,break,continue 的区别)


1. java为什么能够跨平台运行?

【技术难度:1 出现频率:2 】

靠的就是JVM虚拟机,.java代码文件被javac编译器编译为.class字节码文件,这一步在所有平台上都是一样的,但是字节码文件会被不同平台其对应版本的虚拟机翻译为能在当前平台运行的机器码文件。

因此,不同的系统平台只需要安装对应系统版本的JVM虚拟机,就可以运行相同的Java程序,就实现了跨平台运行。

扩展:

Java的代码文件后缀为".java"

Java的字节码文件后缀为".class"


2. Java代码是如何运行的?

【技术难度:1 出现频率: 1 】

Java代码文件,通过(Java编译器)javac.exe程序转换成后缀****.class**** 字节码 文件,再通过java.exe程序启动JVM 虚拟机,JVM虚拟器将字节码翻译成机器码交给当前平台执行。
注意:
是由编译器编译为.class字节码文件,由JVM虚拟机将字节码翻译成当前JVM版本的机器码


3. JVM,JRE,JDK 分别是什么

【技术难度: 2 出现频率:1 】

1.JVM:即Java虚拟机,是虚拟出来的一台计算机,将字节码翻译成当前平台的机器码给平台执行;

2.JRE:运行JAVA程序的最小环境,JRE等于JVM加Java的基础类库;

3.JDK:开发JAVA程序的最小环境,JDK等于JRE加开发工具(编译javac.exe、运行java.exe等)。

总结:开发java程序的最小环境是JDK,运行Java程序的最小环境是JRE,JDK包含JRE,JRE包含JVM。

扩展:

JVM:Java Virtual Machine - Java虚拟机

JRE:Java Runtime Environment - java运行环境

JDK:Java Development Kit - java开发工具

如果你只是想运行一个Java程序的机器码,而不需要编译Java代码,那么JRE就足够了。


4. Java中有哪些基本类型?

【技术难度:1 出现频率:1 】

分类分为整型、浮点型、布尔型、字符型:

1.整型有byte、short、int、long,用于存整数,对应的占用字节数为1、2、4、8字节;

2.浮点型有float、double,用于存小数,对应的占用字节数为4、8字节;

3.布尔型有boolean,用于存真假值,占1字节;

4.字符型有char,用于存单个字符对应的Unicode码,占2字节。

辅助记忆:

|-----|------|-------|-----|------|-------|--------|---------|------|
| 类型 | byte | short | int | long | float | double | boolean | char |
| 字节数 | 1 | 2 | 4 | 8 | 4 | 8 | 1 | 2 |

byte 2^(8-1)-1 = 127

byte b2 = 128; // 超出范围会 报错 ,没有类 C 语言的截断机制


5. char为什么能存储一个汉字?

【技术难度: 1 出现频率:1 】

实际上char 中存储的是数字,这个数字对应Unicode字符集中的字符的编号。Unicode字符集中包括汉字,所以能使用char型变量存储汉字。(Unicode两字节,中文三字节)

char类型变量能用三种方式赋值:

数字,字符,字符串 + charAt() + 下标

扩展:

char表示字符,采用UTF-16编码,UTF-16编码实现了Unicode字符集,Unicode两字节。


6. 谈谈&和&&的区别?

【技术难度: 1 出现频率:1 】

1.&和&&都可以表示逻辑与运算符,当运算符两边的表达式结果都为true时,整个运算结果才为true,否则只要有一边为false,则结果为false;

2.&&还具有短路 的功能,从左往右看,若第一个表达式为false,则不再计算第二个表达式;

3.&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作。


7. switch语句里面的条件可不可以是byte、long、String?使用时候还应注意什么?

【技术难度: 1 出现频率:1 】

switch里面的条件必须是能隐式的转化成为int的,所以byte可以,long不行。jdk1.7之后支持用String类型作为条件和case标签。

使用switch时应注意它的穿透,使用break避免发生穿透现象。


8. switch中支持的类型

【技术难度: 1 出现频率:1 】

支持byte、short、int、char和它们对应的包装类 ,以及枚举enum。jdk1.7开始还支持 String字符串。(switch里面的条件必须是能隐式的转化成为int的 或是 String)


9. return,break,continue 的区别

【技术难度: 1 出现频率:1 】

1.return返回,离开当前方法,当前方法后面的代码不再执行;

2.break打破,跳出循环,当前循环剩下的代码和剩余的循环次数都不再执行;

3.continue继续,跳过本次循环中后面的代码,进入下次循环。


------------------------END-------------------------

才疏学浅,谬误难免,欢迎各位批评指正。

相关推荐
程序员清风1 小时前
小红书二面:Spring Boot的单例模式是如何实现的?
java·后端·面试
belhomme1 小时前
(面试题)Redis实现 IP 维度滑动窗口限流实践
java·面试
Be_Better1 小时前
学会与虚拟机对话---ASM
java
开源之眼4 小时前
《github star 加星 Taimili.com 艾米莉 》为什么Java里面,Service 层不直接返回 Result 对象?
java·后端·github
Maori3165 小时前
放弃 SDKMAN!在 Garuda Linux + Fish 环境下的优雅 Java 管理指南
java
用户908324602735 小时前
Spring AI 1.1.2 + Neo4j:用知识图谱增强 RAG 检索(上篇:图谱构建)
java·spring boot
小王和八蛋5 小时前
DecimalFormat 与 BigDecimal
java·后端
beata5 小时前
Java基础-16:Java内置锁的四种状态及其转换机制详解-从无锁到重量级锁的进化与优化指南
java·后端
IT探险家5 小时前
你的第一个 Java 程序就翻车?HelloWorld 的 8 个隐藏陷阱
java
随风飘的云5 小时前
SpringBoot 的自动配置原理
java