当前位置:文档之家› java基础教程

java基础教程

java基础教程
java基础教程

第一章Java语言的产生及其特点

1.1Java产生的历史与现状

1.1.1Java产生的历史

Java来自于Sun公司的一个叫Green的项目,其原先的目的是为家用消费电子产品开发一个分布式代码系统,这样我们可以把E-mail发给电冰箱、电视机等家用电器,对它们进行控制,和它们进行信息交流。开始,准备采用C++,但C++太复杂,安全性差,最后基于C++开发一种新的语言Oak(Java的前身),Oak是一种用于网络的精巧而安全的语言,Sun公司曾依此投标一个交互式电视项目,但结果是被SGI打败。可怜的Oak几乎无家可归,恰巧这时MarkArdreesen开发的Mosaic和Netscape启发了Oak项目组成员,他们用Java编制了HotJava浏览器,得到了Sun公司首席执行官ScottMcNealy的支持,触发了Java进军Internet。Java的取名也有一个趣闻,有一天,几位Java成员组的会员正在讨论给这个新的语言取什么名字,当时他们正在咖啡馆喝着Java(爪哇)咖啡,有一个人灵机一动说就叫Java怎样,得到了其他人的赞赏,于是,Java这个名字就这样传开了。

1.1.2Java的现状

Java是Sun公司推出的新的一代面向对象程序设计语言,特别适合于Internet 应用程序开发,它的平台无关性直接威胁到Wintel的垄断地位。一时间,“连Internet,用Java编程”,成为技术人员的一种时尚。虽然新闻界的报导有些言过其实,但Java作为软件开发的一种革命性的技术,其地位已被确立,这表现在以下几个方面:

1.计算机产业的许多大公司购买了Java的许可证,包括

IBM,Apple,DEC,Adobe,SiliconGraphics,HP,Oracel,Toshiba,以及最不情愿的Microsoft。这一点说明,Java已得到了工业界的认可。

2.众多的软件开发商开始支持Java的软件产品。例如:Borland公司正在开发的基于Java的快速应用程序开发环境Latte,预计产品会在1996年中期发布。Borland公司的这一举措,推动了Java进入PC机软件市场。Sun公司自己的Java 开发环境JavaWorkshop已经发布。数据库厂商如:

Illustra,Sysbase,Versant,Oracle都在开发CGI接口,支持HTML和Java。今天是以网络为中心的计算时代,不支持HTML和Java,应用程序的应用范围只能限于同质的环境(相同的硬件平台)。

3.Intranet正在成为企业信息系统最佳的解决方案,而其中Java将发挥不可替代的作用。Intranet的目的是把Internet用于企业内部的信息系统,它的优点

表现在:便宜,易于使用和管理。用户不管使用何种类型的机器和操作系统,界面是统一的Intrnet浏览器,而数据库、Web页面、应用程序(用Java编的Applet)则存在WWW服务器上,无论是开发人员,还是管理人员,抑或是用户都可以受益于该解决方案。Java语言正在不断发展和完善,Sun公司是主要的发展推动者,较通用的编译环境有JDK(JavaDevelopKit)与JWS(JavaWorkshop)。还有很多其他公司正在开发Java语言的编译器与集成环境,预计不久Java语言的正确性与效率都将会提高,用户用Java编程和现在用C++编程一样方便。

1.2Java语言的特点

Java到底是一种什么样的语言呢?Java是一种简单的面象对象的分布式的解释的健壮的安全的结构中立的可移植的性能很优异的多线程的动态的语言。

1.2.1简单

Java最初是为对家用电器进行集成控制而设计的一种语言,因此它必须简单明了。Java语言的简单性主要体现在以下三个方面:

1.Java的风格类似于C++,因而C++程序员是非常熟悉的。从某种意义上讲,Java 语言是C及C++语言的一个变种,因此,C++程序员可以很快就掌握Java编程技术。

2.Java摒弃了C++中容易引发程序错误的地方,如指针和内存管理。

3.Java提供了丰富的类库。

1.2.2面向对象

面向对象可以说是Java最重要的特性。Java语言的设计完全是面向对象的,它不支持类似C语言那样的面向过程的程序设计技术。Java支持静态和动态风格的代码继承及重用。单从面向对象的特性来看,Java类似于SmallTalk,但其它特性、尤其是适用于分布式计算环境的特性远远超越了SmallTalk。

1.2.3分布式

Java包括一个支持HTTP和FTP等基于TCP/IP协议的子库。因此,Java应用程序可凭借URL打开并访问网络上的对象,其访问方式与访问本地文件系统几乎完全相同。为分布环境尤其是Internet提供动态内容无疑是一项非常宏伟的任务,但Java的语法特性却使我们很容易地实现这项目标。

1.2.4健壮

Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自已操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能。这种功能特征大大缩短了开发Java应用程序的周期。Java提供:Null指针检测数组边界检测异常出口字节代码校验

1.2.5结构中立

另外,为了建立Java作为网络的一个整体,Java将它的程序编译成一种结构中立的中间文件格式。只要有Java运行系统的机器都能执行这种中间代码。现在,Java运行系统有Solaris2.4(SPARC),Win32系统(Windows95和WindowsNT)

等.Java源程序被编译成一种高层次的与机器无关的byte-code格式语言,这种语言被设计在虚拟机上运行,由机器相关的运行调试器实现执行。

1.2.6安全

Java的安全性可从两个方面得到保证。一方面,在Java语言里,象指针和释放内存等C++功能被删除,避免了非法内存操作。另一方面,当Java用来创建浏览器时,语言功能和一?copy;浏览器本身提?copy;的功能结合起来,使它更安全。Java语言在你的机器上执行前,要经过很多次的测试。它经过代码校验,检查代码段的格式,检测指针操作,对象操作是否过分以及试图改变一个对象的类型。

1.2.6.1Byte-code校验

如果byte-code通过代码校验,没有返回错误,我们可知道:代码没有堆栈上溢出和下溢出所有操作代码参数类型都是正确的没有发生非法数据转换,如将整数转换成指针。访问对象操作是合法的

1.2.6.2类装载

ClassLoader通过将本机类与网络资源类的名称分开,来保持安全性。因为调入类时总要经过检查,这样避免了特洛伊木马现象的出现。从网络上下载的类被调进一个与源相关的私有的名字域。当一个私有类访问另一个类时,build-in(本机类)首先被检查,然后检查相关的类。这样就避免了破坏本机类情况的出现。

1.2.7可移植的

同体系结构无关的特性使得Java应用程序可以在配备了Java解释器和运行环境的任何计算机系统上运行,这成为Java应用软件便于移植的良好基础。但仅仅如此还不够。如果基本数据类型设计依赖于具体实现,也将为程序的移植带来很大不便。例如在Windows3.1中整数(Integer)为16bits,在Windows95中整数为32bits,在DECAlpha中整数为64bits,在Intel486中为32bits。通过定义独立于平台的基本数据类型及其运算,Java数据得以在任何硬件平台上保持一

致。Java语言的基本数据类型及其表示方式如下:byte8-bit二进制补码

short16-bit二进制补码int32-bit二进制补码long64-bit二进制补码

float32-bitIEEE754浮点数double32-bitIEEE754浮点数char16-bitUnicode 字符

在任何Java解释器中,数据类型都是依据以上标准具体实现的。因为几乎目前使用的所有CPU都能支持以上数据类型、8~64位整数格式的补码运算和单/双精度浮点运算。Java编译器本身就是用Java语言编写的。Java运算系统的编制依据POSIX方便移植的限制,用ANSIC语言写成。Java语言规范中也没有任何"同具体实现相关"的内容。

1.2.8解释的

Java解释器(运行系统)能直接运行目标代码指令。链接程序通常比编译程序所需资源少,所以程序员可以在创建源程序上花上更多的时间。

1.2.9高性能

如果解释器速度不慢,Java可以在运行时直接将目标代码翻译成机器指令。Sun 用直接解释器一秒钟内可调用300,000个过程。翻译目标代码的速度与C/C++的性能没什么区别。

1.2.10多线程

Java提?copy;的多线程功能使得在一个程序里可同时执行多个小任务。线程--有时也称小进程--是一个大进程里分出来的小的独立的进程。因为Java实现的多线程技术,所以比C和C++更键壮。多线程带来的更大的好处是更好的交互性能和实时控制性能。当然实时控制性能还取决于系统本身

