博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
每天10道Java面试题,跟我走,offer有!
阅读量:5924 次
发布时间:2019-06-19

本文共 3324 字,大约阅读时间需要 11 分钟。

1.简述JDK、JRE、JVM?

一、JDK JDK(Java Development Kit) 是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。 JDK是java开发工具包,基本上每个学java的人都会先在机器 上装一个JDK,那他都包含哪几部分呢?在目录下面有 六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的 是以下四个文件夹:bin、include、lib、 jre。有这样一个关系,JDK包含JRE,而JRE包 含JVM。 bin:最主要的是编译器(javac.exe) include:java和JVM交互用的头文件 lib:类库 jre:java运行环境 二、JRE JRE(Java Runtime Environment,Java运行环境)包含JVM标准实现及Java核心类库。JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器) JRE是指java运行环境。光有JVM还不能成class的 执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。 (jre里有运行.class的java.exe) JRE ( Java Runtime Environment ),是运行 Java 程序必不可少的(除非用其他一些编译环境编译成.exe可执行文件……),JRE的 地位就象一台PC机一样,我们写好的Win64应用程序需要操作系统帮 我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。三、JVM JVM(Java Virtual Machine),即java虚拟机, java运行时的环境,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。针对java用户,也就是拥有可运行的.class文件包(jar或者war)的用户。里面主要包含了jvm和java运行时基本类库(rt.jar)。rt.jar可以简单粗暴地理解为:它就是java源码编译成的jar包。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。

2.JDK、JRE、JVM三者的有什么联系和区别?

1.三者联系:JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。JVM+Lib=JRE。总体来说就是,我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。2.三者区别: JDK和JRE区别:在bin文件夹下会发现,JDK有javac.exe而JRE里面没有,javac指令是用来将java文件编译成class文件的,这是开发者需要的,而用户(只需要运行的人)是不需要的。JDK还有jar.exe, javadoc.exe等等用于开发的可执行指令文件。这也证实了一个是开发环境,一个是运行环境。 b.JRE和JVM区别:JVM并不代表就可以执行class了,JVM执行.class还需要JRE下的lib类库的支持,尤其是rt.jar。

3、简述Java程序编译和运行的过程?

Java程序从源文件创建到程序运行要经过两大步骤:1、源文件由编译器编译成字节码(ByteCode); 2、字节码由java虚拟机解释运行。因为java程序既要编译同时也要经过JVM的解释运行,所以说Java被称为半解释语言第一步(编译):创建完源文件之后,程序先要被JVM中的java编译器进行编译为.class文件。java编译一个类时,如果这个类所依赖的类还没有被编译,编译器会自动的先编译这个所依赖的类,然后引用。如果java编译器在指定的目录下找不到该类所依赖的类的 .class文件或者 .java源文件,就会报"Cant found sysbol"的异常错误。编译后的字节码文件格式主要分为两部分:常量池和方法字节码。常量池记录的是代码出现过的(常量、类名、成员变量等)以及符号引用(类引用、方法引用,成员变量引用等);方法字节码中放的是各个方法的字节码。第二步(运行):java类运行的过程大概分为两个步骤:(1)类的加载 (2)类的执行。需要说明的一点的是:JVM主要在程序第一次运行时主动使用类的时候,才会立即去加载。换言之,JVM并不是在运行时就会把所有使用到的类都加载到内存中,而是用到,不得不加载的时候,才加载进来,而且只加载一次!

4、请说出八种基础数据类型及字节大小?

1. byte                  8位2. short                16位3. int                  32位4. long                 64位5. float                32位6. double               64位7. boolean               1位8. char                 16位

5.说说&和&&的区别?

&和&&都是逻辑运算符,都是判断两边同时真则为真,否则为假;但是&&当第一个条件不成之后,后面的条件都不执行了,而&则还是继续执行,直到整个条件语句执行完为止。

6.float型float f=3.4是否正确?

答:不正确;精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4

7.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

**short s1 = 1; s1 = s1 + 1; s1+1
运算结果是int型,
需要强制转换类型;
short s1 = 1; s1 += 1;
可以正确编译,自动类型提升。**
8.int 和 Integer 有什么区别?

Java 提供两种不同的类型:引用类型和原始类型(或内置类型);int是java的原始数据类型,Integer是java为int提供的封装类。 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。

9.在JAVA中,如何跳出当前的多重嵌套循环?

在最外层循环前加label标识,然后用break:label方法即可跳出多重循环。ok:while(true){    while(true){        break ok;    }}

10.使用嵌套的for循环打印九九乘法表。

public class test {    public static void main(String[] args) {        for (int i = 1; i <= 9; i++) {            for (int j = 1; j <= i; j++) {                System.out.print(j + "*" + i + "=" + i * j + " ");            }            System.out.println();        }    }

转载地址:http://cqavx.baihongyu.com/

你可能感兴趣的文章
视图加载时自动执行铵钮事件
查看>>
私活利器,docker快速部署node.js应用
查看>>
《随笔记录》20170310
查看>>
网站分析系统
查看>>
一站式解决,Android 拍照 图库的各种问题
查看>>
219. 单页应用 会话管理(session、cookie、jwt)
查看>>
java概述
查看>>
【Filecoin源码仓库全解析】第一章:搭建Filecoin测试节点
查看>>
极限编程 (Extreme Programming) - 发布计划 (Release Planning)
查看>>
跨域的四种方式
查看>>
i-i.me:网址导航真的是伪需求吗?
查看>>
Iterator 和 for...of 循环
查看>>
关于vue父子组件之间事件触发及数据传递问题
查看>>
JavaScript数据结构与算法——集合
查看>>
JavaFX 学习笔记——窗口与控件
查看>>
82. Remove Duplicates from Sorted List II
查看>>
受 SQLite 多年青睐,C 语言到底好在哪儿?
查看>>
User Stories - 最佳实践 (Best Practices)
查看>>
纯css实现叉号
查看>>
小程序调用阿里云身份证识别OCR(附带七牛云上传图片)
查看>>