简单的Java程序
Java程序的类型
- Application 应用程序
- Applet 小应用程序
- 结构和运行环境不同
- 前者是独立的程序,需要执行器(调用虚拟机)来运行
- 后者是嵌在HTML网页中的非独立的程序
- 由专门的appletViewer来运行
- 或者由Web浏览器(调用Java虚拟机)来运行
Application程序
HelloWorld.java
1
2
3
4
5public class HelloWorldApp{//定义类
public static void main (String args[]){//main方法
System.out.println("Hello world!");//显示并换行
}
}要点
- class是主体
- public类名与文件同名
- main()的写法是固定的
- System.out.print 及println及printf
Applet程序
HelloWorldApplet.java
1
2
3
4
5
6
7
8import java.awt.*;
import java,applet.*;
import javax.swing.*;
public class HelloWorldApplet extends JApplet{
public void paint(Graphics g){
g.drawString("Hello World!",20,20
}
}import表示导入
extends JApplet表示继承
Applet或JApplet都可以
paint()方法表示如何绘制
没有main()方法
HelloWorldApplet.html
1 | <html> |
Java程序的基本构成
HelloDate.java
1
2
3package edu.pku.tds.ch02;//package语句(0或1句)文件位于包的路径,没有说明在当前路径下
import java.util.*;//import 语句(0或1句),导入其他类的库。.*表示这个包的一系列类
public class HelloDate{}//类定义——class(1个或多个),一个文件只能有一个public类(与文件同名)类=类头+类体
类成员=字段(field)+方法(method)
- 字段(field):属性,变量
- 方法(method):函数
方法=方法头+方法体
Java程序开发的步骤
- 源程序编辑:可用任一文本编辑器
- 程序编译:jdk中的javac工具 将.java转化成.class文件
- 程序运行:java工具
JDK安装后的文件夹
- bin :该目录存放工具文件
- jre:存放与java运行环境相关的文件,与官网下载的jre有区别
- demo:存放一些示例文件
- include:存放与C相关的头文件
- lib:存放程序库
- db:数据库相关
Application的编辑、编译与运行
程序编辑:编辑器——文件名要与public class的类名一致(区分大小写)
程序编译——转换为字节码(bytecode)文件
- (.class文件中包含jvm的指令)
- 编译可以使用jdk工具javac.exe
- 如javac Hello.java
程序的运行——执行.class文件中的指令过程
- 如 java Hello
- 注意:不要写成java Hello.class因为这里需要的是类名,不是文件名
设定path和classpath
path是命令(java和javac)的路径,classpath是所要引用的类的路径
可以在命令行上设定
1
set path=.;c:\jdk\bin //.表示当前文件夹,..代表上一文件夹,:代表多个路径的分隔符
也可以在系统环境中设定(环境变量)
在javac及java命令行上使用-classpath(或-cp)选项可以引用别的库
1 | javac -cp libxx.jar 源文件名.java |
使用package时的编译
- 文件及路径一致
- 程序中使用package语句
- 使用import语句
- 编译及运行
1 | //-d表示生成的类放在哪个文件夹下面去 |
其他的工具
主要的工具
javac :编译
java:运行(控制台及图形界面程序)
javaw:运行图形界面程序
appletViewer:运行applet程序
另外几个常用的工具
- jar:打包工具
- javadoc:生成文档
- javap:查看类信息及反汇编
使用jar打包
编译:javac A.java
打包:jar cvfm A.jar A.man A.class
c表示创建(create),v表示显示详情(verbose),f表示指定文件名,m表示清单文件
运行 java -jar A.jar
其中A.man 是清单文件(maniifest),内容如下:
- Manifest-Version:1.0
- Class-Path:.
- Main-Class:A
清单文件可以任意命名,常见的是用MANIFEST.MF
使用JavaDoc生成文档
- javadoc -d 目录名xxx.java
- /** */ 这其中可以用以下标记
- @author:对类的说明,标明开发该类模块的作者
- @version:对类的说明,标明该类模块的版本
- @see:对类、属性、方法的说明,参考转向,也就是相关主题
- @param:对方法的说明,对方法中某参数的说明
- @return:对方法的说明,对方法返回值的说明
- @exception:对方法的说明,对方法可能抛出的异常进行说明
java的api文档
- 在线文档:https://docs/oracle.com/javase/8/docs/api/index.html
- 下载网页格式的文档:doc.zip
- 从网上搜索到chm格式的文档:JDK_API_1_6_zh_CN.CHM
使用javap
使用javap查看类的信息:javap 类名
使用javap反汇编:javap -c 类名
生成为jvm的指令
输入与输出
文本界面的输入输出
- java application的输入输出可以是文本界面和图形界面
- java applet只能是图形界面
文本界面:使用java.util.Scanner类 Since JDK1.5
用nextIInt(),nextDouble()方法
next()得到下一个单词
1
2
3
4
5
6
7
8
9
10//ScannerTest.java
import java.util.Scanner;
class ScannerTest{
public static void main ( String[] args){
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个数");
int a = scanner.nextint();
System.out.pritntf("%d的平方是%d\n",a,a*a);
}
}
文本界面:使用in及out
java.io包
System.in.read()
System.out.print()及println、printf
1
2
3
4
5
6
7//AppCharInOut.java
char c = ' ';
System.out.print("Please input a char:");
try{
c= (char)System.in.read();
}catch(IOException e){}//试图读入,catch ioexception
System.out.println("You have entered :"+c);1
2
3
4
5
6//AppLineInOut.java 输入输出行
try{
BufferedReader in = new BufferedReader(
new InputStreamReader(System in));//封装字符流
s= in.readLine();
}catch(IOException e){}1
2
3
4
5
6//AppNumInOut.java 输入输出数字
BufferedReader in new BufferedReader(
new InputStreamReader(System.in));
System.out.print("Please input an int:");
s - in,readLine();
n =Integer.parseInt( s );//实数:Double.parseDouble(s)
图形界面的输入输出
在图形界面下可以
- 使用文本框对象(TextFeild)获取用户输入的数据
- 使用标签对象(Label)或文本框对象输出数据
- 使用命令按钮(Button)来执行命令
1 | //先创建自己的图形界面,new一个AppGraphInOut,java |
完整代码(通过控件显示输入输出):
1 | import java.awt.*; |
在java8中可简写为e->(lambda表达式)
1 | btn.addActionListener( e->{ |
开发环境
(1)直接使用jdk
javac,java,appletViewer
(2)文本工具+调用jdk命令
notepad++
(3)集成开发环境(IDE:integrated development environment)