JAVA概念复习

####JAVA概念介绍
            0. 面试: 
                1. 谈谈你对 Java 平台的理解
                    1. 对于“Java 是解释执行”这句话,这个说法不太准确。
                        * 我们开发的 Java 的源代码,首先通过Javac 编译成为字节码(bytecode),然后,在运行时,通过 Java 虚拟机(JVM)内嵌的解释器将字节码转换成为最终的机器码。
                        * 但是常见的 JVM,比如我们大多数情况使用的 Oracle JDK提供的 Hotspot JVM,都提供了 JIT(Just-In-Time)编译器,也就是通常所说的动态编译器,JIT 能够在运行时将热点代码编译成机器码,这种情况下部分热点代码就属于编译执行,而不是解释执行了。
                        
                2. “Java 是解释执行”,这句话正确吗? 
                    * 对于“Java 是解释执行”这句话,这个说法不太准确。我们开发的 Java 的源代码,首先通过 Javac 编译成为字节码(bytecode),然后,在运行时,通过 Java 虚拟机(JVM)内嵌的解释 器将字节码转换成为最终的机器码。
                    * 但是常见的 JVM,比如我们大多数情况使用的 Oracle JDK 提供的 Hotspot JVM,都提供了 JIT(Just-In-Time)编译器,也就是通常所说的动态编译器, JIT 能够在运行时将热点代码编译成机器码,这种情况下部分热点代码就属于编译执行,而不是 解释执行了。
                    * JIT和动态编译的理解 
                            * JIT是JVM虚拟机中多种编译器的一种,JVM还有解释性编译器等。JIT可用于即时动态编译
                            * 正常情况下,将程序编写完毕之后再统一将其编译为字节码文件,再将字节码编译为机器码,随着代码的增多,这样集中处理太慢了
                            * 动态编译----一般在我们编写代码的时候编写一行就编译一行并直接编译到机器码的程度
                                * 具体理解可以参考debug时,每次点击下一步,直接就会出现运行之后的结果,而不是该行程序的字节码。
                                * 在这种情况下,属于从编译直接变为机器码执行,而不再是传统的解释执行。
                                * 比如服务器上就不能即时编译,必须直接运行编译好的class字节码文件
                                * 因而 java不完全是解释执行,在也存在编译执行
            1. JDK,JRE,JVM三者之间的关系,以及JDK、JRE包含的主要结构有哪些 
                * JDK = JRE + Java的开发工具(javac.exe,java.exe,javadoc.exe)
                * 
                * JRD = JVM + Java核心类库
            2. jdk的bin目录下,javac.exe和java.exe的区别 
                1. 都是应用程序
            3. dos命令:MS-DOS(Microsoft Disk Operating System)
                1. 常用dos命令
                    * dir                    展示当前目录下的文件
                    * cd 目录                  进入指定目录,不能跨盘符
                    * 盘符:                    进入对应的盘符   例如  D:  可以进入d盘根路径
                    * md 目录名                即mkdir,创建目录/文件夹
                    * rd [/S] [/Q]目录名     删除目录  
                        * /S表示删除目录树,除目录本身外,还删除指定目录下的所有子目录
                        * /Q安静模式,带/S删除目录树时不需要确认
                    * del 文件名                删除文件
                    * cd..                     进入上一级目录 
                    * cd/ 或cd \             进入当前目录所在的盘根目录
                    * cls                    清屏
                2. 注意:
                    1. dos中的删除是不可逆的,回收站里也没有
            4. 环境变量
                1. 原理解释
                    1. 在当前位置找不到内容时,就会去path(系统变量,是环境变量的一种)中定义的路径中查找,将一个路径配置到path中,该路径就可以在任意位置被访问到了
                    2. 一个环境变量的多个值中,越前面定义的越先被找到
                2. 配置步骤
                    1. 找到环境变量的位置  “我的电脑”的“属性”--高级系统设--环境变量--下方的系统变量
                    2. 修改或者新建以下三个变量
                        1. JAVA_HOME   jdk安装路径(bin目录的上一级路径)
                        2. CLASSPATH    .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
                        3. PATH(在原有基础上追加)  %JAVA_HOME%\bin     %JAVA_HOME%\jre\bin
            5. Java应用程序运行机制
                * 计算机高级语言类型分为编译型和解释性。Java是两种类型的结合
                * 运行流程
                    * 利用文本编辑器编写Java源程序为.java源文件
                    * 再利用编译器(javac)将源程序译为.class字节码文件
                    * 最后利用虚拟机(解释器,java )解释执行   JRE(—>类加载器——>字节码校验器——>解释器—>)
            6. javac.exe和java.exe的区别
                1.  javac.exe用于编译java 文件,java.exe用于运行class文件
                2.  class文件不一定都是由java文件编译而来的,也可能是scala等语言的编译结果