(UNIX,Windows,Macintosh等),在开发难易程度和性能上都比单线程要好。任何用过当前浏览器的人,都感觉为调一副图片而等待是一件很烦恼的事情。在Java里,你可用一个单线程来调一副图片,而你可以访问HTML里的其它信息而不必等它。

1.2.11动态

Java的动态特性是其面向对象设计方法的扩展。它允许程序动态地装入运行过程中所需要的类,这是C++语言进行面向对象程序设计所无法实现的。在C++程序设计过程中,每当在类中增加一个实例变量或一种成员函数后,引用该类的所有子类都必须重新编译,否则将导致程序崩溃。Java从如下几方面采取措施来解决这个问题。Java编译器不是将对实例变量和成员函数的引用编译为数值引用,而是将符号引用信息在字节码中保存下传递给解释器,再由解释器在完成动

态连接类后,将符号引用信息转换为数值偏移量。这样,一个在存储器生成的对象不在编译过程中决定,而是延迟到运行时由解释器确定的。这样,对类中的变量和方法进行更新时就不至于影响现存的代码。解释执行字节码时,这种符号信息的查找和转换过程仅在一个新的名字出现时才进行一次,随后代码便可以全速执行。在运行时确定引用的好处是可以使用已被更新的类,而不必担心会影响原有的代码。如果程序连接了网络中另一系统中的某一类,该类的所有者也可以自由地对该类进行更新,而不会使任何引用该类的程序崩溃。Java还简化了使用一个升级的或全新的协议的方法。如果你的系统运行Java程序时遇到了不知怎样处理的程序,没关系,Java能自动下载你所需要的功能程序。

1.3与C和C++语言的异同

Java提供了一个功能强大语言的所有功能,但几乎没有一点含混特征。C++安全性不好,但C和C++还是被大家所接受,所以Java设计成C++形式,让大家很容易学习。Java去掉了C++语言的许多功能,让Java的语言功能很精炼,并增加了一些很有用的功能,Java去掉了以下几个C和C++功能和特征:指针运算结构typedefs#define需要释放内存全局变量的定义这种功能都是很容易引起错误的地方。

1.4Java的应用简介

1.4.1Web浏览

Web浏览是现在国际网甚至局域网的主要使用方式。文档能很容易地显示文本和各种图片,他还能提供超文本链接。这些浏览器调用HTML语言写的文档,HTML/WWW浏览器技术只限于文本和图象。如果你想播放一种声音或运行一个演示程序,你不得不下载那个文件并用你本机上的能理解和运行那个文件格式的程序来播放它。Java程序和它的浏览器HotJava,提供了可让你的浏览器运行程序的方法。你能从你的浏览器里直接播放声音。你还能播放页面里的动画。Java 还能告诉你的浏览器怎样处理新的类型文件。当我们能在2400baud线上传输视频图象时,HotJava将能显示这些视频。

1.4.2网络应用系统

Java是一种与平台无关的语言,因此用Java开发的网络应用系统可以在各种平台上运行,大大增加了开发效率,减少重复劳动。而且,Java集成的网络功能充分有利于开发网络应用系统。

本章小结:

1.Java的产生与流行是当今internet发展的客观要求

2.java是一门各方面性能都很好的编程语言,它的基本特点是简单、面象对象、分布式、解释的、健壮的、安全的、结构中立的、可移植的、性能很优异的、多线程的、动态的。?reg;分适合在internet环境上开发应用系统。

3.java可以制作大部分网络应用程序系统,而且与当今流行的WWW浏览器结合得很好。

第二章Java程序开发与运行环境

2.1JDK环境

Java不仅提供了一个丰富的语言和运行环境,而且还提供了一个免费的Java开发工具集(JavaDevelopersKits,简称JDK)。编程人员和最终用户可以利用这个工具来开发java程序或调用Java内容。JDK包括以下工具:javacJava语言编译器,输出结果为Java字节码java,Java字节码解释器javapDisassembeler:Java字节码分解程序,本程序返回Java程序的成员变量及方法等信息。javaprof资源分析工具,用于分析Java程序在运行过程中调用了哪些资源,包括类和方法的调用次数和时间,以及各数据类型的内存使用情况等。javahC代码处理工具,用于从Java类调用C++代码javaAppletViewer小应用程序浏览工具,用于测试并运行Java小应用程序javaDebuggerAPIJava调试工具APIPrototypeDebuggerJava调试工具原型

Java开发环境还包括Java类库(包括I/O类库、用户界面类库、网络类库等)和HotJavaWWW浏览器。其中,HotJava浏览器提供了在WWW环境下运行Java代码的一个运行系统,而且还为WWW开发人员提供了一个Java开发框架。Java解释器是面向Java程序的一个独立运行系统,它可以一种稳定、高性能方式运行那些独立于平台的Java字节码,Java编译器则用于生成这种字节码。

2.1.1Java程序的编译

Java程序的编译程序是javac.exe。javac命令将Java程序编译成字节码,然后你可用java解释器java命令来解释执行这种Java字节码。Java程序源码必须存放在后缀为.java的文件里。Java程序里的每一个类,javac都将生成与类相同名称但后缀为.class文件。编译器把.class文件放在.java文件的同一个目录里,除非你用了-d选项。当你引用到某些自己定义的类时,必须指明它们的存放目录,这就需要利用环境变量参数CLASSPATH。环境变量CLASSPATH是由一些被分号隔开的路径名组成。如果传递给javac编译器的源文件里引用到的类定义在本文件和传递的其它文件中找不到,则编译器会按CLASSPATH定义的路径来搜索。例如:

CLASSPATH=.;C:\java\classes则编译器先搜索当前目录,如果没搜索到,则继续搜索C:\java\classes目录。注意,系统总是将系统类的目录缺省地加在

CLASSPATH后面,除非你用-classpath选项来编译。javac_g是一个用于调试的未优化的编译器,功能与用法和javac一样。javac的用法如下:

javac[-g][-O][-debug][-depend][-nowarn][-verbose][-classpathpath][-no write][-ddir]file.java...

以下是每个选项的解释。

选项解释:

-classpathpath定义javac搜索类的路径。它将覆盖缺省的CLASSPATH环境变量的设置。路径是由一?copy;由逗号隔开的路径名组成,一般格式如

下:.;例如:.;C:\java\doc\classes;C:\tools\java\classes表示编译器遇到一个新类,它先在本文件中查找它的定义,如果没有,则在本文件所处目录下其它文件中查找它的定义,如果还没有,则继续搜索

C:\java\doc\classes目录中的所有文件,以此类推。

-ddirectory指明类层次的根目录,格式如下:

javac-dMyProgram.java

这样将MyProgram.java程序里的生产的.class文件存放在my_dir目录里.

-g带调试信息编译,调试信息包括行号与使用java调试工具时用到的局部变量信息。如果编译没有加上-O优化选项,只包含行号信息。

-nowarn关闭警告信息,编译器将不显示任何警告信息。

-O优化编译static,final,private函数,注意你的类文件可能更大。

-verbose

让编译器与解释器显示被编译的源文件名和被加载的类名。

环境变量

CLASSPATH用来提?copy;给系统搜索用户定义的类的缺省路径。各路径由分号隔开,例如:

.;C:\java\doc\classes;C:\tools\java\classes表示编译器遇到一个新类,它先在本文件中查找它的定义,如果没有,则在本文件所处目录下其它文件中查找它的定义,如果还没有,则继续搜索C:\java\doc\classes目录中的所有文件,以此类推。

2.1.2Java程序的调试使用java调试器

jdb导游

在早期前Betal版的Java调试器jdb是命令行形式的,如用Sun公司的dbx调试器。用jdb来调试Java应用程序,在调试?reg;前,要确证你的应用程序是带标志-g编译的。例如:javac-gHelloWorld.java

help命令将显示jdb里的可用命令列表。

>help<命令列表>threads[threadgroup]--列出线程thread--设

置缺省线程Suspend[threadsid(s)]--将线程挂起resume[threadid(s)]--重新启动线程where[id]|a1|--打印线程的堆栈threadgroups--列出线程组号threadgroup--设置当前线程组print[id(s)]--打印对象或域dump[id(s)]--打印所有对象信息locals--打印当前堆栈所有局部变量classes--列出当前所知的类methods--列出一个类的成员函数stopin.--在一个成员函数里设置断点

