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-------------------------

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

相关推荐
Q186000000003 分钟前
Windows 系统中python的安装步骤
开发语言·windows·python
鸽芷咕4 分钟前
【Python报错已解决】AttributeError: ‘Tensor‘ object has no attribute ‘kernel_size‘
开发语言·python·机器学习·bug
影子落人间7 分钟前
Spring面试题-Spring是怎么解决循环依赖的?
java·spring·面试
救救孩子把8 分钟前
阿里巴巴新推出Java版AI 应用开发框架-Spring AI Alibaba
java·人工智能·spring
小周的C语言学习笔记21 分钟前
鹏哥C语言49---第5次作业:选择语句 if 和 switch
c语言·开发语言·c++·算法
晚睡早起₍˄·͈༝·͈˄*₎◞ ̑̑25 分钟前
苍穹外卖学习笔记(十)
java·spring boot·笔记·学习·spring·maven
lovPopcorn27 分钟前
MQ高级(二):死信交换机--延迟消息及DelayExchange插件--超时订单案例实现
java·开发语言·rabbitmq
生信圆桌28 分钟前
使用 Docker 部署 RStudio 的终极教程
java·docker·容器
䛩x40 分钟前
贪吃蛇小游戏(Qt)
c语言·开发语言·qt·程序人生·游戏程序·命令模式
世界尽头与你1 小时前
Go语言流程控制
开发语言·后端·golang