Java既是编译型语言,又是解释型语言

java源文件首先需要通过javac编译生成后缀名为.class的字节码文件(与平台无关,只面向JVM),然后使用Java虚拟机将字节码解释成特定平台上的机器码运行。

Java虚拟机JVM

不同平台上的JVM不同,但是都提供了相同的接口。

开发Java准备

  1. 下载安装Java8的JDK,并将jdk的安装路径添加到环境变量中。
  2. 开发Java需要安装JDK,JDK包含Java编译器(javac命令工具)、Java运行时环境(JRE)、常用的Java类库等。
  3. JRE包含JVM,还包含类加载器、字节码校验器及大量的基础类库等环境支持。
  4. 如果只是运行Java程序,可以只安装JRE。

第一个Java程序

  1. 编写第一个著名的程序:HelloWorld。
pulic calss HelloWorld
{
public static void main(String[] args)
{
System.out.println("HelloWorld");
}
}
  1. 使用javac命令编译java程序。

    • 命令行输入cmd,进入Java源文件所在的路径
    • 输入如下命令,其中destdir是目标生成路径

      javac -d destdir HelloWorld.java

      进入destdir路径下,可以看到已经生成了后缀名为.class的字节码文件
  2. 使用java命令解释执行字节码文件。
    • 运行如下命令执行程序

      java HelloWorld
  3. 分析main()方法
    • JVM需要调用main()方法来调用类,使用public修饰符将main暴露出来
    • JVM通过该类来调用main()方法,没有该类的对象,用static修饰
    • 返回值给JVM,没有意义
    • 字符串数组形参,由JVM赋值

Java程序的基本规则

  1. Java是纯面向对象的语言,类是Java程序的最小程序单位。
  2. javac可以编译一个类,而解释执行一个类则需要以main方法为入口,main方法的写法是固定的。
  3. Java严格区分大小写,类名首字母大写,方法名第一个单词首字母小写,关键字小写。
  4. 一个java源文件最多只能定义一个public类,因源文件名需要与public类的类名相同。

垃圾回收机制

  1. 显式进行垃圾回收的缺点

    • 忘记回收导致内存泄漏,降低系统性能
    • 错误回收程序核心类库的内存,导致系统崩溃
  2. Java虚拟机的堆内存用来保存类的对象,JVM的一个超级线程会进行检测,如果一个对象长时间不被引用GC会释放其所占用的内存空间,同时进行碎片整理将所占用的堆内存移到堆的一端,整理出新内存分配给其他对象。
  3. 使用GC的优点
    • 提高编程效率
    • 保护程序的完整性和安全性
  4. 使用GC的缺点
    • 垃圾回收在cpu空闲或者内存不足时进行,影响程序性能
  5. GC的特点
    • 只能回收JVM堆内存的内存空间,不能回收物理内存的资源
    • 将对象的引用变量设置为null可以暗示GC回收该对象
    • 使用GC回收对象之前,会先调用可恢复对象的finalize()方法可能将其变成可达状态。
    • 调用Runtime对象的gc()方法Runtime.getRuntime().gc()或者System.gc()仅仅是建议系统进行垃圾回收,不能精确控制
    • 使用如下命令运行程序显示每次垃圾回收后的提示信息

      java -verbose:gc Test
    • 平常用的基本是强引用对象,除此之外还有软引用(SoftReferance,用于对内存敏感的程序中),弱引用(WeakReferance,不管内存强制回收),虚引用(PhantomReferance,只能和引用队列一起使用跟踪对象被垃圾回收的状态)。

使用IDE工具

  1. 下载安装Eclipse开发工具
  2. 配置自动补全

    Windows-Preferences-Java-Editor-Content Asist,将Auto activation triggers for Java改为“.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”即可
  3. 熟悉快捷键

    自动导入相关包:Ctrl+Shift+O

使用jar命令

  1. 创建jar包

    jar cvf test.jar test
  2. 查看jar包

    jar tvf test.jar
  3. 解压缩jar包

    jar xvf test.jar
  4. 更新jar包里的文件

    jar uvf test.jar Filename

发布Java应用程序

  1. 利用Windows批处理,添加如下执行命令

    java package.MainClass

    不显示命令行窗口用以下命令

    start javaw package.MainClass
  2. 创建可执行jar包

    指定主类的类名作为程序入口

    jar cvfe test.jar package.MainClass test

    运行上面的jar包命令java -jar test.jar或者javaw test.jar

获得用户输入

  1. 给main()方法字符串数组形参赋值

    运行Java程序时在类名后紧跟一个或多个字符串,用空格隔开,则JVM将这些字符串依次赋值给args数组元素

    java test str1 str2 str3
  2. 使用Scanner类从文件、输入流、字符串中解析数据,它提供了两个方法:
    • 判断是否还有下一项基本数据/字符串/一行:hasNextInt()、hasNext()、hasNextLine()
    • 获取下一个输入项:nextInt()、next()、nextLine()
    • 默认使用空白符作为分隔符,可以使用useDelimiter("\n")方法自定义分隔符

      下面的示例程序涉及文件输入,并没有进行异常处理及文件关闭!
	//获取键盘输入
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String str = (String) sc.next();
System.out.println("str");
} //获取文件输入
Scanner sca = new Scanner("Test.java");
//使用回车作为分隔符
sca.useDelimiter("\n");
while (sca.hasNext()) {
String str = (String) sca.next();
System.out.println("str");
}