stopat:--在一行里设置断点up[nframes]--在线程堆栈里往上移down[nframes]--在线程堆栈里往下移clear:--清除一个断点step--执行当前行cont--从断点处继续执行

catch--为指定的情况中断ignor--为指定的情况忽略list[linenumber]--打印源程序use[Sourcefilepath]--显示或改变源路径memeory--报告内存使用情况loadclassname--加载Java类以便调试run--开始执行加载的类!!--重复以上的命令help(?)--列出所有的命令exit(orquit)--离开调试器

2.1.3Java程序的执行

java-java语言解释器java命令解释java字节码

语法:java[options]classnamejava_g[options]classname

描述:java命令由java编译器javac输出的Java字节码。

classname参数是要执行的类名称。注意任意在类名称后的参数都将传递给要执行类的main函数。

java执行完main函数后推出,除非main函数创建了一个或多个线程。如果main 函数创建了其它线程,java总是等到最后一个线程推出才推出。

选项:

-cs,-checksource当一个编译过的类调入时,这个选项将比较字节码更改时间与源文件更改时间,如果源文件更改时间靠后,则重新编译此类并调入此新类。

-classpathpath定义javac搜索类的路径。它将覆盖缺省的CLASSPATH环境变量的设置。路径是由一?copy;由逗号隔开的路径名组成,一般格式如

下:.;例如:.;C:\java\doc\classes;C:\tools\java\classes表示解释器遇到一个新类,它先在本文件中查找它的定义,如果没有,则在本文件所处目录下其它文件中查找它的定义,如果还没有,则继续搜索

C:\java\doc\classes目录中的所有文件,以此类推。

-mxx设置最大内存分配池,大小为x,x必须大于1000bytes。缺省为16兆。

-msx设置垃圾回收堆的大小为x,x必须大于1000bytes。缺省为1兆。

-noasyncgc关闭异步垃圾回收功能。此选项打开后,除非显式调用或程序内存溢出,垃圾内存都不回收。本选项不打开时,垃圾回收线程与其它线程异步同时执行。

-ssx每个Java线程有两个堆栈,一个是java代码堆栈,一个是C代码堆栈。-ss选项将线程理C代码用的堆栈设置成最大为x。

-ossx每个Java线程有两个堆栈,一个是java代码堆栈,一个是C代码堆栈。-oss选项将线程理java代码用的堆栈设置成最大为x。

-v,-verbose让java解释器在每一个类被调入时,在标准输出打印相应信息。

环境变量

CLASSPATH用来提?copy;给系统搜索用户定义的类的缺省路径。各路径由分号隔开,例如:

.;C:\java\doc\classes;C:\tools\java\classes表示解释器遇到一个新类,它先在本文件中查找它的定义,如果没有,则在本文件所处目录下其它文件中查找它的定义,如果还没有,则继续搜索C:\java\doc\classes目录中的所有文件,以此类推。

2.2JWS环境

JavaWorkShop是SUN公司的一个新产品,它是一个集成的java语言开发环境,它包括以下工具:

lPortfolio和Project管理器l源文件编辑器lBuild管理工具l调试器l项目测试l?copy;展在线超文本连接到帮助文件

这?copy;工具在JavaWorkShop的第一页都有类似Web页面的超级连接,如图:

注意,JavaWorkShop采用的是当今浏览器的界面风格,你想作什么,只需找到相应的超级连接就可以了,具体编译及调试功能是用嵌如到HTML文档里的

Applet实现的,因此,对习惯于用internet浏览方式的用户来说,这种界面很容易接受。

2.2.1Portfolio和Project管理器

Protfolios是一?copy;java应用程序或Applet的集中。它让你更好的管理更多的projects。一个project是portfolio里的一个子集,它包含了以下信息:

1.怎样编译本项目

2.怎样调试和浏览本项目

3.怎样运行本项目

4.怎样发布本项目

2.2.2源文件编辑器

源文件编辑器可以从build管理器、调试器和源文件浏览器里的超级连接进入。在这个模块里,你可以输入源文件。

2.2.3Build管理工具

本模块是项目的编译器,你可以点build按钮直接进入本模块,如果某个文件出错,错误信息会提?copy;一个超级连接,直接指到出错的源文件地点。

