第一章

Java 程序设计概述

Java "白皮书"的关键术语

  1. 简单性

    Java 剔除了 C++ 中许多很少使用、 难以理 解、 易混淆的特性。

    Java 语法是 C++ 语法的一个“ 纯净” 版本。这里没有头文件、 指针运算(甚至指 针语法)、结构、 联合、操作符重载、 虚基类等。

  2. 面向对象

    面向对象设计是一种程序设计技术。 它将重点放在数椐(即对象) 和对象的接口上

  3. 分布式

    Java 有一个丰富的例程库, 用于处理像 HTTP 和 FIT 之类的 TCP/IP 协议。Java 应用 程序能够通过 URL 打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。

  4. 健壮性

    Java 投入 了大量的精力进行早期的问题检测、 后期动态的(运行时)检测, 并消除了容易出 错的情况……Java 和 C++ 最大的不同在于 Java 采用的指针模型可以消除重写内存 和损坏数据的可能性。

  5. 安全性

    Java 就设计成能够防范各种攻击,其中包括:

    •运行时堆栈溢出。 如蠕虫和病毒常用的攻击手段。

    •破坏自己的进程空间之外的内存。

    •未经授权读写文件

  6. 体系结构中立

    编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码, 只要有 Java 运行时系统, 这些编译后的代码可以在许多处理器上运行。Java 编译器通过生成 与特定的计算机体系结构无关的字节码指令来实现这一特性。

  7. 可移植性

    Java中的 int 永远为 32 位的整数,而在 C/C++ 中, int 可能是 16 位整数、 32 位整 数, 也可能是编译器提供商指定的其他大小。唯一的限制只是 int 类型的大小不能低于 short int, 并且不能高于 long int。在 Java 中,数据类型具有固定的大小, 这消除了代码移植时令 人头痛的主要问题。 二进制数据以固定的格式进行存储和传输, 消除了字节顺序的困扰。字 符串是用标准的 Unicode 格式存储的。

  8. 解释型

    编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码, 只要有 Java 运行时系统, 这些编译后的代码可以在许多处理器上运行。Java 编译器通过生成 与特定的计算机体系结构无关的字节码指令来实现这一特性。

  9. 高性能

    尽管对解释后的字节码性能已经比较满意,但在有些场合下还需要更加高效的 性能。字节码可以(在运行时刻)动态地翻译成对应运行这个应用的特定 CPU 的机 器码。

  10. 多线程

    多线程可以带来更好的交互响应和实时行为。

  11. 动态性

    它能够适应不断发展 的环境库中可以自由地添加新方法和实例变量, 而对客户端却没有任何影响。在 Java 中找出运行时类型信息十分简单。

第二章

java程序设计环境

  1. 下载JDK:https://www.oracle.com/java/technologies/javase-jdk14-downloads.html

  2. 安装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)

  3. 安装库源文件和文档

    1. 将jdk目录下src.zip解压到上级目录下的javasrc文件夹中。

    2. 下载文档包:https://horstmann.com/corejava/,将corejava.zip解压到与javasec同级目录下的corejava文件夹中。

  4. 使用命令行工具

    1. 打开一个命令行窗口。

    2. 进入 corejava/vlch02/Welcome目录。

    3. 输入下面的命令:

      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

[注]  通常, Eclipse 错误报告会伴有一个灯泡图标。点击这个图标可以得到一个建议解 决这个错误的方案列表。

运行图形化应用程序

  1. 打开一个终端窗口。

  2. 进入 corejava/vlch02/FXImageViewer。

  3. 输入:

    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!");
       }
    } 
 

 

注释

  1. 单行注释:使用”//“开头,”//“后面的单行内容均为注释。

  2. 多行注释:以”/* "开头、以“ */” 结尾,在”/ * "和“ */ ”之间的内容均为注释,我们也可以使用多行注释作为行内注释,但是在使用时要注意,多行注释不能嵌套使用。

  3. 文档注释:以“ /** ”开头、以“ */ ”结尾,注释中包含一些说明性的文字及一些JavaDoc标签(在写项目时,可以生成项目的API)。

数据类型

基本数据类型

数值型

  1. 整数类型

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(十六进制)

[注意]  Java没有无符号的byte,short,int和long,这一点和C语言有很大的不同,因此unsigned int m;是错误的变量声明。

 

  1. 浮点数类型

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来声明逻辑变量。

引用数据类型

  1. 类(class)

  2. 接口(interface)

  3. 数组

[注意]  占4 byte 用来代表对象的地址。

 

 

posted on 2020-08-03 23:27  ♌南墙  阅读(234)  评论(0)    收藏  举报