原文地址:https://www.cnblogs.com/akanga/p/11349804.html

时间: 2024-08-30 13:40:09

JAVA概念复习的相关文章

[Java基础] Java线程复习笔记

先说说线程和进程,现代操作系统几乎无一例外地采用进程的概念,进程之间基本上可以认为是相互独立的,共享的资源非常少.线程可以认为是轻量级的进 程,充分地利用线程可以使得同一个进程中执行多种任务.Java是第一个在语言层面就支持线程操作的主流编程语言.和进程类似,线程也是各自独立的,有自 己的栈,自己的局部变量,自己的程序执行并行路径,但线程的独立性又没有进程那么强,它们共享内存,文件资源,以及其他进程层面的状态等.同一个进程内的 多个线程共享同样的内存空间,这也就意味着这些线程可以访问同样的变量和

Java高级复习㈠ 多线程

1.线程 也称为轻量级进程,每个线程有自己的堆栈.程序计数器.局部变量.与进程相比,进程中的线程之间隔离程度要小 2.Java实现 ①implements Runnable ②extends Thread 一般推荐① 3.sleep().yield() sleep()方法对当前线程操作,指定以毫秒为单位的线程最小休眠时间,除非线程因中断提早恢复执行,否则不会在这段时间前恢复执行.线程可调用另一线程的interrupt()方法,向暂停的线程发出InterruptedException,变相唤醒暂停

Java阶段复习

实验环境:JDK1.8.0_111 Java阶段复习 ·Java程序的源文件名和源文件里面声明的类名的关系 我们现在有一个名为Review.java的java程序源文件名,源程序如下:         class/*声明类的关键字*/ Review/*类名*/{             /*下面的一行是main方法,main方法的格式是固定的,只有"[]"和"args"不固定,                "args"相当于是一个一维数组的数组

java面向对象复习

Java面向对象复习 1.类是抽象的,对象是具体的 2.方法的重载: 条件: (1):在同一个类中 (2):方法名称相同 (3):方法参数不同 3.构造方法: 语法: (1)必须和类名相同 (2)必须没有返回类型,可以重载 (3)如果没有自定义一个构造方法,系统会为自动创建一个无参构造方法 (4)如果已经自定义了一个构造方法,系统就不会创建这个无参的构造方法 作用: (1)初始化类中的成员变量 (2)完成一些必须的初始化工作 4.this相当于当前对象,一般情况下可以省略 5.作用域: 类的作用

Java面试复习提纲

Java面试复习提纲 作者:egg 邮箱:[email protected] 微博:http://weibo.com/xtfggef 博客:http://blog.csdn.net/zhangerqing 本章主要介绍一下面对即将来临的Java面试,我们应该从哪些方面去复习,将重点知识罗列出来,以便从容复习,在每个内容后面附该内容在本博客的地址! 类与对象   Java之美[从菜鸟到高手演变]之类与对象(一) Java之美[从菜鸟到高手演变]之类与对象(二) Java之美[从菜鸟到高手演变]之类

Java基础复习笔记系列 四

Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时,不能指定其长度.不同于C 数组的小标可以是整型常量或整型表达式. .length方法是显示数组的长度:数组.length;String.length();一个是属性,一个是方法.注意区分. 2.数组的内存分析? Array a[]; a = new Integer(15); /*这个a在栈中,在堆

Java基础复习㈥ 内存分配

1.方法区 类的全限定名.直接超类的全限定名.该类是类或者接口.访问修饰符.直接超接口全限定名: 运行时常量池.字段.方法.静态变量.到类装载器的引用.到类class的引用 2.栈内存 局部变量区.操作数栈.帧数据区 3.堆内存 存放由new创建的对象和数组 *栈内存和堆内存 栈存取速度比堆快,仅次于寄存器,栈数据可以共享.栈中主要存放一些基本类型的变量和对象句柄 4.本地方法栈内存 5.String ① String str1 = "abc"; String str2 = "

Java基础复习笔记系列 五 常用类

Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String s2 = “hello”:结论:s1 == s2. 字符串常量放在data区. 3. String s3 = new String("hello"); String s4 = new String("hello");结论:s3 != s4.但s3.equals(s4).

Java基础复习笔记系列 七 IO操作

Java基础复习笔记系列之 IO操作 1. 2.