JavaSE基础知识⾯试题总结
⽂章⽬录
该⽂章是博主采集于各⼤博⽂,⽤于复习和总结相关知识点,将会持续的收集和更新。
⼀、概述
1. JDK版本
⽬前只维护两个JDK版本,⼀个是8,⼀个是11(2018年)
2. Java语⾔特性
可移植性,跨平台,因为Java有⼀个JVM虚拟机,虚拟机负责执⾏字节码⽂件
健壮性,具有GC,有⾃动垃圾回收机制
3. Java的加载与执⾏过程
T.java(源⽂件)通过javac命令变成字节码⽂件
字节码⽂件通过类加载器加载到JVM中
JVM屏蔽了和操作系统打交道的操作
4. JVM、JDK和JRE的区别
Java虚拟机(JVM)
是运⾏ Java 字节码的虚拟机。JVM有针对不同系统的特定实现(Windows,Linux,macOS),⽬的是使⽤相同的字节码,它们都会给出相同的结果。字节码和不同系统的 JVM 实现是 Java 语⾔“⼀次编译,随处可以运⾏”的关键所在。
JDK
是Java Development Kit,它是功能齐全的Java SDK。它拥有JRE所拥有的⼀切,还有编译器(javac)和⼯具(如javadoc和jdb)。它能够创建和编译程序。
JRE
是 Java运⾏时环境。它是运⾏已编译 Java 程序所需的所有内容的集合,包括 Java虚拟机(JVM),Java类库,java命令和其他的⼀些基础构件。
但是,它不能⽤于创建新程序。
5. 机器码和字节码的概念与区别?
机器码:机器码是电脑CPU直接读取运⾏的机器指令,运⾏速度最快,但是⾮常晦涩难懂,也⽐较难编写,⼀般从业⼈员接触不到。字节码:字节码是⼀种中间状态(中间码)的⼆进制代码(⽂件),需要直译器转译后才能成为机器码。
⼆、Java语⾔基础
1. ⼋种基本类型
⼋种基本数据类型:byte、short、int、long、float、double、boolean、char。
⼀个字节等于8位
IEE754标准(32位):1位是符号位,8位是阶码⽤移码表⽰,23位尾数
2. 字符编码
java⽀持中⽂,因为其采⽤的是 Unicode 编码,使之更趋于国际化
类型可以存放⼀个汉字, java 中的 char 使⽤ utf-16 编码
编码名称解释
ASCII 字符编码只⽀持英⽂字母、标点符号、数字字符等, ASCII 码占⽤ 1 个字节,所以 ASCII 码最多
可以表⽰ 256 个字符. ⼩ a 97 ⼤
A 65,’0’是 48
ISO-8859-1有称 latin-1,是国际化标准或组织 ISO 制定的,主要为了西欧语⾔中的字符 编码,和 ASCII 兼容,仍不⽀持中⽂
GB2312/GBK/GB18030主要是汉字编码,三种编码从容量上看是包含关系 简体中⽂: GBK < GB2312 < GB18030 繁体中⽂: Big5【⼤五码】
unicode Unicode 统 ⼀ 了 全 世 界 上 的 所 有 ⽂ 字 编 码 , unicode 有 ⼏ 种 实 现 : UTF-8,UTF-16,UTF-32 java 语⾔采⽤
的是 Unicode 编码,所以在 java 中标识符也可以使⽤中⽂
3. 类型转换
在 java 中基本类型可以相互转换, boolean 类型⽐较特殊不可以转换成其他类型转换分为默认转换和强制转换:
默认转换:容量⼩的类型会默认转换为容量⼤的类型
byte–>short–> int–>long–>float–>double
byte、 short、 char 之间计算不会互相转换,⾸先先转换成 int 强制转换:
将容量⼤的类型转换成容量⼩的类型,需要进⾏强制转换
注意:只要不超出范围可以将整型值直接赋值给 byte, short, char
在多种类型混合运算过程中,⾸先先将所有数据转换成容量最⼤的那种,再运算
public class DataTypeTest08
{
public static void main(String[] args){
long x =100L;
int y = x;//编译不通过
long a =2147483648L;
int b =(int)a;
System.out.println(b);//出现精度丢失问题,⼤类型-->>⼩类型会出现问题,输出-2147483648 byte a =1000;//出现错误, 1000 超出了 byte 的范围
long g =10;
int h = g/3;//出现错误,多个数值在运算过程中,会转换成容量最⼤的类型
byte h3 =(byte)(int)g/3;//考察优先级,将g先转换成int,再强转成byte,再除以3得到int,赋值错误byte h4 =(byte)(int)(g/3);//正确的
byte h5 =(byte)g/3;//考察优先级,先转换成byte,再运算
byte h6 =(byte)(g/3);//正确
short h7 =(short)(g/3);//正确
short i =10;
byte j =5;
short k = i + j;//错误的,short和byte运算,⾸先会转换成int再运算
}
}
4. 运算符
短路与和逻辑与的区别?
短路与⽐逻辑与智能,短路与效率⾼。
短路或和逻辑或的区别?
短路或:左边的算⼦结果是 true,右边的表达式不执⾏,发⽣短路
a += 3和 a = a + 3; 是⼀样的吗?
结论(重点):扩展赋值运算符不改变运算结果的类型。初始类型和最终运算结果类型完全相同。
public class OperatorTest09
{
public static void main(String[] args){
byte b =10;
//编译错误
//b = b + 3;
//修改
b =(byte)(b +3);
System.out.println(b);//13
b +=3;
System.out.println(b);//16
b +=10000;//等同于 b = (byte)(b + 10000);
System.out.println(b);//32
}
}
5. 控制语句
switch 语句
switch 也称为多重分⽀,具体格式如下
switch (表达式) {
case 值 1:
语句
break;
case 值 2:
语句
break;
default:
语句
Break;
}
说明:
表达式的值只能为: char、 byte、 short、 int 类型(JDK7 以后⽀持 String), boolean、 long、 float、double 都是⾮法的
break 语句可以省略,但会出现 switch 穿透
default 语句也可以省略,⼀般不建议省略,并且放置在最后
需求:
假定系统给定学⽣的考试成绩,考试成绩可以带有⼩数。
假定成绩是合法的[0-100],请根据学⽣考试成绩判断该
学⽣成绩等级:
[90-100] A
[80-90) B
[70-80) C
[60-70) D
[0-60) E
以上业务只能使⽤ switch 语句完成,不允许使⽤ if 语句。
public class SwitchTest04 {
public static void main(String[] args){
/
/考试成绩合法
double score =100;
//开始判断
int grade =(int)(score /10);//case条件不能为浮点数
switch(grade){
case10:
case10:
System.out.println("A");
break;
case9:
System.out.println("A");
break;
case8:
System.out.println("B");
break;
case7:
System.out.println("C");
break;
case6:
System.out.println("D");
break;
default:
System.out.println("E");
}
//重点: case 是可以合并的
switch(grade){
case10:
case9:
System.out.println("A");
break;
case8:
System.out.println("B");
break;
case7:
System.out.println("C");
break;
case6:
System.out.println("D");
break;
default:
jvm面试题总结及答案System.out.println("E");
}
}
}
for语句
for(;false;){//会出现编译错误,因为⽆法访问 System.out.println("呵呵");
}
for(;true;){//死循环
System.out.println("哈哈");
}
6. ⽅法
⽅法的返回值问题:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论