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

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

相关推荐
Vitalia3 分钟前
从零开始学 Rust:基本概念——变量、数据类型、函数、控制流
开发语言·后端·rust
小禾苗_1 小时前
C++ ——继承
开发语言·c++
李长渊哦1 小时前
Java 虚拟机(JVM)方法区详解
java·开发语言·jvm
进击ing小白1 小时前
Qt程序退出相关资源释放问题
开发语言·qt
烂蜻蜓2 小时前
前端已死?什么是前端
开发语言·前端·javascript·vue.js·uni-app
老猿讲编程2 小时前
安全C语言编码规范概述
c语言·开发语言·安全
陌殇殇2 小时前
002 SpringCloudAlibaba整合 - Feign远程调用、Loadbalancer负载均衡
java·spring cloud·微服务
猎人everest3 小时前
SpringBoot应用开发入门
java·spring boot·后端
山猪打不过家猪5 小时前
ASP.NET Core Clean Architecture
java·数据库·asp.net
AllowM5 小时前
【LeetCode Hot100】除自身以外数组的乘积|左右乘积列表,Java实现!图解+代码,小白也能秒懂!
java·算法·leetcode