2.2.4VisulJava(图形界面构造?copy;

顾名思义,本模块能让你可视化建造一?copy;复杂界面,如果你用过VisualBasic,你会发现它们很相似。

2.2.5调试器

调试器能让你很方便地跟踪程序的执行与发现程序的错误。

本章小结:

Java语言有两个开发环境,一个是免费的JDK,是命令行方式的。还有一个JavaWorkShop,是开发java程序的集成环境。本章简要介绍了它们的使用方法。

第三章Java程序设计基础

3.1Java编程概况

现在你可以复习一下Java语言的背景材料,它的基本结构象C/C++,但任何用面向过程语言编写过程序的人都可以了解Java语言的大部分结构.

3.1.1程序结构

Java语言的源程序代码由一个或多个编译单元(compilationunit)组成,每个编译单元只能包含下列内容(空格和注释除外):*一个程序包语句(packagestatement)*入口语句(importstatements)*类的声明(classdeclarations)*界面声明(interfacedeclarations)每个Java的编译单元可包含多个类或界面,但是每个编译单元最多只能有一个类或者界面是公共的。Java的源程序代码被编译之后,便产生了Java字节代码。Java的字节代码由一种不依赖于机器的指令组成,这种指令能被Java的运行系统(runtimesystem)有效地解释。Java的运行系统工作起来如同一台虚拟机。在当前的Java实现中,每个编译单元就是一个以.java为后缀的文件。每个编译单元有若干个类,编译后,每个类生成一个.class文件。.class文件是Java虚拟机能够识别的代码。

3.1.2注释

三种类型如下://注释一行/*一行或多行注释*//**文档注释**/

文档注释一般放在一个变量或函数定义之前,指示在任何自动生成文档系统中调入。这种注释都是声明条目的描述.。

3.1.3标识符

变量,函数,类和对象的名称都是标识符,程序员需要标识和使用的东西都需要标识符。在Java语言里,标识符以字符或_,$开头,后面可以包含数字,标识符是大小写有区别的,没有长度限制。

有效的标识符mynameict_networkHello_sys_path$bill

例子:inta_number;char_onechar;float$bill;

关键词abstractcontinuefornewswitch booleandefaultgotonullsynchronized

breakdoifpackagethis

bytedoubleimplementsprivatethreadsafe byvalueelseimportprotectedthrow

caseextendsinstanceofpublictransient

catchfalseintreturntrue

charfinalinterfaceshorttry

classfinallylongstaticvoid

constfloatnativesuperwhile

其它保留词以下单词被保留使用:castfuturegenericinner

operatorouterrestvar

3.1.4数据类型

Java使用五种基本类型:integer(整数),floating(浮点数),point(指

针),Boolean(布尔变量),CharacterorString(字符或字符?reg;)。integer整数下边给出的数据表示都是整数的例子:4,15,089,0xAD00

整数长度数据类型表示

8bitsbyte

16bitsshort

32bitsint

64bitslong

floating浮点数下边给出的数据表示都是浮点数的例子:6.37,3.7E15,3e8

浮点数长度数据类型表示

32bitsfloat

64bitsdouble

Boolean布尔变量下边是布尔变量的两种可能取值:truefalse

Character字符下边给出的都是字符的例子:a\t(tab)\u????(unicode)

String字符?reg;下边给出的都是字符?reg;的例子:"Thisisastringliteral""中国科学院计算所"

数组你可以定义任意类型的数组.chars[];这是字符型数组;int[]array;这是整型数组;你还可以定义数组的数组.intblock[][]=newint[2][3];数组边界在运行时被检测,避免堆栈溢出和内存崩溃.

在Java里,数组实际上是一个对象,数组有一个成员变量:length。你可以用这个成员函数来查看任意数组的长

度.inta[][]=newint[10][3]a.length/*10*/a[0].length/*3*/

创建数组在Java里创建数组,你可使用两种基本方法?reg;一。创建一个空数组:intlist[]=newint[50];或你可以用初始数值填充数

组.Stringnames[]={"Chenji","Yuan","Chun","Yang"};相当于下面功

能:Stringnames[];names=newString[4];names[0]=newString("Chenji");name s[1]=newString("Yuan");names[2]=newString("Chun");names[3]=newString( "Yang");

在编译时你不能象下例那样创建静态数组。intname[50];//将产生一个编译错误

你也不能用new操作去填充一个没定义大小的数组。

intname[];for(inti=0;i<9;i++){name[i]=i;}

3.1.5表达式

Java语言的表达式和C语言非常类似。

运算符运算符(operator)优先级从高到底排列如下:.[]()++--!~

instanceof*/%+-<<>>>>><><=>\==!=&^&&||?:=op=,

整数运算符在整数运算时,如果操作数是long类型,则运算结果是long类型,否则为int类型,绝不会是byte,short或char型。这样,如果变量i被声明为short或byte,i+1的结果会是int。如果结果超过该类型的取值范围,则按该类型的最大值取模。单目整数运算符是:

运算符操作-单目非~位补码++加1--减1

++运算符用于表示直接加1操作。增量操作也可以用加运算符和赋值操作间接完成。++lvalue(左值?copy;表示lvalue+=1,++lvalue也表示lvalue=lvalue+1(只要lvalue没有副作用)。--运算符用于表示减1操作。++和--运算符既可以作为前缀运算符,也可以做为后缀运算符。双目整数运算符是:

运算符操作**+加-减*乘/除%取模&位与|位或^位异或<<左移>>右移(带符号)>>>添零右移

整数除法按零舍入。除法和取模遵守以下等式:(a/b)*b+(a%b)==a整数算术运算的异常是由于除零或按零取模造成的。它将引发一个算术异常。下溢产生零,

上溢导致越界。例如:加1超过整数最大值,取模后,变成最小值。一个op=赋值运算符,和上表中的各双目整数运算符联用,构成一个表达式。整数关系运算符<,>,<=,>=,==和!=产生boolean类型的数据。

布尔运算符布尔(boolean)变量或表达式的组合运算可以产生新的boolean值。单目运算符!是布尔非。双目运算符&,|和^是逻辑AND,OR和XOR运算符,它们强制两个操作数求布尔值。为避免右侧操作数冗余求值,用户可以使用短路求值运算符&&和||。用户可以使用==和!=,赋值运算符也可以用&=、|=、^=。三元条件操作符?:和C语言中的一样。

浮点运算符浮点运算符可以使用常规运算符的组合:如单目运算符++、--,双目运算符+、-、*和/,以及赋值运算符+=,-=,*=,和/=。此外,还有取模运算:%和%=也可以作用于浮点数,例如:a%b和a-((int)(a/b)*b)的语义相同。这表示a%b的结果是除完后剩下的浮点数部分。只有单精度操作数的浮点表达式按照单精度运算求值,产生单精度结果。如果浮点表达式中含有一个或一个以上的双精度操作数,则按双精度运算,结果是双精度浮点数。

数组运算符数组运算符形式如下:[]可给出数组中某个元素的值。合法的取值范围是从0到数组的长度减1。取值范围的检查只在运行时刻实?copy;。

?reg;运算符?reg;以String对象实现。运算符"+"完成并?reg;操作,如果必要则自动把操作数转换为String型。如果操作数是一个对象,它可定义一个方法toString()返回该对象的String方式,例如

floata=1.0print(“Thevalueofais”+a+“\n”);+运算符用到?reg;上的例子Strings=“a=”+a;+=运算符也可以用于String。注意,左边(下例中的s1)仅求值一次。s1+=a;//s1=s1+a//若a非String型,自动转换为String型。

对象运算符双目运算符instanceof测试某个对象是否是指定类或其子类的实例。例如:

if(myObjectinstanceofMyClass){MyClassanothermyObject=(MyClass)myObjec t;…}是判定myObject是否是MyClass的实例或是其子类的实例。

强制和转换Java语言和解释器限制使用强制和转换,以防止出错导致系统崩溃。整数和浮点数?reg;间可以来回强制转换,但整数不能强制转换成数组或对象。对象不能被强制为基本类型。

3.1.6Java流控制

下面几个控制结构是从C语言借鉴的。

分支结构

if/else分支结构

if(Boolean){statemanets;}else{statements;}

switch分支结构

switch(expr1){caseexpr2:statements;break;caseexpr3:statements;break;d efault:statements;break;}

循环结构for循环结构

for(initexpr1;testexpr2;incrementexpr3){statements;}

While循环结构

While(Boolean){statements;}

Do循环结构

do{statements;}while(Boolean);

一般顺序控制

break[label]continue[label]reutrnexpr;label:statement;

for循环例子下面是一个程序例子,画几条线,分别用红,绿,蓝颜色,这段程序可能是Java函数的一部分:

intcount;for(count=1;count<=12;count++){switch(count%3)}case0:setColo r(Color.red);break;case1:setColor(Color.blue);break;case2:setColor(Co lor.green);break;}g.drawLine(10,count*10,80,count*10);}

3.2Java变量和函数的实例

Java的类包含变量和函数。数据变量可以是一?copy;原始的类型,如int,char 等。成员函数是一?copy;可执行的过程。例如,下面程序里:publicclassClassOne{inti;publicClassOne(){i=10;}

publicvoidAdd_i(intj){i=i+j;}}

ClassOne包含一个变量i和两个成员函数,ClassOne(intfirst)和Add_i(intj)。

成员函数成员函数是一?copy;可被其它类或自己类调用的处理子程序。一个特殊的成员函数叫构造函数,这个函数名称一般与本类名程相同。它没有返回值。

构造函数和成员函数当你在Java里定义一个类时,你可定义一个或多个可选的构造函数,当创建本类的一个对象时用某一个构造函数来初始化本对象。用前面

的程序例子来说明,当ClassOne类创建一个新实例时,所有成员函数和变量被创建(创建实例)。构造函数被调用。ClassOnemc:mc=newClassOne();

关键词new用来创建一个类的实例,一个类用new初始化?reg;前并不占用内存,它只是一个类型定义,当mc对象初始化后,mc对象里的i变量等于10。你可以通过对象名来引用变量i。(有时称?reg;为实例变量)mc.i++;//mc实例变量加1

因为mc有ClassOne类的所有变量和成员函数,我们可以使用同样的语法来调用成员函数Add_i:Add_i(10);现在mc.i变量等于21.

结束函数Java并不支持析构函数(C++里的定义),因为java本身提?copy;对象无用时自动清除的功能,同时它也提?copy;了一个自动拉圾箱的成员函数,在清除对象时被调用:Protectedvoidfinalize(){close();}

3.3对象有效范围和废物自动回收

对象有一定的生命期并在它的生命期间使用资源,当一个对象不再被使用时,它应释放内存,避免内存溢出。在Java里,收集和释放内存是一个叫自动废品回收站的线程的责任。这个线程监视对象有效范围并给一个走出有效范围的对象作上标识。

例如:Strings;//没有分配内存s=newString("oldstring");//分配内存

s="newstring";//重新分配内存(创建新对象)

我们将在以后访问String类时将更加明白它的工作过程,但它的快速工作过程是这样的:1.创建一个新的String类对象并填充以"oldstring"2.创建另一个String对象并填充以"newstring"注意我们创建了两个对象。Stirng对象"oldstring"Stirng对象"newstring"

在第三条语句里,第一个包括"oldstring"的叫做s的对象已走出了有效范围,没有任何方法可以再访问他,我们现在有一个新的对象也叫s,包含"newstring"。在下一个废品回收线程,前一个对象将被标识并清除。

3.4子类

子类是利用存在的对象创建一个新对象的机制,比如,如果你有一个Horse类,你可以创建一个Zebra子类,Zebra是Horse的一种。

classZebraextendsHorse{intnumber_OF_stripes:}

关键词extends来定义对象有的子类.Zebra是Horse的子类。Horse类里的所有特征都将拷贝到Zebra类里,而Zebra类里可以定义自己的成员函数和实例变量。Zebra称为Horse的派生类或继承。另外,你也许还想覆盖基类的成员函数。用ClassOne说明,下面是一个派生类覆盖Add_i功能的例子.

importClassOne;publicclassNewClassextendsClassOne{publicvoidAdd_i(int j){i=i+(j/2);}}

当NewClass类的实例创建时,变量i初始化值为10,但调用Add_i产生不同的结果。NewClassmnc;mnc=newNewClass();mnc.Add_i(10);

访问控制Java里当你创建一个新类时,你可以标明变量和成员函数的访问层次。

