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

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

相关推荐
Swift社区3 小时前
在 Swift 中实现字符串分割问题:以字典中的单词构造句子
开发语言·ios·swift
没头脑的ht3 小时前
Swift内存访问冲突
开发语言·ios·swift
没头脑的ht3 小时前
Swift闭包的本质
开发语言·ios·swift
wjs20243 小时前
Swift 数组
开发语言
吾日三省吾码4 小时前
JVM 性能调优
java
stm 学习ing4 小时前
FPGA 第十讲 避免latch的产生
c语言·开发语言·单片机·嵌入式硬件·fpga开发·fpga
湫ccc5 小时前
《Python基础》之字符串格式化输出
开发语言·python
弗拉唐5 小时前
springBoot,mp,ssm整合案例
java·spring boot·mybatis
oi776 小时前
使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
java·服务器