Java补漏(一)



第一章前言

在学长的建议下,为了弥补之前学Java漏下的或者不是很清楚的知识点,买了本蛮好的教科书-《Java学习笔记(JDK6)》,正式重新学习,为了记下一些让我恍然大悟的知识,写了本文档。

第二章Java入门

2.1
JVM
的认识

说到底Java是一种计算机高级语言,一般高级语言如果需要在操作系统上运行,那么它必须编译成机器语言,比如C语言,它的编译过程就是从C语言到汇编语言到机器语言。而Java的神奇之处在于Java的编译没有直接变成机器语言,而是一种中间语言,那么中间语言要在机器上执行就必须一个转换环境,这就是Java虚拟机即JVM扮演的角色。

这样做不是很麻烦吗?为什么不直接编译成机器语言,而是变成中间语言?这样做不是提高了Java开发的成本吗,还要安装一个虚拟机?

的确,C语言的开发在一些系统中甚至不需要下载编译器,比如Linux系统下的C语言只需要写一个.c文本文件,然后在终端上直接输入gcc
xxx.c指令即可编译成功。

但是这样做的好处在于,通过建立不同操作系统下的JVM版本,可以使得Java编译后的中间语言通过不同系统版本的JVM直接运行。也就是说我们不需要在编译同一个Java程序多次,一次编译成功的.class中间语言文件即可在多个平台上运行。而你在windows系统下c语言编译得到的.exe文件却不能在linux系统下执行。你需要将原来的c语言源代码拿来,在linux系统下再编译一次。

仔细想想,这有点像司马光砸缸的故事。是让人离开水还是水离开人?是重新编译多次还是下载安装一次虚拟机?

2.2 JDK和JRE的区别

JRE全称JavaRuntime
Environment,即Java运行环境,它是JVM的具体实现,当你下载好JDK的时候,你会发现名为jre的一个文件夹,打开后是这样一个目录。

图2.1 jre文件夹目录

bin文件夹中是一些可执行文件,lib文件夹中是执行class文件所需的类库。

JDK,全名JavaDevelopment
Kit,即Java开发包。它本身自带一个jre,主要用来开发测试之用。这个jre与公共jre的区别在于有没有server选项。

图2.2 jdk文件目录

2.3 JDK环境配置中的path系统变量和classpath系统变量

以前配置环境的时候一直没理解path变量和classpath变量的作用。蹭这个机会好好理解一遍。

2.3.1 Path变量

Path变量是用来在cmd上添加指令的

比如说现在你有一个英雄联盟的游戏,你希望在cmd上直接打开,这时候你可以在Path变量中添加英雄联盟游戏exe可执行文件所在目录地址

图2.4 Client.exe双击便开始游戏

图2.5将Client所在目录地址添加到Path变量中

图2.6在cmd上输入Client指令

图2.7输入发现游戏启动了

从上面的步骤可以看出Path变量的作用。配置Jdk环境时在Path系统变量中添加Jdk文件夹下的bin文件夹的地址的目的就是为了让操作系统找到指定的工具程序(以windows来讲就是找到.exe文件)。

2.3.2 Classpath变量

设置Classpath的目的是让Java执行环境找到指定的Java程序,即.class文件。在配置Java环境的时候,这个变量设置为jdk/lib文件夹中的tools.jar和rt.jar文件的绝对地址。jar文件中其实是一堆的.class文件,用压缩文件管理器打开tools.jar和rt.jar,可以看到一堆的.class文件。

图2.8 tools.jar文件解压后目录

jar格式压缩文件Java执行环境是可以直接运行的,运行是寻找其中的主方法。

假设你有一个.class文件在桌面上,而你把桌面目录的地址添加到了Classpath变量中,那么会发生什么呢?

图2.9在Classpath中添加一个地址

图2.10在cmd上使用Java指令直接运行Test.class文件

发现如果在Classpath中设置了一个目录地址,或者一个jar文件的地址,那么该目录中或者该jar文件中的class文件是可以直接运行的。

Java补漏(一)

时间: 2024-10-10 11:14:51

Java补漏(一)的相关文章