publicpublicvoidAnyOneCanAccess(){}public实例变量和成员函数可以任意

其它类调用。

protectedprotectedvoidOnlySubClasses(){}protected实例变量和成员函数

只能被其子类调用.

privateprivateStringCreditCardNumber;private实例变量和成员函数只能在本类里调用.

friendlyvoidMyPackageMethod(){}缺省的,如果没有定义任何防火控制,实例变量或函数缺省定义成friendly,意味着可以被本包里的任意对象防问,但其它包里的对象不可防问。

静态成员函数和变量有?copy;时候,你创建一个类,希望这个类的所有实例都公用一个变量。也就是说,所有这个类的对象都只有实例变量的同一个拷贝。这种方法的关键词是static,例如:

classBlock{staticintnumber=50;}

所有从Block类创建的对象的number变量值都是相同的。无任在哪个对象里改变了number的值,所有对象的number都跟着改变。同样的,你可以定义static 成员函数,但这个成员函数不能访问非static函数和变量。

classBlock{staticintnumber=50;intlocalvalue;staticvoidadd_local(){loc alvalue++;//没有运行}staticvoidadd_static(){number++;//运行}}

3.5this和super

访问一个类的实例变量时,this关键词是指向这个类本身的指针,在前面ClassOne例子中,我们可以增加构造函数如下:

publicclassClassOne{inti;publicClassOne(){i=10;}

publicClassOne(intvalue)this.i=value;}

publicvoidAdd_i(intj){i=i+j;}}

这里,this指向ClassOne类的指针。如果在一个子类里覆盖了父类的某个成员函数,但又想调用父类的成员函数,你可以用super关键词指向父类的成员函数。

importClassOne;publicclassNewClassextendsClassOne{publicvoidAdd_i(int j){i=i+(j/2);super.Add_i(j);}}

下面程序里,i变量被构造函数设成10,然后15,最后被父类(ClassOne)设成25。

NewClassmnc;mnc=newNewClass();mnc.Add_i(10);

3.6类的类型

至今为止,我用在类前面只用了一个public关键词,其实它有下面4种选择:

abstract一个abstract类必须至少有一个虚拟函数,一个abstract类不能直接创建对象,必须继承子类后才能。

final一个final类声明了子类链的结尾,用final声明的类不能再派生子类。

publicpublic类能被其它的类访问。在其它包里,如果想使用这个类必须先import,否则它只能在它定义的package里使用。

synchronicable这个类标识表示所有?copy;类的成员函数都是同步的。

3.7抽象类

面向对象的一个最大优点就是能够定义怎样使用这个类而不必真正定义好成员函数。如果程序由不同的用户实现时是很有用的,这不需用户使用相同的成员函数名。

在java里Graphics类里一个abstract类的例子如下:publicabstractclassGraphics{publicabstractvoiddrawLine(intx1,inty1,in tx2,inty2);publicabstractvoiddrawOval(intx,inty,intwidth,intheight);p ublicabstractvoiddrawRect(intx,inty,intwidth,intheight);...}

在Graphics类里声明了几个成员函数,但成员函数的实际代码是在另外一?copy;地方实现的。

publicclassMyClassextendsGraphics{publicvoiddrawLine(intx1,inty1,intx 2,inty2){<画线程序代码>}}

当一个类包含一个abstract成员函数,这个类必须定义为abstract类。然而并不是abstract类的所有的成员函数都是abstract的。Abstract类不能有私有成员函数(它们不能被实现),也不能有静态成员函数。

3.8接口

当你确定多个类的操作方式都很相象时,abstract成员函数是很有用的。但如果你需要使用这?copy;abstract成员函数,必须创建一个新类,这样有时很繁琐。接口提?copy;了一种抽象成员函数的有利方法。一个接口包含了在另一个地方实现的成员函数的收集。成员函数在接口里定义为public和abstract。接口里的实例变量是public,static和final。接口和抽象的主要区别是一个接口提?copy;了封装成员函数协议的方法而不必强迫用户继承类。

例子:

publicinterfaceAudiClip{//Startplayingtheclip.voidplay();//Playthecli pinaloop.voidloop();//Stopplayingtheclipvoidstop();}

想使用AudioClip接口的类使用implenents关键词来提?copy;成员函数的程序代码。classMyClassimplementsAudioClip{voidplay(){<实现代码>}voidloop<实现代码>}voidstop<实现代码>}}

优点一个接口类可以被任意多的类实现,每个类可以共享程序接口而不必关心其它类是怎样实现的。classMyOtherClassimplementsAudioClip{voidstop(){<实现代码>}...}

内部成员函数Java还提?copy;了调用C和C++函数的方法。用native关键词来定义C和C++的函数。

publicclassDate{intnow;publicDate(){now=time();}privatenativeinttime( );

static{System.loadLibrary("time");}}

一?copy;Java代码写好后,就需要以下步骤执行:1.用javah来创建头文件(.h)2.用javah来创建stub文件3.用C和C++写native成员函数的代码4.编译stub 文件和.C文件成一个动态可加载库5.用java运行java程序或appletviewer

运行applet

注意:Native成员函数超出了类的范围。

3.9包(Packages)

包(Package)由一组类(class)和界面(interface)组成。它是管理大型名字空间,避免名字冲突的工具。每一个类和界面的名字都包含在某个包中。按照一般的习惯,它的名字是由“.”号分隔的单词构成,第一个单词通常是开发这个包的组织的名称。

定义一个编译单元的包编译单元的包由package语句定义。如果使用package

语句,编译单元的第一行必须无空格,也无注释。其格式如下:packagepackageName;若编译单元无package语句,则该单元被置于一个缺省的无名的包中。

使用其它包中的类和界面在Java语言里提?copy;一个包可以使用另一个包中类和界面的定义和实现的机制。用import关键词来标明来自其它包中的类。一个编译单元可以自动把指定的类和界面输入到它自己的包中。在一个包中的代码可以有两种方式来定义来自其它包中的类和界面:*在每个引用的类和界面前面给出它们所在的包的名字;//前缀包名法

acme.project.FooBarobj=newacme.project.FooBar();*使用import语句,引入一个类或一个界面,或包含它们的包。引入的类和界面的名字在当前的名字空间可用。引入一个包时,则该包所有的公有类和界面均可用。其形式如下://从acme.project引入所有类importacme.project.*;这个语句表示acme.project 中所有的公有类被引入当前包。以下语句从acme.project包中进入一个类Employec_List。//从acme.project而引入

Employee_Listimportacme.project.Employee_list;Employee_Listobj=newEmp loyee_List();在使用一个外部类或界面时,必须要声明该类或界面所在的包,否则会产生编译错误。

import(引用)类包(classpackage)用import关键词调入,指定package名字如路径和类名,用*匹配符可以调入多于一个类名。

importjava.Date;importjava.awt.*;

如果java源文件不包含package,它放在缺省的无名package。这与源文件同目录,类可以这样引入:importMyClass。

Java系统包:Java语言提?copy;了一个包含窗口工具箱,实用程序,一般I/O,工具和网络功能的包。

java.applet这个包包含量了一?copy;设计applet的类,用一个类Applet和三个接口.AppletContext;AppletStub;和AudioClip.

java.awt另一个窗口工具箱包.awt,包含了一?copy;产生装饰物和GUI成员的类。这个package包括:

Button,Checkbox,Choice,Component,Graphics,Menu,Pane1,TextArea和TextField。

java.ioI/Opackage包含文件输入/输出类,FileInputStream和FileOutputStream.

https://www.doczj.com/doc/a25346246.html,ng这个包包含Java语言类,包含:对象,线程,异常出口,系统,整数,原点,数学,字符等。

Java基础入门教程(适合所有初学者)