Java程序运行机制及开发环境的更多相关文章

  1. 02 基础 卸载JDK 安装JDK Java程序运行机制

    基础 JDK:Java Development Kit(Java开发者工具 包含JRE和JVM) JRE:Java Runtime Environment(java运行时环境,包含JVM) JVM:J ...

  2. Java程序运行机制

    Java程序运行机制 编译型(compile) 它有一个负责翻译的程序(编译器),将我们写的 Java 源代码转为计算机可执行的代码 举个例子:把一本中文书翻译成英文书 应用:操作系统.C.C++ 解 ...

  3. 1、Java语言概述与开发环境——Java程序运行机制

    Java语言是一种特殊的高级语言,它既有解释型语言的特性,也具有编译型语言的特征,因为Java要经过先编译后解释两个步骤. 一.高级语言的运行机制 计算机高级语言按程序的执行方式可以分为编译型和解释型 ...

  4. 基础知识《零》---Java程序运行机制及运行过程

    Java运行机制 Java虚拟机(Java Virtual Machine):Java虚拟机可以理解成一个以字节码为机器指令的CPU:对于不同的运行平台,有不同的虚拟机:Java虚拟机机制屏蔽了底层运 ...

  5. 5.Java程序运行机制

    一.编译型和解释型语言区别 计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以任何的高级语言编写的程序都必须转换成计算机语言,也就是机器码.而这种转换的方式有两种: 编译 ...

  6. 2.Java程序运行机制

    1.编译型:compile,把所有东西翻译好,若有更新需要重新全部翻译.执行速度够快,对操作系统要求比较低.开发操作系统时用到编译型语言,例如c/c++...运行时需编译整个程序 2.解释性:运行一个 ...

  7. 谈谈java的运行机制

    1.高级语言的运行机制 我们编程都是用的高级语言(写汇编和机器语言的大牛们除外),计算机不能直接理解高级语言,只能理解和运行机器语言,所以必须要把高级语言翻译成机器语言,计算机才能运行高级语言所编写的 ...

  8. java的运行机制(基础)

    1:高级语言的运行机制: 我们编程都是用的高级语言(写汇编和机器语言的大牛们除外),计算机不能直接理解高级语言,只能理解和运行机器语言,所以必须要把高级语言翻译成机器语言,计算机才能运行高级语言所编写 ...

  9. Java的运行机制

    Java程序运行机制 编译型(操作系统 c/c++) 解释型(网页 不追求速度) 程序运行机制

随机推荐

  1. 31网络通信之Select模型

    多路复用并发模型  -- select #include<sys/select.h> #include<sys/time.h> int select(int maxfd,  f ...

  2. url中是否加斜杠/

    通常来说,不加斜杠的形式(如”example.jsp”)请求的是相对于当前页面路径的资源 http://localhost:8080/webapp/examole:加斜杠的形式(”/example.j ...

  3. datatable的点击事件

    datatable的点击事件 在项目中遇到一个问题,在动态绑定到datatables上的数组,要是用table中的两个某一行中数据作为参数,通过鼠标点击进行获取,查阅官方文档得以解决: //首先定义一 ...

  4. 安卓apk的编译与反编译

    原文:https://blog.csdn.net/baidu_33870664/article/details/80186945 android基于java的,而java反编译工具很强悍,所以对正常a ...

  5. mysql每天弹出窗口检测更新关闭方式...

    右击计算机-->管理-->系统工具-->任务计划程序-->MySQL<如下图>,选中右键删除或者禁用即可... 更新分界线--------------------- ...

  6. c# 制作弹窗

    1.右键选择添加,添加windows窗体 2.添加第几个窗体这就是Form几 3.具现化  窗口,然后调用       具现化窗口名+ShowDialog  就可以弹出新的窗口 这个功能需要使用,自己 ...

  7. HDU 1846 Brave Game (巴什博弈)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1846 十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏& ...

  8. echo 命令详解

    echo命令用于在shell中打印shell变量的值,或者直接输出指定的字符串. 选项 -e:激活转义字符. 使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出: \a ...

  9. 1分钟完美安装最新CentOS+Nginx+PHP-FPM+MySQL

    PHP 5.3.1 MySQL 5.0.89 Nginx 0.8.33 或 0.7.65 (可选) 现在,我们可以快速全自动搞定 CentOS + Nginx + PHP-FPM + MySQL 的安 ...

  10. 导弹拦截 p1020

    第一问就是求最长不上升子序列的长度,要写O(nlogn)的算法.... 对于这种nlogn的算法,只能求出长度,不能求出具体的序列.这种算法实现过程如下: 我们定义len为到目前为止最长不上升子序列的 ...