java入门教程[9天快速入门java]_第1页
java入门教程[9天快速入门java]_第2页
java入门教程[9天快速入门java]_第3页
java入门教程[9天快速入门java]_第4页
java入门教程[9天快速入门java]_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java 入门教程9 天快速入门 JAVA 第一章 Java 概述 1.1Java 语言出现的背景、影响及应用前景 一、背景 最近一年多来,在 Internet 上出现的特别吸引人的事件就是 Java 语言和用 Java 编写的浏览器 HotJava。 1991 年 ,SUN MicroSystem 公司的 JameGosling、BillJoe 等人, 为在电 视、控制烤面包箱等家 用消费类电子产品上进行交互式操作而开发了一个名为 Oak 的软件(即一种橡树的名字),但当时 并没有引起人们的注意,直到 1994 年下半 年,Internet 的迅猛发展, 环球信息网 WWW 的快速增 长,促进了 Java 语言研制的 进展,使得它逐渐成为 Internet 上受欢迎的开发与编程语言, 一些著 名的计算机 公司纷纷购买了 Java 语言的使用权,如 MicroSoft、IBM、Netscape、Novell、 Apple、DEC 、 SGI 等,因此,Java 语言被美国的著名杂志 PCMagazine 评为 1995 年十大优秀 科技产品,(计算机类就此一项入选),随之大量出现了用 Java 编写的 软件产品, 受到工业界的重 视与好评,认为“Java 是八十年代以来计算机界的一件 大事“,微软总裁比尔盖茨在悄悄地观察了 一段时间后,不无感慨地说:“Java 是 长时间以来最卓越的程序设计语言“,并确定微软整个软件开 发的战略从 PC 单机时 代向着以网络为中心的计算时代转移,而购买 Java 则是他的重大战略决 策的实施部 署。 因此,Java 的诞生必将对整个计算机产业发生深远的影响,对传统的计算模型 提出了新的挑战。 SUNMicroSystem 公司的总裁 ScottMcNealy 认为 Java 为 Internet 和 WWW 开 辟了一个崭新 的时代。 环球信息网 WWW 的创始人 Berners-Lee 说:“计算机事业发展的下一个浪潮就 是 Java,并且将 很快会发生的“。 看来,使用 Java 已成大势所趋! MicroSoft 和 IBM 两大公司都计划在 Internet 上销售用 Java 编写的软件。 Apple、HP 、IBM、MicroSoft、Novell、SGI、SCO、Tandem 等公司均 计划将 Java 并入各 自开发的操作系统,而负责开发并推广 Java 技术的 SunSoft 公 司( 这是 SUN 下属的一个子公司), 将通过颁发许可证的办法来允许各家公司把 Java 虚拟机和 Java 的 Applets 类库嵌入他们开发 的操作系统,这样各类开发人员 就能更容易地选择多种平台来使用 Java 语言编程, 不同的用户 也就可以脱离 Web 浏览器来运行 Java 应用程序,这无疑是很受广大用户欢迎的,也为 Java 语 言的应 用开拓了极为广阔的前景。(当然,各类 JavaOS 之间的兼容性必须得到重视, 好在 JavaSoft 已保证将监督这种兼容性)。 另外,由 JavaSoft 推出的完全用 Java 编写的 Internet 上新型浏览器 HotJava, 比去年 alpha 版 更为实用,不仅能编制动态的应用软件,而且能编制完整的成套桌 面应用软件, 将来还会提供更多 的能帮助编制动态应用软件的模块,显然,这也是 为 Java 的应用提供了有力的例证。 今年 6 月 7 日,由 SUN 公司和台湾经济事务部信息发展局、台湾信息技术研 究所等单位牵头, 成立了一个“Java 联盟“,参加的有 22 个在台湾相当著名的计算 机公司,并在台北建立一个“Java 开发中心“,在新竹建立一个“Java 语言实验室“, 以掀起台湾开发与应用 Java 语言的热潮。 香港则在今年 4 月就举行了全岛的 Java 杯比赛,在计算机界掀起了学习 Java 的热潮(尤其是在 大学生们中,出现了一批 Java 迷)。 有人预言:Java 将是网络上的“世界语“,今后所有的用其他语言编写的软 件统统都要用 Java 语 言来改写。 二、Java 语言对软件开发技术的影响 工业界不少人预言:“Java 语言的出现 ,将会引起一场软件革命“,这是因为 传统的软件往往都是与 具体的实现环境有关,换了一个环境就需要作一番改动,耗 时费力, 而 Java 语言能在执行码(二进 制码)上兼容,这样以前所开发的软件就 能运行在不同的机器上,只要所用的机器能提供 Java 语 言解释器即可。 Java 语言将对未来软件的开发产生影响,可从如下几个方面考虑: 1 软件的需求分析:可将用户的需求进行动态的、可视化描述,以提供设计 者更加直观的要求。 而用户的需求是各色各样的,不受地区、行业、部门、爱好的 影响,都可以用 Java 语言描述清 楚。 2 软件的开发方法:由于 Java 语言的面向目标的特性,所以完全可以用 O-O 的技术与方法来开 发,这是符合最新的软件开发规范要求的。 3Java 语言的动画效果远比 GUI 技术更加逼真,尤其是利用 WWW 提供的巨大 动画资源空间, 可以共享全世界的动态画面的资源。 4 软件最终产品:用 Java 语言 开发的软件可以具有可视化、可听化、可操 作化的效交互、动 画与动作“,要它停就停,要它继续就继续,而这是在电影与电 视播放过程中难以做到的。 5 其它:使用 Java 语言对开发效益、开发价值都有比较明显的影响。 三、工业界对 Java 语言的评价 1996 年 5 月 2931 日,在美国旧金山召开了一个全世界 Java 语言开发者 大会, (JavaOneDeveloperConfer-ence),出席会议的多达 6500 多人, 来自工业 界的超过一半, 有人评 价说:“这是近年来计算机界最光辉的一次盛会“,一些工 业界的老总们相当看好 Java 语言, 认为 它的使用将会引起一场软件革命。从软件 的设计风格、设计方法、设计目标到设计过程, 都会 产生彻底的变革,“甚至会改 变此星球的生活方式“。 在这次会上,Java 的创始人之一 JamesGosling 说:“Java 不仅仅只是 applets,它能做任何事情 “,Dta 咨询公司的高级软件工程师 RichKadel 说:“Java 不仅仅是一种程序设计语言, 更是现代化 软件再实现的基础;Java 还是未来新型 OS 的核心;将会出现 Java 芯片; 将构成各种应用软件的 开发平台与实现环境,是 人们必不可少的开发工具,“。 由于各界都看好它,因此,各大公司都纷纷表示支持 Java,Intel、Xerox 公司声言将把 Java 嵌入 到他们的产品中去。就连华尔街金融界也在投入资金人力 用 Java 开发电子贸易、金融软件。 所以有人说:“现在第三方的开发商都团结在 Java 大旗周围了!“, 纷纷推出 用 Java 开发的各种软 件产品,以期尽快地占领市场。 四、Java 语言的应用前景 Java 语言有着广泛的应用前景,大体上可以从以下几个方面来考虑其应用: 1 所有面向对象的应用开发,包括面向对象的事件描述、处理、综合等; 2 计算过程的可视化、可操作化的软件的开发; 3 动态画面的设计,包括图形图像的调用; 4 交互操作的设计(选择交互、定向交互、控制流程等); 5Internet 的系统管理功能模块的设计 ,包括 Web 页面的动态设计、管理 和交互操作设计等; 6Intranet(企业内部网)上的软件开发(直接面向企业内部用户的软件); 7 与各类数据库连接查询的 SQL 语句实现; 8 其它应用类型的程序。 1.2Java 的特点 Java 是一个广泛使用的网络编程语言,它是一种新的计算概念。 首先,作为一种程序设计语言,它简单、面向对象、不依赖于机器的结构、 具有可移植性、鲁棒 性、安全性、并且提供了并发的机制、具有很高的性能。其 次, 它最大限度地利用了网络,Java 的小应用程序(applet)可在网络上传输而 不受 CPU 和环境的限制。另外,Java 还提供了丰富的 类库,使程序设计者可以很 方便地建立自己的系统。 下面我们分别从这三个方面来讨论 Java 的特点,然后通过把 Java 与 C, C+相比进一步指出它 所具有的优点。 一、Java 语言 Java 语言有下面一些特点:简单、面向对象、分布式、解释执行、鲁棒、 安全、体系结构中立、 可移植、高性能、多线程以及动态性。 1.简单性 Java 语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的 任务, 只需理解一些基 本的概念,就可以用它编写出适合于各种情况的应用程 序。Java 略去了运算符重载、多重继承 等模糊的概念,并且通过实现自动垃圾 收集大大简化了程序设计者的内存管理工作。另外,Java 也适合于在小型机上运 行,它的基本解释器及类的支持只有 40KB 左右, 加上标准类库和线程的 支持也 只有 215KB 左右。库和线程的支持也只有 215KB 左右。 2.面向对象 Java 语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的 接口模型。对象中封 装了它的状态变量以及相应的方法,实现了模块化和信息 隐藏 ;而类则提供了一类对象的原型, 并 且通过继承机制,子类可以使用父类 所提供的方法,实现了代码的复用。 3.分布性 Java 是面向网络的语言。通过它提供的类库可以处理 TCP/IP 协议, 用户 可以通过 URL 地址在 网络上很方便地访问其它对象。 4.鲁棒性 Java 在编译和运行程序时,都要对可能出现的问题进行检查, 以消除错误 的产生。它提供自动垃 圾收集来进行内存管理,防止程序员在管理内存时容易 产生的错误。通过集成的面向对象的例 外处理机制,在编译时,Java 提示出可能 出现但未被处理的例外, 帮助程序员正确地进行选择以 防止系统的崩溃。另外, Java 在编译时还可捕获类型声明中的许多常见错误, 防止动态运行时不 匹配问题 的出现。 5.安全性 用于网络、分布环境下的 Java 必须要防止病毒的入侵。Java 不支持指针, 一切对内存的访问 都必须通过对象的实例变量来实现,这样就防止程序员使用 “特洛伊“木马等欺骗手段访问对象的 私有成员,同时也避免了指针操作中容易 产生的错误。 6.体系结构中立 Java 解释器生成与体系结构无关的字节码指令,只要安装了 Java 运行时 系统,Java 程序就可在 任意的处理器上运行。这些字节码指令对应于 Java 虚拟 机中的表示,Java 解释器得到字节码 后,对它进行转换,使之能够在不同的平 台运行。 7.可移植性 与平台无关的特性使 Java 程序可以方便地被移植到网络上的不同机器。 同时,Java 的类库中 也实现了与不同平台的接口,使这些类库可以移植。另外, Java 编译器是由 Java 语言实现的, Java 运行时系统由标准 C 实现,这使得 Java 系统本身也具有可移植性。 8.解释执行 Java 解释器直接对 Java 字节码进行解释执行。字节码本身携带了许多 编译时信息, 使得连接 过程更加简单。 9.高性能 和其它解释执行的语言如 BASIC、TCL 不同,Java 字节码的设计使之能 很容易地直接转换成 对应于特定 CPU 的机器码,从而得到较高的性能。 10.多线程 多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据 的正确操作。通过使用 多线程,程序设计者可以分别用不同的线程完成特定 的行为 ,而不需要采用全局的事件循环机制, 这样就很容易地实现网络上的实 时交互行为。 11.动态性 Java 的设计使它适合于一个不断发展的环境。在类库中可以自由地加入 新的方法和实例变量 而不会影响用户程序的执行。并且 Java 通过接口来支持 多重继承, 使之比严格的类继承具有更 灵活的方式和扩展性。 二、JavaApplet Java 语言的特性使它可以最大限度地利用网络。Ap-plet 是 Java 的小应 用程序, 它是动态、安 全、跨平台的网络应用程序。JavaApplet 嵌入 HTML 语 言,通过主页发布到 Internet。网络用 户访问服务器的 Applet 时, 这些 Applet 从网络上进行传输,然后在支持 Java 的浏览器中运行。 由于 Java 语言的安全机 制,用户一旦载入 Applet,就可以放心地来生成多媒体的用户界面或完 成复杂的 计算而不必担心病毒的入侵。虽然 Applet 可以和图像、声音、动画等一样从网 络上 下载,但它并不同于这些多媒体的文件格式,它可以接收用户的输入,动态 地进行改变, 而不仅仅 是动画的显示和声音的播放。 三、丰富的类库 Java 提供了大量的类以满足网络化、多线程、面向对象系统的需要。 1.语言包提供的支持包括字符串处理、多线程处理、例外处理、数学函 数处理等, 可以用它简 单地实现 Java 程序的运行平台。 2.实用程序包提供的支持包括哈希表、堆栈、可变数组、时间和日期等。 3.输入输出包用统一的“流“模型来实现所有格式的 I/O,包括文件系统、 网络、输入 4.低级网络包用于实现 Socket 编程。 5.抽象图形用户接口包实现了不同平台的计算机的图形用户接口部件, 包括窗口、菜单、滚动 条、对话框等,使得 Java 可以移植到不同平台的机器。 6.网络包支持 Internet 的 TCP/IP 协议,提供了与 In-ternet 的接口。 它支持 URL 连接,WWW 的 即时访问,并且简化了用户/服务器模型的程序设计。 四、Java 和 C、C+ 对于变量声明、参数传递、操作符、流控制等,Java 使用了和 C、C+ 相同的传统, 使得熟悉 C、C+的程序员能很方便地进行编程。同时,Java 为 了实现其简单、鲁棒、安全等特性, 也摒 弃了 C 和 C+中许多不合理的内容。 1.全局变量 Java 程序中,不能在所有类之外定义全局变量,只能通过在一个类中定 义公用、静态的变量来实 现一个全局变量。例如: ClassGlobalVar public static global_var; 在类 GlobalVar 中定义变量 global_var 为 public static,使得其它类 可以访问和修改该变量。 Java 对全局变量进行了更好的封装。而在 C 和 C+中,依赖于不加封装 的全局变量常常造成系 统的崩溃。 2.Goto Java 不支持 C、C+中的 goto 语句,而是通过例外处理语句 try,Catch, final 等来代替 C、C+ 中用 goto 来处理遇到错误时跳转的情况,使程序更可读 且更结构化。 3.指针 指针是 C、C+中最灵活,也是最容易产生错误的数据类型。由指针所进行 的内存地址操作常 会造成不可预知的错误,同时通过指针对某个内存地址进行显 式类型转换后, 可以访问一个 C+ 中的私有成员,从而破坏安全性,造成系统的 崩溃。而 Java 对指针进行完全的控制, 程序员不能 直接进行任何指针操作,例如 把整数转化为指针,或者通过指针释放某一内存地址等。同时, 数组 作为类在 Java 中实现,良好地解决了数组访问越界这一 C、C+中不作检查的错误。 4.内存管理 在 C 中,程序员通过库函数 malloc()和 free()来分配和释放内存,C+ 中则通过运算符 new 和 delete 来分配和释放内存。再次释放已释放的内存块或 未被分配的内存块 ,会造成系统的崩溃; 同样,忘记释放不再使用的内存块也 会逐渐耗尽系统资源。而在 Java 中, 所有的数据结构都是 对象,通过运算符 new 为它们分配内存堆。通过 new 得到对象的处理权, 而实际分配给对象的内 存可能 随程序运行而改变,Java 对此自动地进行管理并且进行垃圾收集,有效防止了由 于程序 员的误操作而导致的错误,并且更好地利用了系统资源。 5.数据类型的支持 在 C、C+中,对于不同的平台,编译器对于简单数据类型如 int,float 等分别分配不同长度的字节 数,例如:int 在 IBMPC 中为 16 位,在 VAX-11 中为 32 位,这导致了代码的不可移植性,但在 Java 中,对于这些数据类型总是分 配固定长度的位数,如对 int 型,它总占 32 位,这就保证了 Java 的平 台无关性。 6.类型转换 在 C、C+中,可以通过指针进行任意的类型转换,常常带来不安全性 , 而 Java 中, 运行时系统对 对象的处理要进行类型相容性检查,以防止不安全的 转换。 7.头文件 C、C+中用头文件来声明类的原型以及全局变量、库函数等,在大的系 统中, 维护这些头文件 是很困难的。而 Java 不支持头文件,类成员的类型和访 问权限都封装在一个类中, 运行时系统 对访问进行控制,防止对私有成员的操 作。同时,Java 中用 import 语句来与其它类进行通讯, 以 便使用它们的方法。 8.结构和联合 C、C+中的结构和联合中所有成员均为公有,这就带来了安全性问题。 Java 中不包含结构和 联合,所有的内容都封装在类中。 9.预处理 C、C+中用宏定义来实现的代码给程序的可读性带来了困难。在 Java 中,不支持宏, 它通过关 键字 final 来声明一个常量,以实现宏定义中广泛使 用的常量定义。 目录 Java 入门(一) Java 入门(二) Java 入门(三) Java 入门(四) Java 入门(五) Java 入门(六) Java 入门(七) Java 入门(八) Java 入门(九) 第一章 Java 概述(续) 1.3.简单的 Java 程序 下面我们先介绍两个简单的 Java 程序,并对其进行分析。 例 1.1. public class HelloWorldApp/an application public static void main(Stringargs ) System.out.println(“HelloWorld!“); 本程序的作用是输出下面一行信息: HelloWorld! 程序中,首先用保留字 class 来声明一个新的类,其类名为 HelloWorldApp,它是一个公共类(public)。整个类 定义由大括号 括起来。在该类中定义了一个 main()方法,其中 public 表示访问 权限,指明所有的类都可 以使用这一方法;static 指明该方法是 一个类方法,它可以通过类名直接调用;void 则指明 main()方法不 返 回任何值。对于一个应用程序来说,main()方法是必需的,而 且必须按照如上的格式来定义。Jave 解释器 在没有生成任何 实例的情况下,以 main()作为入口来执行程序。Jave 程序中可以 定义多个类,每个类中可 以定义多个方法,但是最多只能有一 个公共类,main()方法也只能有一个,作为程序的入口。main()方 法定 义中,括号()中的 Stringargs是传递给 main()方法的参数,参 数名为 args,它是类 String 的一个实例,参数可 以为 0 个或多个 ,每 个参数用“类名参数名“来指定,多个参数间用逗号分隔。在 main()方法的实现(大括号 中),只有一条语句: System.out.println(“HelloWorld!“); 它用来实现字符串的输出,这条语句实现与 C 语言中的 printf 语句和 C+中 cout语句相同的功能。另 外,/后的内容为 注释。 现在我们可以运行该程序。首先把它放到一个名为 HelloWorldApp.java 的文件中,这里,文件名应和类名相 同,因为 Java 解释器要求公共类必须放在与其同名的文件中。然后对 它进行编译: C:javac HelloWorldApp.java 编译的结果是生成字节码文件 HelloWorldApp.class。最后用 java 解释器来运行该字节码文件: C:java HelloWorldApp 结果在屏幕上显示 HelloWorld! 我们再来看下面的一个例子: 例 1.2 import java.awr.*; import java.applet.*; public class HelloWorldApplet extends Applet/an applet public void paint(Graphicsg) g.drawString(“HelloWorld!“,20,20); 这是一个简单的 Applet(小应用程序 )。程序中,首先用 import 语句输入 java.awr 和 java.applet 下所有的包,使 得该程序可能 使用这些包中所定义的类,它类似于 C 中的#include 语句。然后 声明一个公共类 HelloWorldApplet,用 extends 指明它是 Applet 的子类。 在类中,我们重写父类 Ap-plet 的 paint()方法,其 中参数 g 为 Graphics 类,它表明当前作画的上下文。在 paint()方法中,调用 g 的方法 drawString(),在坐标 (20,20)处输出字符串“HelloWorld!“,其中坐标 是用象素点来表示的。 这个程序中没有实现 main()方法,这是 Applet 与应用程序 Application(如例 1)的区别之一。为了运行该程 序,首先我们也 要把它放在文件 HelloWorldApplet.java 中 ,然后对它进行编译: C:javac HelloWorldApplet.java 得到字节码文件 HelloWorldApplet.class。由于 Applet 中没有 main()方法作为 Java 解释器的入口,我们必 须编写 HTML 文件,把该 Applet 嵌入其中,然后用 appletviewer 来运行,或在支持 Java 的浏览器 上运行。 它的HTML文件如下: HTML HEAD TITLE AnApplet /TITLE /HEAD BODY appletcode=“HelloWorldApplet.class“width=200height=40 /applet /BODY /HTML 其中用applet标记来启动 HelloWorldApplet,code 指明字节码 所在的文件,width 和 height 指明 applet 所占的大小,我们把这个 HTML 文件存入 Example.html,然后运行: C:appleviewer Example.html 这时屏幕上弹出一个窗口,其中显示 HelloWorld!,显示结果 如图: 从上述例子中可以看出,Java 程序是由类构成的,对于一个 应用程序来说,必须有一个类中定义 main()方法, 而对 applet 来说 , 它必须作为 Applet 的一个子类。在类的定义中, 应包含类变量的 声明和类中方法的实现。 Java 在基本数据类型、运算符、表 达式、控制语句等方面与 C、C+ 基本上是相同的,但它同时也 增加 了一些新的内容,在以后的各章中,我们会详细介绍。本 节中,只是使大家对 Java 程序有一个初步的了解。 第二章 数据类型 2.1 数据类型 数据类型指明了变量或表达式的状态和行为。Java 的数 据类型如下所示: Java 不支持 C、C+中的指针类型、结构体类型和共用体类型。 本章我们主要介绍简单类型。 2.2 常量与变量 一、常量 Java 中的常量值是用文字串表示的,它区分为不同的类型 ,如整型常量 123,实型常量 1.23,字符常量a, 布 尔常量 true、 false 以及字符串常量“This is a constant string.“。 与 C、C+不同,Java 中不能通过 #define 命令把一个标识符定 义为常量,而是用关键字 final 来实现 ,如 final doublePI=3.14159(有 关 final 的用法见6.2.3)。 二、变量 变量是 Java 程序中的基本存储单元,它的定义包括变量名 、变量类型和作用域几个部分。 变量名是一个合法的标识符,它是字母、数字、下划 线或美元符“的序列,Java 对变量名区分大小写, 变量名不能 以数字开头,而且不能为保留字。合法的变量名如:myName、 value-1、dollar 等。非法的 变量名如:2mail、room# 、class(保留 字) 等,变量名应具有一定的含义,以增加程序的可读性。 变量类型可以为上面所说的任意一种数据类型。 变量的作用域指明可访问该变量的一段代码。声明一 个变量的同时也就指明了变量的作用域。按作用 域来分,变量 可以有下面几种:局部变量、类变量、方法参数、例外处理参 数。局部变量在方法或方法的 一块代码中声明,它的作用域 为它所在的代码块(整个方法或方法中的某块代码) 。 类变量在类中声明,而不是在类的某个方法中声明,它的 作用域是整个类。 方法参数传递给方法,它的作用域就是这个方法。 例外处理参数传递给例外处理代码,它的作用域就是例 外处理部分。 在一个确定的域中,变量名应该是唯一的。通常,一个域 用大括号来划定。 有关类变量、参数传递以及例外处理将分别在6.7.1、 6.2.4和第八章中讲述。 变量的声明格式为: type identifier=value,identifier=value; 例如:inta,b,c; double d1,d2=0.0; 其中,多个变量间用逗号隔开,d2=0.0 对实型变量 d2 赋初值 0.0,只有局部变量和类变量是可以这样赋初值 的,而方法参数 和例外处理参数的变量值是由调用者给出的。 2.3 整型数据 一、整型常量: 与 C,C+相同,Java 的整常数有三种形式: 十进制整数,如 123,-456,0 八进制整数,以 0 开头,如 0123 表示十进制数 83,-011 表示十 进制数-9。 十六进制整数,以 0x 或 0X 开头,如 0x123 表示十进制数 291,-0X12 表示十进制数-18 。 整型常量在机器中占 32 位,具有 int 型的值,对于 long 型值,则 要在数字后加 L 或 l,如 123L 表示一个长整 数,它在机器中占 64 位。 二、整型变量: 整型变量的类型有 byte、short、int、long 四种。下表列出 各类型所在内存的位数和其表示范围。 目录 Java 入门(一) Java 入门(二) Java 入门(三) Java 入门(四) Java 入门(五) Java 入门(六) Java 入门(七) Java 入门(八) Java 入门(九) 第二章 数据类型(续) int 类型是最常使用的一种整数类型。它所表示的数据范围 64 位处理器。但对于大型计算,常会遇到很大 的整数,超出 int 类 所表示的范围,这时要使用 long 类型。 由于不同的机器对于多字节数据的存储方式不同,可能是 低字节向高字节存储,也可能是从高字节向低字节 存储,这样,在 分析网络协议或文件格时,为了解决不同机器上 的字节存储顺序问题,用 byte 类型来表示数 据是合适的。而通常 情况下,由于其表示的数据 范围很小,容易造成溢出,应避免使用。 short 类型则很少使用 ,它限制数据的存储为先高字节,后低字 节,这样在某些机器中会出 错。 三、整型变量的定义,如: byte b;/指定变量 b 为 byte 型 short s;/指定变量 s 为 short 型 int i;/指定变量 i 为 int 型 long l;/指定变量 l 为 long 型 2.4 浮点型(实型)数据 一、实型常量 与 C,C+相同,Java 的实常数有两种表示形式: 十进制数形式,由数字和小数点组成,且必须有小数点,如 0 .123,.123,123.,123.0 科学计数法形式。如:123e3 或 123E3,其中 e 或 E 之前必须有数 ,且 e 或 E 后面的指数必须为整数。实 常数在机器中占 64 位,具有 double 型的值。对于 float 型的值, 要在数字后加 f 或 F,如 12.3F,它在机器中 占 32 位,且表示精度较低。 二、实型变量 实型变量的类型有 float 和 double 两种,下表列出这两种类型所 占内存的位数和其表示范 围。 数据类型所占位数数的范围 float 323.4e-0383.4e+038 double 641.7e-3081.7e+308 双精度类型 double 比单精度类型 float 具有更高的精度和更大 表示范围,常常使用。 三、实型变量定义,如 float f;/指定变量 f 为 float 型 double d;/指定变量 d 为 double 型 注与 C、C+不同,Java 中没有无符号型整数,而且明确规定了 整型和浮点型数据所占的 内存字节数,这 样就保证了安全性、鲁棒性和平台无关性。 2.5 字符型数据 一、字符常量 字符常量是用单引号括起来的一个字符,如a,A。? 外,与 C、C+ 相同,Java 也提供转 义字符,以反斜杠()开 头,将其后的字符转变为另外的含义,下? 列出了 Java 中的转义字符。 与 C、C+不同,Java 中的字符型数据是 16 位无符号型数据,它表 示 Unicode 集,而不仅仅是 ASCII 集,例 如u0061 表示 ISO 拉丁码的a 。 转义字符描述 ddd1 到 3 位 8 进制数据所表示的字符(ddd) uxxxx1 到 4 位 16 进制数所表示的字符 (xxxx) 单引号字符 反斜杠字符 r 回车 n 换行 f 走纸换页 t 横向跳格 b 退格 二、字符型变量 字符型变量的类型为 char,它在机器中占 16 位,其范围为 0655 35。字符型变量的定义如 charc=a;/指定变量 c 为 char 型,且赋初值为a 与 C、C+不同,Java 中的字符型数据不能用作整数,因为 Java 不 供无符号整数类型。但 是同样可以把 它当作整数数据来操作。 例如: intthree=3; charone=1; charfour=(char)(three+one);/four=4 上例中,在计算加法时,字符型变量 one 被转化为整数,进行相加,最后把结果又转化为字 符型。 三、字符串常量 与 C、C+相同,Java 的字符串常量是用双引号(“)括起来的一串 字符,如“Thisisastring.n“。但 不同的是, Java 中的字符串常量是作为 String 类的一个对象来处理, 而不是一个数据。有关 类 String,我们将在第七 章讲述。 2.6 布尔型数据 布尔型数据只有两个值,true 和 false,且它们不对应于任何整 值。在流控制中常用到它 。 布尔型变量的定义如: boolean b=true;/定义 b 为布尔型变量,且初值为 true 2.7 举例 例 2.1.下例中用到了前面提到的数据类型,并通过屏幕显示 们的值。 public class SimpleTypes public static void main(Stringargs) byte b=0x55; short s=0x55ff; int i=1000000; long l=0xfffL; char c=c; float f=0.23F; double d=0.7E-3; boolean bool=true; System.out.println(“b=“+b); System.out.println(“s=“+s); System.out.println(“i=“+i); System.out.println(“l=“+l); System.out.println(“c=“+c); System.out.println(“f=“+f); System.out.println(“d=“+d); System.out.println(“bool=“+bool); 编译并运行该程序,输出结果为: C:java SimpleTypes b=85 s=22015 i=1000000 l=4095 c=c f=0.23 d=0.0007 bool=true 2.8 各类数值型数据间的混合运算 一、自动类型转换 整型、实型、字符型数据可以混合运算。运算中,不同类? 的数据先转化为同一类型 ,然后进行运算。转换从低级到高级,如下图: 转换规则为: (byte 或 short)opintint (byte 或 short 或 int)oplonglong (byte 或 short 或 int 或 long)opfloatfloat (byte 或 short 或 int 或 long 或 float)opdoubledouble charopintint 其中,箭头左边表示参与运算的数据类型,op 为运算符(如加 减、乘、除等), 右边表示 转换成的进行运算的 数据类型。 例 2.2 public class Promotion public static void main(Stringargs) byte b=10; char c=a; int i=90; long l=555L; float f=3.5f; double d=1.234; float f1=f*b;/float*byte-float int i1=c+i;/char+int-int long l1=l+i1;/long+int-ling double d1=f1/i1-d;/float/int-float,float-double- double 二、强制类型转换 高级数据要转换成低级数据,需用到强制类型转换,如: int i; byte b=(byte)i;/把 int 型变量 i 强制转换为 byte 型 这种使用可能会导致溢出或精度的下降,最好不要使用。 目录 Java 入门(一) Java 入门(二) Java 入门(三) Java 入门(四) Java 入门(五) Java 入门(六) Java 入门(七) Java 入门(八) Java 入门(九) 第三章 运算符和表达式 运算符指明对操作数所进行的运算。按操作数的数目来分+ -),二元运算符(如+、) 和三元运算符(如?:),它 们分别对应于一 于一元运算符来说,可以有前缀表达式(如+i) 和后缀表达式(如 采用中缀表达式( 如 a+b)。 按照运算符功能来分,基本的运算符? 下面几类: 算术运算符(+,-,*,/,%,+,-) 关系运算符(,=,=,=,!=) 布尔逻辑运算符(!,/a=9 int b=a*2;/b=18 int c=b/4;/c=4 int d=b-c;/d=14 int e=-d;/e=-14 int f=e%4;/f=-2 double g=18.4; double h=g%4;/h=2.4 int i=3; int j=i+;/i=4,j=3 int k=+i;/i=5,k=5 System.out.println(“a=“+a); System.out.println(“b=“+b); System.out.println(“c=“+c); System.out.println(“d=“+d); System.out.println(“e=“+e); System.out.println(“f=“+f); System.out.println(“g=“+g); System.out.println(“h=“+h); System.out.println(“i=“+i); System.out.println(“j=“+j); System.out.println(“k=“+k); 其结果为: C:java ArithmaticOp a=9 b=18 c=4 d=14 e=-14 f=-2 g=18.4 h=2.4 i=5 j=3 k=5 3.2 关系运算符 关系运算符用来比较两个值,返回布尔类型的值 true 或 false? 关系运算符都是二元运算 符,如下表所示: 运算符 用法 返回 true 的情况 op1op2 op1 大于 op2 + op1=op2 op1 大于或等于 op2 op1op2 op1 小于 op2 = op1=op2 op1 小于或等于 op2 = op1=op2 op1 与 op2 相等 != op1!=op2 op1 与 op2 不等 Java 中,任何数据类型的数据(包括基本类型和组合类型) 都可 以通过 =或!= 来比较是否 相等( 这与 C、C+不同) 。 关系运算的结果返回 true 或 false,而不是 C、C+中的 1 或 0。 关系运算符常与布尔逻辑运算符一起使用,作为流控制语? 的判断条件。如 if(a b同样,对与运算,如果左边表达式 的值为 false,则不必对右边的表达式 求值,整个表达式的结果为 false。 下面的例子说明了关系运算符和布尔逻辑运算符的使用。 public class RelationAndConditionOp public static void main(Stringargs) int a=25,b=3; boolean d=ab;/d=false System.out.println(“ab=“+d); int e=3; if(e!=0 int f=0; if(f!=0 else System.out.println(“f=“+f); 其运行结果为: C:java RelationAndConditionOp ab=false a/e=8 f=0 注意:上例中,第二个 if 语句在运行时不会发生除 0 溢出的错 ,因为 e!=0 为 false,所以就不需 要对 a/e 进行 运算。 3.4 位运算符 位运算符用来对二进制位进行操作,Java 中提供了如下表所 的位运算符: 位运算符中,除 以外,其余 均为二元运算符。 操作数只能为整型和字符型数据。 3.4.1 补码 Java 使用补码来表示二进制数,在补码表示中,最高位为符号 ?,正数的符号位为 0,负数 为 1。补码的规定 如下: 对正数来说,最高位为 0,其余各位代表数值本身( 以二进制? 示),如+42 的补码为 00101010。 对负数而言,把该数绝对值的补码按位取反,然后对整个数 1,即得该数的补码。如 -42 的补码为 11010110(00101010 按位取反 11010101+111010110) 用补码来表示数,0 的补码是唯一的,都为 00000000。( 而在原码, 反码表示中 ,+0 和-0 的表示 是不唯一的, 可参见相应的书籍)。而且可以用 111111 表示-1 的补 (这也是补码与原码和反 码的区别) 。 3.4.2 按位取反运算符 是一元运算法,对数据的每个二进制位取反,即把 1 变为 0 ,把 0 变为 1。 例如: 0010101 1101010 注意,运算符与-运算符不同,21-21。 3.4.3 按位与运算符),也可以 复合语句。 下面我们分别来介绍 Java 中的流控制语句,包括 1.分支语句:if-else,break,switch,return. 2.循环语句:while,do-while,for,continue. 3.例外处理语句:try-catch-finally,throw 最后我们简单介绍一下注释语句。 4.1 分支语句 分支语句提供了一种控制机制,使得程序的执行可以跳过? 些语句不执行,而转去执 行特定的语句。 4.1.1 条件语句 if-else. if-else 语句根据判定条件的真假来执行两种操作中的一种, ?的格式为: if(boolean-expression) statement1; else statement2; 1.布尔表达式 boolean-expression 是任意一个返回布尔型数据的 达式( 这比 C、C+ 的限制 要严格) 。 2.每个单一的语句后都必须有分号。 3.语句 statement1,statement2 可以为复合语句,这时要用大括号 ?起。建议对单一的语句 也用大括号括 起,这样程序的可读性强,而且有利于程序的扩充( 可以在其中填加新的语句 )。 外面不加分号。 4.else 子句是任选的。 5.若布尔表达式的值为 true,则程序执行 statement1,否则执行 sta tement2。 6.if-else 语句的一种特殊形式为: if(expression1) statement1 else if(expression2) statement2 else if(expressionM) statementM else statementN else 子句不能单独作为语句使用, 它必须和 if 配对使用。else 总是与离它最近的 if 配对 。可以通过使用大 括号 来改变配对关系。 7.举例: 例 4.1 比较两个数的大小,并按从小到大的次序输出。 public class CompareTwo public static void main(Stringargs) doubl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论