第1章 Java语言概述与面向对象思想 1 1.1 Java语言的发展 1 1.1.1 Java语言的产生 1 1.1.2 Java语言的发展 1 1.2 Java语言的特点 2 1.3 面向对象与面向过程的差异 3 1.3.1 面向过程思想回顾 4 1.3.2 面向对象思想介绍 4 1.4 面向对象程序设计中的主要概念和特征 4 1.4.1 主要概念 5 1.4.2 主要特征 5 *1.5 Java与C++的差异 5 1.6本章小结5 习题 5 第2章 Java语言开发环境 6 2.1 JDK 6 2.1.1 JDK的简介6 2.1.2 JDK的构成6 2.1.3 JDK的使用6 2.2 IDE 8 2.2.1 IDE简介8 2.2.2 JBuilder 9 2.2.3 Eclipse 9 2.2.4 相关资源9 2.3 Project管理9 2.3.1 Project的含义9 2.3.2 可行的Project组织模式9 2.3.3 主要开发工具的Project目录10 2.4 本章小结10 习题10 第1章 Java语言概述与面向对象思想 1.1 Java语言的发展 1.1.1 Java语言的产生以介绍面向对象编程的基本概念、基本理论为重点,结合Java语言的语法规则、编程特点和设计思想、强调容易发生错误和编程应注意的地方,使学生能对Java 技术有一个总体了解,通过本课程学习,使学生掌握Java语言的基础知识,理解和掌握面向对象程序设计的基本思想,熟练地使用Java语言进行程序的编写、编译以及调试工作 上世纪90年代初期,Sun公司在研究一种适用于未来的智能设备的编程语言,该语言要具有一些新的特性,以避免C++的一些不足。 该语言起初命名为Oak,来源于语言作者Gosling办公室窗外的一棵橡树(Oak)。后来在注册时候遇到了冲突,于是就从手中的热咖啡联想到了印度尼西亚一个盛产咖啡的岛屿,中文名叫爪哇,Java语言得名于此。 随着Internet的迅速发展,Web应用日益广泛,Java语言也得到了迅速发展。1994年,Gosling

Java语言程序设计基础教程习题解答

《Java语言程序设计基础教程》练习思考题参考答案

第1章 Java程序设计概述 练习思考题 1、 Java运行平台包括三个版本,请选择正确的三项:() A. J2EE B. J2ME C. J2SE D. J2E 解答:A,B,C 2、 Java JDK中反编译工具是:() A. javac B. java C. jdb D. javap 解答:D 3、 public static void main方法的参数描述是:() A. String args[] B. String[] args C. Strings args[] D. String args 解答:A,B 4、在Java中,关于CLASSPATH环境变量的说法不正确的是:() A. CLASSPATH一旦设置之后不可修改,但可以将目录添加到该环境变量中。 B. 编译器用它来搜索各自的类文件。 C. CLASSPATH是一个目录列表。 D. 解释器用它来搜索各自的类文件。 解答:A 5、编译Java Application源文件将产生相应的字节码文件,扩展名为() A. .java B. .class C. .html D. .exe 解答:B 6、开发与运行Java程序需要经过的三个主要步骤为____________、____________和____________。 7、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是______类的子类并且存储该源程序文件的文件名为______。 8、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器编译该源程序文件将产生______个文件名与类名相同而扩展名为______的字节码文件。 9、开发与运行Java程序需要经过哪些主要步骤和过程? 10、Java程序是由什么组成的?一个程序中必须要有public类吗?Java源文件的命名规则是怎么样的? 11、编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。

Java基础教程(毕向东老师讲的)

1.基本常识: 命令提示符 dir 列出文件md 创建文件夹rd 删除文件夹(doc 里面删除出文件夹必须保证这个文件夹是空的,del 命令可以删掉文件夹)cd 进入文件夹里cd.. 返回上一级目录cd\ 退到根目录echo kobe>1.txt 创建文件del 1.txt 删除文件 2.java 的跨平台性 用java编写的软件在不同的操作系统上可以完成(C++ 不行),在每个系统上装上java 虚拟机就可以运行java程序 3.java 环境搭建 Jre java 运行环境(包括虚拟机)jdk java 开发工具包 4.java 环境变量配置 直接设置:打开“我的电脑”的“属性”,选择“高级”菜单,点击下方的“环境变量”按钮。 D:\Java\jdk1.6.0_14\bin 目录添加到用户变量的path中(已经有的变量值不能删除)%% :动态的获取某一环境变量的值

环境变量临时配置方式: set 可以查看和编辑环境变量的值 Start 打开新的DOC 命令窗口 5.HelloWorld 想在任何目录下运行class 文件就建立一个临时classpath 环境变量:放原来的class 文件的路径,具体演示方法在下面:

设置完以后set classpath= 就表明对环境变量清空 Set classpath=c\; 在classpath 中找不到就到当前目录 Set classpath=c\ 只在classpath中找要运行的class文件(不加分号比较好,推荐) Path 跟classpath 相反,path 先在当前目录下寻找,要是没找到就去path环境变量中去找 (Set paht=c:\Windows cmd--->write.exe 写字工具弹出来) 6.注释 // 表明单行注释 /* 多行注释 */ 多行注释中不能包含多行注释 7.标示符

Java语言入门教程

Java语言入门教程 引言 您有没有想过计算机程序是怎样工作的?您是否曾经想学习编写自己的计算机 程序?无论您是想自己写出游戏程序的14岁孩子,还是对计算机编程已经好奇了20年的70岁老人,这篇文章都适合您。在本文中,我将通过教您用Java程序设计语言编程使您了解计算机程序的原理。 在讲授计算机编程的知识之前,我首先做如下假设: ?我假设您目前对计算机编程一无所知。如果您已经懂一些编程知识的话那么本文的开始部分对您来说就会显得十分简单。尽可放心跳过这些章节,从新知识处开始学习。 ?我假设您对计算机的使用有一些了解。具体说就是我假设您已经知道如何编辑、复制、删除和重命名文件,以及如何获取有关您的系统的信息等等。 ?为简单起见,我假设您的机器运行Windows95、98、2000、NT或XP操作系统。使用其他操作系统的用户将这里学到的概念运用到自己的系统中应 该也是比较容易的。 ?我假设您有学习的欲望。 进行Java编程需要的所有工具都可以轻松在网上免费获得。网上还有大量的Java学习资料,所以学完本文以后您可以很容易去学习更多内容以继续提高水平。在这里学习的Java编程在编译器、开发环境、阅读材料等等上没有任何花销。学会了Java再学习其他的语言就变得容易了,所以这里是个不错的起点。 交待完这些事情,我们就准备好了。让我们开始吧! 编程术语 记住,我假定您不懂编程。下面是一些术语,它们将有助于您的理解:?计算机程序——计算机程序是一组指令,告诉计算机应该怎么做。指令可 以告诉计算机将几个数相加,或比较两个数字并根据比较的结果作出决 定,如此之类。计算机程序只是面向计算机的一组指令而已,正如菜谱是 厨师的指令,乐谱是乐师的指令一样。计算机准确地执行这些指令的同时 也就完成了有用的工作,如计算支票簿收支,或者在屏幕上显示一个游戏,或运行一个字处理程序。 ?编程语言——为了能使计算机辨识您给它的指令,这些指令需要以一种计算机能够理解的语言书写,即编程语言。有很多计算机编程语言:Fortran、Cobol、Basic、Pascal、C、C++、Java、Perl,正如有很多人类语言一样。 它们都是用不同的方式来表达类似的概念。 ?编译器——使用人可以阅读的编程语言(如Java)写好程序后,还要用编译器将其翻译成计算机可执行的形式。您很可能在您的计算机上见到过

Java程序设计基础教程

Java程序设计基础教程 第一章概述 本章技能目标 (1)了解Java语言的由来、特点、家族成员及实现机制。 (2)熟悉JDK开发环境的安装与配置。 (3)会使用Eclipse开发第一个Java应用程序。 重点和难点 开发环境的配置与使用。 1.1Java语言简洁 1.1.1Java语言的由来 Java是由SUN公司开发而成的新一代编程语言。 Oak。 咖啡(Java)。 Java大家庭: (1)J2ME—即Java2 Micro Edition。 (2)J2SE—即Java2(Software Development Kit)Standard Edition。 (3)J2EE—即Java2 Enterprise Edition(可扩展的企业应用Java2平台)。 1.1.2Java语言的特点 面向对象与面向过程。 高级语言程序必须转换为机器语言程序才能执行,但不同的计算机系统所使用的机器语言不同。 一次编译,随处运行。 任何系统只有安装了Java虚拟机(Java Virtual Machine,JVM)后,才可以执行Java程序。 当JVM解释执行Java程序时,Java实时编译器(Just-In-Time,JIT)会将字节码译成目标平台对应的机器语言的指令代码。编译器会产生一种具备结构中立性的对象文件格式,即Java字节码文件。 在Java中,这种供虚拟机理解的代码叫做字节码(ByteCode),它不面向任何特定的处理器,之面向虚拟机。 Java字节码可在任何安装了Java虚拟机的平台上运行。 每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器编译后变成字节码。字节码由虚拟解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后再特定的机器上运行。其执行过程如图1-1所示。 1.2开发环境配置与使用 1.2.1JDK的安装与配置 在开发Java应用程序前必须首先下载并安装JDK。目前JDK最新版本是1.6。 2.认识JDK (1)bin目录。提供了工具程序,包括javac、java、javadoc、appletviewer等程序。 1)javac用于将Java源代码编译成字节码。其语法为: Javac [option] source 其中,[option]可包括以下几项: ①-classpath<路径>,指定将使用的类路径,以搜索.class文件。 ②-d<目录>,制定用于存放经过编译的.class文件的目录。“.”表示当前目录。 Source是以扩展名.java结尾的一个或多个文件名。 2)java用于执行java字节码。其语法为: Java [option] classname [arguments] 其中,[option]可包括以下几项: ①-classpath<路径>,指定将使用的备用类路径。

