Java 程序设计概述
Java "白皮书"的关键术语
-
简单性
Java 剔除了 C++ 中许多很少使用、 难以理 解、 易混淆的特性。
Java 语法是 C++ 语法的一个“ 纯净” 版本。这里没有头文件、 指针运算(甚至指 针语法)、结构、 联合、操作符重载、 虚基类等。
-
面向对象
面向对象设计是一种程序设计技术。 它将重点放在数椐(即对象) 和对象的接口上
-
分布式
Java 有一个丰富的例程库, 用于处理像 HTTP 和 FIT 之类的 TCP/IP 协议。Java 应用 程序能够通过 URL 打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。
-
健壮性
Java 投入 了大量的精力进行早期的问题检测、 后期动态的(运行时)检测, 并消除了容易出 错的情况……Java 和 C++ 最大的不同在于 Java 采用的指针模型可以消除重写内存 和损坏数据的可能性。
-
安全性
Java 就设计成能够防范各种攻击,其中包括:
•运行时堆栈溢出。 如蠕虫和病毒常用的攻击手段。
•破坏自己的进程空间之外的内存。
•未经授权读写文件
-
体系结构中立
编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码, 只要有 Java 运行时系统, 这些编译后的代码可以在许多处理器上运行。Java 编译器通过生成 与特定的计算机体系结构无关的字节码指令来实现这一特性。
-
可移植性
Java中的 int 永远为 32 位的整数,而在 C/C++ 中, int 可能是 16 位整数、 32 位整 数, 也可能是编译器提供商指定的其他大小。唯一的限制只是 int 类型的大小不能低于 short int, 并且不能高于 long int。在 Java 中,数据类型具有固定的大小, 这消除了代码移植时令 人头痛的主要问题。 二进制数据以固定的格式进行存储和传输, 消除了字节顺序的困扰。字 符串是用标准的 Unicode 格式存储的。
-
解释型
编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码, 只要有 Java 运行时系统, 这些编译后的代码可以在许多处理器上运行。Java 编译器通过生成 与特定的计算机体系结构无关的字节码指令来实现这一特性。
-
高性能
尽管对解释后的字节码性能已经比较满意,但在有些场合下还需要更加高效的 性能。字节码可以(在运行时刻)动态地翻译成对应运行这个应用的特定 CPU 的机 器码。
-
多线程
多线程可以带来更好的交互响应和实时行为。
-
动态性
它能够适应不断发展 的环境库中可以自由地添加新方法和实例变量, 而对客户端却没有任何影响。在 Java 中找出运行时类型信息十分简单。
第二章
java程序设计环境
-
下载JDK:https://www.oracle.com/java/technologies/javase-jdk14-downloads.html
-
安装JDK
在windows中安装JDK后,并且配置环境变量,在系统变量中的变量Path中新建变量值:"D:\Program Files\Java\jdk1.8.0_144\bin",随后打开终端输入命令 java -version 按回车键得如下信息:
java version "1.8.0_144" Java(TM) SE Runtime Environment (build 1.8.0_144-b01) Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
-
安装库源文件和文档
-
将jdk目录下src.zip解压到上级目录下的javasrc文件夹中。
-
下载文档包:https://horstmann.com/corejava/,将corejava.zip解压到与javasec同级目录下的corejava文件夹中。
-
-
使用命令行工具
-
打开一个命令行窗口。
-
进入 corejava/vlch02/Welcome目录。
-
输入下面的命令:
javac Weicome.java
java Welcome
得到结果如下:

程序清单 2-2 Welcome/Welcome.java
/** * This program displays a greeting for the reader. * @version 1.30 2014-02-27 * @author Cay Horstmann */ public class Welcome { public static void main(String[] args) { String greeting = "Welcome to Core Java!"; System.out.println(greeting); for (int i = 0; i < greeting.length(); i++) System.out.print("="); System.out.println(); } }
-
使用集成开发环境
下载Eclipse: http://eclipse. org/downloads
运行图形化应用程序
-
-
进入 corejava/vlch02/FXImageViewer。
-
输入:
javac ImageViewer.java
java ImageViewer
结果如下:

程序清单 2-2 FXImageViewer/lmageViewer.java
import java.io.*; import java.nio.file.*; import javafx.application.*; import javafx.scene.*; import javafx.scene.control.*; import javafx.scene.control.Alert.*; import javafx.scene.image.*; import javafx.scene.layout.*; import javafx.stage.*; import javafx.stage.FileChooser.*; /** * A program for viewing images. * @version 1.40 2017-12-10 * @author Cay Horstmann */ public class ImageViewer extends Application { private static final int MIN_SIZE = 400; public void start(Stage stage) throws IOException { BorderPane pane = new BorderPane(); MenuBar bar = new MenuBar(); pane.setTop(bar); Menu fileMenu = new Menu("File"); bar.getMenus().add(fileMenu); MenuItem openItem = new MenuItem("Open"); openItem.setOnAction(event -> load(stage, pane)); MenuItem exitItem = new MenuItem("Exit"); exitItem.setOnAction(event -> System.exit(0)); fileMenu.getItems().addAll(openItem, exitItem); stage.setScene(new Scene(pane, MIN_SIZE, MIN_SIZE)); stage.setTitle("ImageViewer"); stage.show(); } /** * Loads an image. * @param stage the stage above which to place the file chooser * @param pane the pane into which to place the image view */ public void load(Stage stage, BorderPane pane) { FileChooser fileChooser = new FileChooser(); fileChooser.getExtensionFilters().addAll( new ExtensionFilter("Image Files", "*.png", "*.jpg", "*.gif"), new ExtensionFilter("All Files", "*.*")); File file = fileChooser.showOpenDialog(stage); if (file != null) { try { Path path = file.toPath(); Image image = new Image(Files.newInputStream(path)); pane.setCenter(new ImageView(image)); } catch (IOException e) { Alert alert = new Alert(AlertType.ERROR, "Cannot open file."); alert.showAndWait(); } } } }
构建并运行 applet
首先,打开终端窗口并转到 CoreJava/vlch02/RoadApplet,
然后,输入下面的命令: javac RoadApplet.java
jar cvfm RoadApplet.jar RoadApplet.mf *.dass
appletviewer RoadApplet.htnil
第三章
一个简单的Java程序
/** * 版权:**** * 版本:version 1.0 * @author lucky_ice * */ public class Test{ public static void main(String args[]){ System.out.println("Hello world!"); } }
注释
-
单行注释:使用”//“开头,”//“后面的单行内容均为注释。
-
多行注释:以”/* "开头、以“ */” 结尾,在”/ * "和“ */ ”之间的内容均为注释,我们也可以使用多行注释作为行内注释,但是在使用时要注意,多行注释不能嵌套使用。
-
文档注释:以“ /** ”开头、以“ */ ”结尾,注释中包含一些说明性的文字及一些JavaDoc标签(在写项目时,可以生成项目的API)。
数据类型
基本数据类型
数值型
-
整数类型
byte:1 btye short:2 byte int:4 byte long: 8 byte
byte型
常量:java中不存在byte型常量的表示法。但可以把一定范围内的int型常量赋值给byte型变量。
short型
常量:和byte型类似,java中也不存在short型常量得到表示法,但可以把一定范围的int型常量赋值给short型变量。
int型
常量:123(十进制),077(八进制),0x3ABC(十六进制)
long型
常量:long型常量用后缀L来表示,例如 108L(十进制),07231L(八进制),0x3ABC(十六进制)
-
浮点数类型
float(单精度):4 byte
flaot常量:432.3432f,23124.987F,321.0f(小数表示法),2e40f(2乘10的40次方,指数表示法),需要特别注意常量后面必须要有后缀f或F。
flaot变量在存储float型数据时保留8位有效数字(相对double型保留的有效数字,称之为单精度)。
double(双精度):8 byte
double常量:2332.343d,3423423,987,0.55(小数表示法),1e-90(1乘10的-90次方,指数表示法)。对于double常量,后面可以有后缀d或D,但允许省略该后缀。
double型变量在存储double型数据时保留16位有效数字(相对float型保留的有效数字,称之为双精度)。
字符型
char:2 byte
对于char型变量,分配2个字节内存,占16位,最高位不是符号位,没有负数的char,char型变量的取值范围是0~65535。
有些字符(如回车符)不能通过键盘输入到字符串或程序中,这时就需要使用转义字符常量,例如:\n(换行),\b(退格),\t(水平制表)
布尔类型
boolean:1 bit
常量:false,true。
变量:使用关键字boolean来声明逻辑变量。
引用数据类型
-
类(class)
-
接口(interface)
-
数组
浙公网安备 33010602011771号