1.java简介
Java
是一门
面向对象
编程语言,不仅吸收了
C++
语言的各种优点,还摒弃了C++里难以理解的
多继承
、
指针
等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
Java具有简单性、面向对象、
分布式
、
健壮性
、
安全性
、平台独立与可移植性、
多线程
、动态性等特点 。Java可以编写
桌面应用程序
、
Web应用程序
、
分布式系统
和
嵌入式系统
应用程序等 。
(详细链接:http://baike.baidu.com/item/java/85979?fr=aladdin&fromtitle=Java语言&fromid=4148931)
2.下载并配置java环境变量
2)java环境变量的配置:
http://blog.youkuaiyun.com/gray_key/article/details/64264675
3.Linux下的第一个程序
//使用vi编辑器,在linux环境下编写第一个java程序
public class Hello{public static void main(String agrs[]){System.out.println("Hello Word!");}}
4.javac命令
用法:javac <选项> <源文件>其中,可能的选项包括:-g 生成所有调试信息-g:none 不生成任何调试信息-g:{lines,vars,source} 只生成某些调试信息-nowarn 不生成任何警告-verbose 输出有关编译器正在执行的操作的消息-deprecation 输出使用已过时的 API 的源位置-classpath <路径> 指定查找用户类文件和注释处理程序的位置-cp <路径> 指定查找用户类文件和注释处理程序的位置-sourcepath <路径> 指定查找输入源文件的位置-bootclasspath <路径> 覆盖引导类文件的位置-extdirs <目录> 覆盖安装的扩展目录的位置-endorseddirs <目录> 覆盖签名的标准路径的位置-proc:{none,only} 控制是否执行注释处理和/或编译。-processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称;绕过默认的搜索进程-processorpath <路径> 指定查找注释处理程序的位置-d <目录> 指定存放生成的类文件的位置-s <目录> 指定存放生成的源文件的位置-implicit:{none,class} 指定是否为隐式引用文件生成类文件-encoding <编码> 指定源文件使用的字符编码-source <版本> 提供与指定版本的源兼容性-target <版本> 生成特定 VM 版本的类文件-version 版本信息-help 输出标准选项的提要-Akey[=value] 传递给注释处理程序的选项-X 输出非标准选项的提要-J<标志> 直接将 <标志> 传递给运行时系统
5.javac命令常用实例
javac -verbose Test.java 生成详细信息
javac –verbose d:\FirstProgram.java 指定源文件的目录
javac -classpath code code\Test.java
javac –cp code code\Test.java
javac -d e:\ d:\FirstProgram.java 指定class文件输出到一个特定的目录
javac –version 查看编译器的版本
javac –help 查看帮助信息
6.java命令
-classpath 类路径
-cp 类路径 指定一个用于查找类文件的列表,它由目录、 JAR 归档文件和 ZIP 归档文件组成。
类路径项用分号 (;) 分隔。指定 -classpath 或 -cp 将覆盖 CLASSPATH 环境变量的所有设置。
-classpath 或 -cp 与 java 或 javaw 一起使用时用于指定用户类和自举类的类路径。
-classpath 或 -cp 与 oldjava 或 oldjavaw 一起使用时仅用于指定用户类的类路径。
如果不使用 -classpath 和 -cp,且没有设定 CLASSPATH ,则用户类路径由当前目录 (.) 构成。
-D属性=值 设置系统属性的值。
-jar 执行封装在 JAR 归档文件中的程序。第一个参数是 JAR 归档文件的名称而不是启动类名.启动类由 Main-Class 清单头指定。
JAR 文件是所有用户类的源,其它的用户类路径设置将被忽略。
-verbose
-verbose:class 显示每个所加载的类的信息。
-verbose:gc 报告每个垃圾收集事件。
verbose:jni 报告有关本地方法的使用和其它 Java 平台相关代码接口活动的信息。
-version 显示版本信息并退出。
-?
-help 显示用法信息并退出。
-X 显示非标准选项的有关信息并退出。
7.java命令常用实例
Java FirstProgram 执行当前目录下的java文件
java -classpath d:\ FirstProgram 执行指定类目录下的文件
Java –verbose -classpath d:\ FirstProgram 查看加载及执行的详细信息
Java –verbose -classpath d:\ FirstProgram >d:\view.txt 输出到指定的文件
Java –version 查看版本
java com.mashen.FirstProgram 执行带包名的java文件
java -jar c:/temp/bin/test.jar 执行jar包
java -classpath .;log4j-api-2.4.jar;log4j-core-2.4.jar;./src TestLog
java -classpath .;log4j-api-2.4.jar;log4j-core-2.4.jar;./src TestLog 执行对jar包有依赖关系的文件
8.jar命令
jar命令格式:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...
其中{ctxu}这四个参数必须选选其一。[v f m e 0 M i ]是可选参数,文件名也是必须的。
选项:
-c 创建一个jar包
-t 显示jar中的内容列表
-x 解压jar包
-u 添加文件到jar包中
-f 指定jar包的文件名
-v 生成详细的报造,并输出至标准设备
-m 指定manifest.mf文件.(manifest.mf文件中可以对jar包及其中的内容作一些一设置)
-0 产生jar包时不对其中的内容进行压缩处理
-M 不产生所有文件的清单文件(Manifest.mf)。这个参数与忽略掉-m参数的设置
-i 为指定的jar文件创建索引文件
-C 表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令
9.一般属性
1)
Manifest-Version 用来定义manifest文件的版本,例如:Manifest-Version: 1.0
2)
Created-By 声明该文件的生成者,一般该属性是由jar命令行工具生成的, 例如:Created-By: Apache Ant 1.5.1
3)
Signature-Version 定义jar文件的签名版本4. Class-Path 应用程序或者类装载器使用该值来构建内部的类搜索路径
10.应用程序的相关属性
Main-Class
定义jar文件的入口类,该类必须是一个可执行的类,一旦定义了该属性即可通过
java -jar x.jar来运行该jar文件
11.综合实例
[root@localhost zengbiao]#
vi One.java
vi编辑.java文件
public class One{
public static void main(String agrs[]){
System.out.println("This is One.");
}
}
[root@localhost zengbiao]#
vi Two.java
public class Two{
public static void main(String agrs[]){
System.out.println("This is Two.");
}
}
[root@localhost zengbiao]#
javac One.java javac编译.java文件
[root@localhost zengbiao]#
javac Two.java
[root@localhost zengbiao]#
java One
This is One.
[root@localhost zengbiao]#
java Two java运行.class文件
This is Two.
[root@localhost zengbiao]# ll
total 16
-rw-r--r--. 1 root root 412 Mar 24 07:15 One.class
-rw-r--r--. 1 root root 102 Mar 24 07:15 One.java
-rw-r--r--. 1 root root 412 Mar 24 07:16 Two.class
-rw-r--r--. 1 root root 102 Mar 24 07:16 Two.java
[root@localhost zengbiao]#
jar -cvf dada.jar One.class Two.class
-cvf 创建一个jar包的同时将两个.class文件放进去
[root@localhost zengbiao]#
jar -tvf dada.jar
-tvf 查看jar包里面的内容
0 Fri Mar 24 07:20:44 CST 2017
META-INF/
68 Fri Mar 24 07:20:44 CST 2017
META-INF/MANIFEST.MF
创建jar包的时候默认生成一个META-INF文件夹及里面的MANIFEST.MF文件
该.MF文件主要包含jar包的相关信息(属性),如:Manifest-Version,Created-By,
Signature-Version,Class-Path。
若是不想生成META-INF文件夹及里面的MANIFEST.MF文件,则在创建jar包时,
在-cvf参数选项中加多一个大写M,即将-cvf改成-cvfM。
412 Fri Mar 24 07:15:26 CST 2017 One.class
412 Fri Mar 24 07:16:58 CST 2017 Two.class
[root@localhost zengbiao]#
java -cp dada.jar One -cp进入jar包中,运行.class文件
This is One.
[root@localhost zengbiao]#
java -cp dada.jar Two
This is Two.
[root@localhost zengbiao]#
jar -uvfe dada.jar One
-uvfe更新jar包,-u是更新的意思,-e参数是为了指定jar包中的主类,此代码中指定主类为One.
updated manifest
[root@localhost zengbiao]#
java -jar dada.jar
-jar 由于指定了jar包中的主类,java运行jar包时直接运行主类的.class文件。
而且,想要直接运行jar包,必须有指定的主类才行,若没指定主类,则运行报错。
This is One.
[root@localhost zengbiao]#
jar -uvfe dada.jar Two 将jar包的主类改为Two
updated manifest
[root@localhost zengbiao]#
java -jar dada.jar
This is Two.
[root@localhost zengbiao]# ll
total 24
-rw-r--r--. 1 root root 1143 Mar 24 07:28 dada.jar
-rw-r--r--. 1 root root 743 Mar 24 07:18 hehe.jar
-rw-r--r--. 1 root root 412 Mar 24 07:15 One.class
-rw-r--r--. 1 root root 102 Mar 24 07:15 One.java
-rw-r--r--. 1 root root 412 Mar 24 07:16 Two.class
-rw-r--r--. 1 root root 102 Mar 24 07:16 Two.java
[root@localhost zengbiao]# rm One.class Two.class
rm: remove regular file `One.class'? y
rm: remove regular file `Two.class'? y
[root@localhost zengbiao]# ll
total 16
-rw-r--r--. 1 root root 1143 Mar 24 07:28 dada.jar
-rw-r--r--. 1 root root 743 Mar 24 07:18 hehe.jar
-rw-r--r--. 1 root root 102 Mar 24 07:15 One.java
-rw-r--r--. 1 root root 102 Mar 24 07:16 Two.java
[root@localhost zengbiao]#
jar -xvf dada.jar -xvf 将jar包进行解压缩。
created: META-INF/
inflated: META-INF/MANIFEST.MF
inflated: One.class
inflated: Two.class
[root@localhost zengbiao]# ll
total 28
-rw-r--r--. 1 root root 1143 Mar 24 07:28 dada.jar
-rw-r--r--. 1 root root 743 Mar 24 07:18 hehe.jar
drwxr-xr-x. 2 root root 4096 Mar 24 07:20 META-INF
-rw-r--r--. 1 root root 412 Mar 24 07:15 One.class
-rw-r--r--. 1 root root 102 Mar 24 07:15 One.java
-rw-r--r--. 1 root root 412 Mar 24 07:16 Two.class
-rw-r--r--. 1 root root 102 Mar 24 07:16 Two.java
[root@localhost zengbiao]#
rm hehe.jar dada.jar 删除.jar文件
rm: remove regular file `hehe.jar'? y
rm: remove regular file `dada.jar'? y
[root@localhost zengbiao]# ll
total 20
drwxr-xr-x. 2 root root 4096 Mar 24 07:20 META-INF
-rw-r--r--. 1 root root 412 Mar 24 07:15 One.class
-rw-r--r--. 1 root root 102 Mar 24 07:15 One.java
-rw-r--r--. 1 root root 412 Mar 24 07:16 Two.class
-rw-r--r--. 1 root root 102 Mar 24 07:16 Two.java
[root@localhost zengbiao]#
[root@localhost zengbiao]# ll
total 12
drwxr-xr-x. 3 root root 4096 Mar 24 07:40 aa
-rw-r--r--. 1 root root 102 Mar 24 07:15 One.java
-rw-r--r--. 1 root root 102 Mar 24 07:16 Two.java
[root@localhost zengbiao]#
vi One.java
package aa.bb; package 将类进行打包,aa/bb是打包的路径。
public class One{
public static void main(String agrs[]){
System.out.println("This is One.");
}
}
[root@localhost zengbiao]#
vi Two.java
package aa.bb;
public class Two{
public static void main(String agrs[]){
System.out.println("This is Two.");
}
}
[root@localhost zengbiao]#
javac One.java 由于.java文件重新编辑过,所以需重新编译
[root@localhost zengbiao]#
javac Two.java
[root@localhost zengbiao]#
mkdir aa 创建一个aa文件夹
[root@localhost zengbiao]#
cd aa
[root@localhost aa]#
mkdir bb 在aa文件夹下再创建一个bb文件夹
[root@localhost aa]#
cd ../
[root@localhost zengbiao]#
mv One.class aa/bb 将One.class文件移动到bb文件夹中
[root@localhost zengbiao]#
mv Two.class aa/bb
[root@localhost zengbiao]# cd aa/bb
[root@localhost bb]# ll
total 8
-rw-r--r--. 1 root root 418 Mar 24 08:08 One.class
-rw-r--r--. 1 root root 418 Mar 24 08:09 Two.class
[root@localhost bb]# cd ../../
[root@localhost zengbiao]#
jar -cvf hehe.jar aa 新建个jar包,并把aa文件夹放进去
added manifest
adding: aa/(in = 0) (out= 0)(stored 0%)
adding: aa/bb/(in = 0) (out= 0)(stored 0%)
adding: aa/bb/Two.class(in = 418) (out= 288)(deflated 31%)
adding: aa/bb/One.class(in = 418) (out= 287)(deflated 31%)
[root@localhost zengbiao]# ls
aa hehe.jar One.java Two.java
[root@localhost zengbiao]#
jar -uvfe hehe.jar aa/bb/One 指定jar包的主类
updated manifest
[root@localhost zengbiao]#
java -jar hehe.jar 直接运行jar包的主类
This is One.
[root@localhost zengbiao]#
jar -uvfe hehe.jar aa/bb/Two
updated manifest
[root@localhost zengbiao]#
java -jar hehe.jar
This is Two.
[root@localhost zengbiao]# ll
total 16
drwxr-xr-x. 3 root root 4096 Mar 24 08:09 aa
-rw-r--r--. 1 root root 1353 Mar 24 08:14 hehe.jar
-rw-r--r--. 1 root root 117 Mar 24 07:57 One.java
-rw-r--r--. 1 root root 117 Mar 24 07:58 Two.java
[root@localhost zengbiao]# rm -r aa
rm: descend into directory `aa'? y
rm: descend into directory `aa/bb'? y
rm: remove regular file `aa/bb/Two.class'? y
rm: remove regular file `aa/bb/One.class'? y
rm: remove directory `aa/bb'? y
rm: remove directory `aa'? y
[root@localhost zengbiao]# ls
hehe.jar One.java Two.java
[root@localhost zengbiao]#
java -cp hehe.jar aa/bb/One
-cp 此处通过绝对路径运行jar包中的类
This is One.
[root@localhost zengbiao]#
java -cp hehe.jar aa/bb/Two
This is Two.
[root@localhost zengbiao]#
小结
javac -verbose 文件名.java 编译并显示详细信息
java -verbose 文件名 运行并显示详细信息
Java编程入门
本文介绍了Java编程语言的基础知识,包括语言特点、环境搭建、基本语法等内容。通过实例演示了如何编写、编译和运行简单的Java程序。
858

被折叠的 条评论
为什么被折叠?