java基础教程笔记

JAVA基础教程笔记 第一章:java语言概述 J2se:J2SE(Standard Edition)就是Java2的标准版,主要用于桌面应用软件的编程 J2ee:J2ME(micro edition),又称为微缩版,主要应用于嵌入是系统开发,如手机和PDA的编程 Jsme:J2EE(Enterprise Edition)是Java2的企业版,主要用于分布式的网络程序的开发 类库:属性和方法,是对具体的一种抽象 OOA,OOP,OOD. Java和C和c++语言都是跨平台的语言 1.c和c++是源码型平台无关性语言。 2.java是目标型的平台无关性语言。 Java的执行方式和c语言的执行方式的区别? JVM:JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。编译虚拟机的指令集与编译微处理器的指令集非常类似。 什么叫做环境变量? 环境变量的设置,变量名,变量值(jdk所安装的位置),幻灯片有相关内容 第二章:java程序结构 Java程序的结构: 1./*这是一个简单的Java程序示例程序*/ 2.package mypack; 3.importjava.util.*; 4.public class Example { 5.public static void main (String args[ ]) { 6.System.out.println("Java欢迎您!"); 7.} 8.} args[ ]:主函数调用时候传入的参数 final varTypevarName[=value],声明一个常量的时候!比如说声明一个圆周率:3.14 java的基本数据类型-记忆 true 和false 在java语言中,true和false的值是什么?0或1…….? Byte:本身是整形,是一个字节,在32位机和64位机上是不会改变的。 Unicode:唯一码是两个字节, 背景:用两个字节表示一个汉字

java基础教程

第一章Java语言的产生及其特点 1.1Java产生的历史与现状 1.1.1Java产生的历史 Java来自于Sun公司的一个叫Green的项目,其原先的目的是为家用消费电子产品开发一个分布式代码系统,这样我们可以把E-mail发给电冰箱、电视机等家用电器,对它们进行控制,和它们进行信息交流。开始,准备采用C++,但C++太复杂,安全性差,最后基于C++开发一种新的语言Oak(Java的前身),Oak是一种用于网络的精巧而安全的语言,Sun公司曾依此投标一个交互式电视项目,但结果是被SGI打败。可怜的Oak几乎无家可归,恰巧这时MarkArdreesen开发的Mosaic和Netscape启发了Oak项目组成员,他们用Java编制了HotJava浏览器,得到了Sun公司首席执行官ScottMcNealy的支持,触发了Java进军Internet。Java的取名也有一个趣闻,有一天,几位Java成员组的会员正在讨论给这个新的语言取什么名字,当时他们正在咖啡馆喝着Java(爪哇)咖啡,有一个人灵机一动说就叫Java怎样,得到了其他人的赞赏,于是,Java这个名字就这样传开了。 1.1.2Java的现状 Java是Sun公司推出的新的一代面向对象程序设计语言,特别适合于Internet 应用程序开发,它的平台无关性直接威胁到Wintel的垄断地位。一时间,“连Internet,用Java编程”,成为技术人员的一种时尚。虽然新闻界的报导有些言过其实,但Java作为软件开发的一种革命性的技术,其地位已被确立,这表现在以下几个方面: 1.计算机产业的许多大公司购买了Java的许可证,包括 IBM,Apple,DEC,Adobe,SiliconGraphics,HP,Oracel,Toshiba,以及最不情愿的Microsoft。这一点说明,Java已得到了工业界的认可。 2.众多的软件开发商开始支持Java的软件产品。例如:Borland公司正在开发的基于Java的快速应用程序开发环境Latte,预计产品会在1996年中期发布。Borland公司的这一举措,推动了Java进入PC机软件市场。Sun公司自己的Java 开发环境JavaWorkshop已经发布。数据库厂商如: Illustra,Sysbase,Versant,Oracle都在开发CGI接口,支持HTML和Java。今天是以网络为中心的计算时代,不支持HTML和Java,应用程序的应用范围只能限于同质的环境(相同的硬件平台)。 3.Intranet正在成为企业信息系统最佳的解决方案,而其中Java将发挥不可替代的作用。Intranet的目的是把Internet用于企业内部的信息系统,它的优点

Java基础教程清华大学出版社第2版部分习题答案

Java基础教程(清华大学出版社第2版)部分习题答案 第一章 【答案】答案见教材<略>。 第二章 1. 请说明注释的作用。 【答案】答案见教材<略>。 2. 判断下列那些是标识符? (1) 3class (2) byte (3) ? room (4) Beijing (5) beijing 【答案】(1)(2)(3)不是标识符,因为标识符不能已数字开始,也不能是保留关键字(如byte),不能以?开始。 3. 请指出下列声明字符变量ch的语句是否存在错误?如果有,请改正。 (1)char ch = 'A'; (2)char ch = '\u0020'; (3)char ch = 88; (4)char ch = 'ab'; (5)char ch = "A"; 【答案】(4)错,因为关键字char是用于声明字符变量,不可声明字符串变量。 4. 如果int x=1,y=-2,n=10;那么,表达式x+y+(--n)*(x>y&&x>0?(x+1):y)的值是什么类型?结果是多少? 【答案】int型,值为17。 5. 如果int k=1,那么'H'+k的类型是什么?下面语句是否存在差错?如果有,请改正。 (1)int k=1; (2)char ch1,ch2; (3)ch1='H'+k; (4)ch2=98; 【答案】'H'+k的类型为int型。 (3)有错。'H'+k为int型,ch1为char型,将高精度赋给低精度类型时必须实行强制转换。 6. 请指出下面程序在编译时是否会出现错误。如果有,请改正。 public class doubleTointExample { public static void main(String args[ ]) { int a; double b=1,c=2; a=(int)(b+c); System.out.println("a="+a); } }

java基础教程pdf

java基础教程pdf Java的学习,如何从入门到精通,我有六条建议,只要牢牢掌握了这六条,你想不成为大神都难。 第一你需要一个领路人; 第二你需要看书; 第三你需要写代码; 第四你需要写代码; 第五你需要写代码; 第六重要的事情说三遍。 其实想要学好Java并不是很难,我来试着梳理一下一个Java应该系统掌握的东西。 1、入门基础 JAVA语言基础、循环、数组; 了解类和对象; OOP封装、继承、多态; java.util.*包下的常用类讲解; JDK语言包的常用函数; 数据库基础及JDBC; IO流操作,多线程及Socket。 前端基础

HTML基本标签; CSS样式表;JAVASCRIPT; Ajax; jQuery; 状态管理Session和Cookie;动态网页技术; JSP数据交互; JSTL和EL表达式;Servlet、Filter、Listener;分页和文件上传。 主流技术应用 Spring应用 Hibernate应用 Struts2应用 Redis应用 4丶模拟实际项目开发SpringMVC的应用 Redis+Mysql的查询优化设计Nginx的使用 Mysql集群方案

