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

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

相关推荐
blammmp14 分钟前
Java:数据结构-枚举
java·开发语言·数据结构
何曾参静谧26 分钟前
「C/C++」C/C++ 指针篇 之 指针运算
c语言·开发语言·c++
暗黑起源喵32 分钟前
设计模式-工厂设计模式
java·开发语言·设计模式
WaaTong37 分钟前
Java反射
java·开发语言·反射
Troc_wangpeng38 分钟前
R language 关于二维平面直角坐标系的制作
开发语言·机器学习
努力的家伙是不讨厌的40 分钟前
解析json导出csv或者直接入库
开发语言·python·json
Envyᥫᩣ1 小时前
C#语言:从入门到精通
开发语言·c#
九圣残炎1 小时前
【从零开始的LeetCode-算法】1456. 定长子串中元音的最大数目
java·算法·leetcode
wclass-zhengge1 小时前
Netty篇(入门编程)
java·linux·服务器
童先生1 小时前
Go 项目中实现类似 Java Shiro 的权限控制中间件?
开发语言·go