Java补漏(二)

 第三章Java基本语法 3.1 标准输入输出流 3.1.1 标准输出输入流 System.in:标准输入流 System.out:标准输出流 System.err:标准错误输出流 3.1.2 标准输出流重定位 一般的输出会默认在命令行模式.终端机输出,可是在执行程序时使用将输出结果定位至指定的文件即可. java HelloJava > HelloJavaResult.txt 3.2 基本数据类型 整形{short(2个字节).int(4个字节).long(8个字节)} 字节型{byte(

Java补缺补漏—字符、字节的概念及其区别

首先我们先看一下这个问题:“Java语言中字符串“学Java”所占的内存空间是几个字节?”,要回答这个问题我们就必须先要清楚什么是“字节”什么是“字符”. 字节(Byte):字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位.字节是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制,它是一 个8位的二进制数,是一个很具体的存储空间. 字符:人们使用的记号,抽象意义上的一个符号. '1', '中', 'a', '$', '¥', …… 谈到字符就不得不提ANSI及

JAVA基础补漏--可变参数

使用场景:当参数列表数据类型已确定,但参数的个数不确定,就可以用可变参数 格式: 修饰符 返回值类型 方法名(数据类型...变量名){} 原理:可变参数底层为一数组,可根据变量个数的不同,创建不同长度的数组,来存储这些参数.参数个数 >=0 public class demo1 { public static void main(String[] args) { int add = add(1, 2, 3, 444); System.out.println(add); } public stat

java语言起源

1991年,sun公司的一个秘密项目...‘green’项目的一个研究小组在开发一种用于家用电器的软件.这种软件能对这些设备进行控制并且联网,这些设备将能共村并且相互通讯.   翻译规程分为两个步骤:     1.程序首先被翻译成中间语言.这种中间语言称为字节码,一个程序被翻译成字节码后,对所有电器相同:     2.然后在使用一种程序,将字节码翻译为特定电器的机器语言.这种程序既小有容易编写,因而也不会昂贵.java的发展    java在1995年5月23日正式发布.    1996年1月2

疯狂java讲义——继承

本文章只是记录我在学习疯狂java讲义里面,对之前java知识查缺补漏进行的总结. 方法重写 方法重写要遵循"两同两小一大"规则."两同"即方法名相同.形参列表相同:“两小”指的是子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出异常类应比父类方法声明抛出异常类更小或相等;"一大"指的是子类方法访问权限应比父类方法访问权限更大或相等.尤其指出,覆盖方法和被覆盖方法要么都是类方法,要么都是实例方法,不能一个是类方法,一个是实例方法

推荐给 Java 程序员的 7 本书

< Java 编程思想> 适合各个阶段 Java 程序员的必备读物.书中对 Java 进行了详尽的介绍,与其它语言做了对比,解释了 Java 很多特性出现的原因和解决的问题.初学者可以通过此书快速掌握 Java 面向对象的理念,学会正确使用 Java 的各种特性:平时开发中可以将此书作为工具书参考,遇到疑难问题或查缺补漏都可以参考此书:有经验的开发者重温此书,可以加深对 Java 的理解,开发能力再上一层楼. <设计模式> 四位作者均是国际公认的面向对象软件领域的专家.此书以 C+

如何选择JAVA培训机构,兼议什么样的人适合培训机构

首先,利益相关,本人就是培训机构创办者兼讲师,但这不妨碍我对此发表看法. 我们先来看什么样的人适合培训机构?要回答这个问题,需要先换个角度.这个角度就是,你学习一门语言的动机是什么?99%的人的回答是:找一份工作.问题是否到此为止,不,我们还要深扒这份工作的种类. 一:精英程序员.CRUD BOY与程序工作种类 在天朝,历来有一个传统,叫做"文人相轻".程序员多少也算是有些文化的人,所以这个传统在程序开发界得到了发扬光大,从著名的语言之争,到阶级鄙视,都深深透露着"文人相轻&

java程序员的自我修炼--冲刺知名互联网企业

2015年初收到了阿里的offer,"理想这东西是可以有的,万一实现了那".下面分享下这一年多的的学习经历,希望能帮到大家. 要成为高级程序员,一定要掌握下面六方面的知识,具体如下图: 第一java基础 这块是最基本 也是最重要的技能,细分为以下六点: 1.Collection和Map 这块是面试时首先考察的部分,如 ArrayList和LinkedList的区别,CopyOnWriteArrayList是如何实现高并发的:HashMap(重点).LinkedHashMap与TreeM

2016年6月20日 JAVA知识框架

基于 J2EE 列举的知识架构,大体列举开发基础知识.帮助我随时查缺补漏,奉行好记性不如烂笔头.写了这该随笔,以便后续查询. 1  JAVA简介 2  JAVA编程环境 3  JAVA基本编程结构 4  对象和类 5  继承 6  接口和内部类 7  图形编程 8  事件处理 9  Swing用户界面组建 10  部署applet和应用程序 11  异常和调试 12  流与文件 13  SSH框架 自己脑海要有一个知识框架,这是实现一专多长的重要条件.后续会联系更新以上分类知识.