通过第一阶段的学习掌握Java语法和常用类,数据库入门技术相关知识。让自己对于存储,IO,这些有个大概的了解。这时候,千万不要深入了解多线程和socket,谨记谨记。 通过第二阶段了解前端相关的技术,如果你喜欢前端各种酷炫的效果,那么就深入学习JS、CSS。不大感兴趣的话,就浅尝辄止,并重点学习Servlet、Filter、Listener。重点学习,重点学习,重点学习。重要的话说三遍! 通过第三阶段了解目前Java领域使用率很高的三大框架,了解他们的大概功能,并加以使用。通过使用SSH开发一个简易CRM之类的项目来加强了解,理清楚框架的大致原理。并了解Redis相关的指令及数据结构,应用到CRM里。 通过第四个阶段了解更简单易用的SpringMVC,应用和存储集群相关的概念及实现方案。让自己具备一个设计高可用,可扩展的项目框架视野。这样对于后面继续专研SpringCloud / Dubbo、zookeeper这些RPC相关的框架有很大的好处。 最后,你想自学的话,我提到的这些东西都能搜到对应的资料,无非多踩点坑罢了。但是,看文档or项目永远进步不了。一定要上手敲,想再多也不如动手。 个人还是建议培训班,有不少培训班请到的大神确实很厉害,会给你带来质

Java基础教程

Java基础教程(程序及语法) /************************************************** 这是个最基本的JA V A程序,最基本的JA V A程序必须有一个类 **************************************************/ //最基本的JA V A程序必须有一个类,在这里是clas base01 class base01 { //在JA V A中,程序的入口也为main函数 //main()函数前的限制符顺序必须为public static void,参数必须为String类型的数组//以下写法将不被通过 public void static main(String[] args) { System.out.println("Hello World!"); } } ********************************************************** java源文件的命名规则 在同一个JA V A文件中可以定义多个类,但是只有一个类能定义为public 而且如果一个类被定义为public,这个文件的文件名必须和该public类 的名字相同。 对于本类,文件必须命名为base02 ***********************************************************/ class A { int a; }; class B { int b; }; public class base02 {

public static void main(String[] args) { System.out.println("Hello World!"); } } Java基础教程(程序及语法3) class code01 { public static void main(String[] args) { //JA V A的数据类型。请注意大小写 //一个字节的整型 byte e=3; System.out.println(e); //两个字节的整型 short h=4; System.out.println(h); //四个字节的整型 int f=4; System.out.println(f); //八个字节的整型 long g=5; System.out.println(g); //4个字节的浮点数 float a=11.3f; System.out.println(a); //8个字节的浮点数(更加精确) double b=12.3d; System.out.println(b); //两个字节的单个字符。注意定义字符的时候不能用双引号,只能用单引号char c='s'; String ss="xiongyong"; System.out.println(c); //bool变量,用于判断真假。注意:true和false不能大写。

Java基础入门教程(适合所有初学者)

JVAV基础入门教程 第1章Java语言概述与面向对象思想1 1.1Java语言的发展1 1.1.1Java语言的产生1 1.1.2Java语言的发展1 1.2Java语言的特点2 1.3面向对象与面向过程的差异3 1.3.1面向过程思想回顾4 1.3.2面向对象思想介绍4 1.4面向对象程序设计中的主要概念和特征4 1.4.1主要概念5 1.4.2主要特征5 *1.5Java与C++的差异5 1.6本章小结5 习题5 第2章Java语言开发环境6 2.1JDK6 2.1.1JDK的简介6 2.1.2JDK的构成6 2.1.3JDK的使用6 2.2IDE8 2.2.1IDE简介8 2.2.2JBuilder9 2.2.3Eclipse9 2.2.4相关资源9 2.3Project管理9 2.3.1Project的含义9 2.3.2可行的Project组织模式9 2.3.3主要开发工具的Project目录10 2.4本章小结10 习题10 第1章Java语言概述与面向对象思想 1.1Java语言的发展 1.1.1Java语言的产生 上世纪90年代初期,Sun公司在研究一种适用于未来的智能设备的编程语言,该语言要具有一些新的特性,以避免C++的一些不足。 该语言起初命名为Oak,来源于语言作者Gosling办公室窗外的一棵橡树(Oak)。后来在注册时候遇到了冲突,于是就从手中的热咖啡联想到了印度尼西亚一个盛产咖啡的岛屿,中文名叫爪哇,Java语言得名于此。 随着Internet的迅速发展,Web应用日益广泛,Java语言也得到了迅速发展。1994年,Gosling 用Java开发了一个实时性较高、可靠、安全、有交互功能的新型Web浏览器,它不依赖于任何硬件平台和软件平台。这种浏览器名称为HotJava,并于1995年同Java语言一起,正式

Java基础入门教程(适合所有初学者)

java 入门学习大全 来源:QQ群418355531获取更多资料可加群[java 入门培训-java 入门试学7天] 第1章 Java语言概述与面向对象思想 1 1.1 Java语言的发展 1 1.1.1 Java语言的产生1 1.1.2 Java语言的发展1 1.2 Java语言的特点 2 1.3 面向对象与面向过程的差异 3 1.3.1 面向过程思想回顾 4 1.3.2 面向对象思想介绍 4 1.4 面向对象程序设计中的主要概念和特征 4 1.4.1 主要概念 5 1.4.2 主要特征 5 *1.5 Java与C++的差异 5 1.6本章小结 5 习题 5 第2章 Java语言开发环境 6 2.1 JDK 6 2.1.1 JDK的简介6 2.1.2 JDK的构成6 2.1.3 JDK的使用6 2.2 IDE 8 2.2.1 IDE简介8

2.2.2 JBuilder 9 2.2.3 Eclipse 9 2.2.4 相关资源9 2.3 Project管理9 2.3.1 Project的含义9 2.3.2 可行的Project组织模式 9 2.3.3 主要开发工具的Project目录10 2.4 本章小结 10 习题10 第1章 Java语言概述与面向对象思想 1.1 Java语言的发展 1.1.1 Java语言的产生 上世纪90年代初期,Sun公司在研究一种适用于未来的智能设备的编程语言,该语言要具有一些新的特性,以避免C++的一些不足。 该语言起初命名为Oak,来源于语言作者Gosling办公室窗外的一棵橡树(Oak)。后来在注册时候遇到了冲突,于是就从手中的热咖啡联想到了印度尼西亚一个盛产咖啡的岛屿,中文名叫爪哇,Java语言得名于此。 随着Internet的迅速发展,Web应用日益广泛,Java语言也得到了迅速发展。1994年,Gosling用Java开发了一个实时

《Java语言程序设计基础教程》习题解答 (1)

第1章 Java程序设计概述 1.9 练习思考题 1、Java运行平台包括三个版本,请选择正确的三项:() A. J2EE B. J2ME C. J2SE D. J2E 解答:A,B,C 2、Java JDK中反编译工具是:() A. javac B. java C. jdb D. javap 解答:D 3、public static void main方法的参数描述是:() A. String args[] B. String[] args C. Strings args[] D. String args 解答:A,B 4、在Java中,关于CLASSPA TH环境变量的说法不正确的是:() A. CLASSPA TH一旦设置之后不可修改,但可以将目录添加到该环境变量中。 B. 编译器用它来搜索各自的类文件。 C. CLASSPA TH是一个目录列表。 D. 解释器用它来搜索各自的类文件。 解答:A 5、编译Java Application源文件将产生相应的字节码文件,扩展名为() A. .java B. .class C. .html D. .exe 解答:B 6、开发与运行Java程序需要经过的三个主要步骤为____________、____________和____________。 7、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是______类的子类并且存储该源程序文件的文件名为______。 8、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器编译该源程序文件将产生______个文件名与类名相同而扩展名为______的字节码文件。 9、开发与运行Java程序需要经过哪些主要步骤和过程? 10、Java程序是由什么组成的?一个程序中必须要有public类吗?Java源文件的命名规则是怎么样的? 11、编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很

javaee基础教程习题答案

JAVAEE基础教程课后部分编程题答案 2-14 public class aa { public static void main(String[] args) { // TODO Auto-generated method stub double x=34.5; double y=68.4; double z=x+y; System.out.println("x+y="+x+"+"+y+"="+z);} } 3-19 (一)从大到小 插入排序法 public class Sort { public static void main(String[] args) { int[] A={30,1,-9,70,25}; for(int i=1;i0;j--){ if(A[j]>A[j-1]){ int temp; temp=A[j-1]; A[j-1]=A[j]; A[j]=temp; } } } System.out.println("利用插入排序方法的结果是:"); for(int i=0;i0;i--){ max=0; for(int j=1;j<=i;j++){ if(A[max]>A[j]) max=j;

相关主题
文本预览
相关文档 最新文档