作业帮 > 小学作文 > 教育资讯

宿命点落8宫

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/02 11:27:10 小学作文
宿命点落8宫小学作文

篇一: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集成的网络功能充分有利于开发网络应用系统。

本章小结:

篇二:JAVA教程全集-电子版(上)

第一章 Java概览

Java是一种理想的面向对象的网络编程语言。它的诞生为IT 产业带来了一次变革,也是软件的一次革命。Java程序设计是一个巨大而迅速发展的领域,有人把Java称作是网络上的“世界语”。

本章将简要介绍Java语言的发展历史、特点、Java程序的基本结构以及开发Java程序的环境和基本方法。

1.1 Java语言发展历史

1.1.1 Java 语言产生的背景

1991年,SUN MicroSystem公司的Jame Gosling、Bill Joe等人的研究小组针对消费电子产品开发应用程序,由于消费电子产品种类繁多,各类产品乃至同一类产品所采用的处理芯片和操作系统也不相同,就出现了编程语言的选择和跨平台的问题。当时最流行的编程语言是C和C++语言,但对于消费电子产品而言并不适用,安全性也存在问题。于是该研究小组就着手设计和开发出一种称之为Oak(即一种橡树的名字)语言。由于Oak在商业上并未获得成功,当时也就没有引起人们的注意。

直到1994年下半年,随着Internet的迅猛发展,环球信息网WWW的快速增长,Sun Microsystems公司发现Oak语言所具有的跨平台、面向对象、高安全性等特点非常适合于互联网的需要,于是就改进了该语言的设计且命名为“Java”,并于1995年正式向IT业界推出。Java一出现,立即引起人们的关注,使得它逐渐成为Internet上受欢迎的开发与编程语言。当年就被美国的著名杂志PC Magazine评为年度十大优秀科技产品之一(计算机类就此一项入选)。

1.1.2 互联网成就了Java

互联网的出现使得计算模式由单机时代进入了网络时代,网络计算模式的一个特点是计算机系统的异构性,即在互联网中连接的计算机硬件体系结构和各计算机所使用的操作系统不全是一样的,例如硬件可能是SPARC、INTEL或其他体系的,操作系统可能是UNIX、Linux、windows或其他的操作系统。这就要求网络编程语言是与计算机的软硬件环境无关的,即跨平台的,用它编写的程序能够在网络中的各种计算机上正常运行。Java正是这样迎

合了互联网时代的发展要求,才使它获得了巨大的成功。

随着Java2一系列新技术(如JAVA2D、JAVA3D、SWING、JAVA SOUND、EJB、SERVLET、JSP、 CORBA、XML、JNDI等等)的引入,使得它在电子商务、金融、证券、邮电、电信、娱乐等行业有着广泛的应用,使用Java技术实现网络应用系统也正在成为系统开发者的首要选择。

(来自:WWw.SmhaiDa.com 海达范文网:宿命点落8宫)

事实上,Java是一种新计算模式的使能技术,Java的潜力远远超过作为编程语言带来的好处。它不但对未来软件的开发产生影响,而且应用前景广阔,其主要体现在以下几个方面:

1)软件的开发方法,所有面向对象的应用开发以及软件工程中需求分析、系统设计、开发实现和维护等。

2)基于网络的应用管理系统,如完全基于Java和WEB技术的Intranet(企业内部网)上应用开发。

3)图形、图像、动画以及多媒体系统设计与开发实现。

4)基于Internet的应用管理功能模块的设计,如网站信息管理、交互操作设计及动态Web页面的设计等。

5)其它应用。

1.2 Java的特点

Java是一种纯面向对象的网络编程语言,它具有如下特点:

1) 简单、安全可靠

Java是一种强类型的语言,由于它最初设计的目的是应用于电子类消费产品,因此就要求既要简单又要可靠。

Java的结构类似于C和C++,它汲取了C和C++优秀的部分,弃除了许多C和C++中比较繁杂和不太可靠的部分,它略去了运算符重载、多重继承等较为复杂的部分;它不支持指针,杜绝了内存的非法访问。它所具有的自动内存管理机制也大大简化了程序的设计与开发。 Java主要用于网络应用程序的开发,网络安全必须保证,Java通过自身的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。

2)面向对象

Java是一种完全面向对象的语言,它提供了简单的类机制以及动态的接口模型,支持封装、多态性和继承(只支持单一继承)。面向对象的程序设计是一种以数据(对象)及其接口为中心的程序设计技术。也可以说是一种定义程序模块如何“即插即用”的机制。

面向对象的概念其实来自于现实世界,在现实世界中,任一实体都可以看作是一个对象,而任一实体又归属于某类事物,因此任何一个对象都是某一类事物的一个实例。

在Java中,对象封装了它的状态变量和方法(函数),实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或者重新定义父类或者超类所提供的方法,从而实现了代码的复用。

3)分布式计算

Java为程序开发者提供了有关网络应用处理功能的类库包,程序开发者可以使用它非常方便地实现基于TCP/IP的网络分布式应用系统。

4)平台的无关性

Java是一种跨平台的网络编程语言,是一种解释执行的语言。Java源程序被Java编译器编译成字节码(Byte-code)文件,Java字节码是一种“结构中立性”(architecture neutral)的目标文件格式,Java虚拟机(JVM)和任何Java-使能的Internet浏览器都可执行这些字节码文件。在任何不同的计算机上,只要具有Java虚拟机或Java使能的Internet浏览器即可运行Java的字节码文件,不需重新编译(当然,其版本向上兼容)。实现了程序员梦寐以求的―一次编程、到处运行‖(write once,run every where!)的梦想。

5) 多线程

Java的多线程(multithreading)机制使程序可以并行运行。线程是操作系统的一种新概念,它又被称作轻量进程,是比传统进程更小的可并发执行的单位。Java的同步机制保证了对共享数据的正确操作。多线程使程序设计者可以在一个程序中用不同的线程分别实现各种不同的行为,从而带来更高的效率和更好的实时控制性能。

6) 动态的

一个Java程序中可以包含其他人写的多个模块,这些模块可能会遇到一些变化,由于Java在运行时才把它们连接起来,这就避免了因模块代码变化而引发的错误。

7) 可扩充的

Java发布的J2EE标准是一个技术规范框架,它规划了一个利用现有和未来各种Java技术整合解决企业应用的远景蓝图。

正如SUN MicroSystems所述:Java是简单的、面向对象的、分布式的、解释的、有活力的、安全的、结构中立的、可移动的、高性能的、多线程和动态的语言。

1.3 Java的工作原理

1.3.1 Java虚拟机

Java虚拟机其实是软件模拟的计算机,它可以在任何处理器上(无论是在计算机中还是在其它电子设备中)解释并执行字Java的字节码文件。Java的字节码被称为Java虚拟机的机器码,它被保存在扩展名为.class的文件中。

一个Java程序的编译和执行过程如图1-1所示。首先Java源程序需要通过Java编译器编译成扩展名为.class的字节码文件,然后由Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码并执行。

图1-1 Java程序的编译和执行过程

1.3.2 内存自动回收机制

在程序的执行过程中,系统会给创建的对象分配内存,当这些对象不再被引用时,它们所占用的内存就处于废弃状态,如果不及时对这些废弃的内存进行回收,就会带来程序运行效率下降等问题。

在Java运行环境中,始终存在着一个系统级的线程,专门跟踪对象的使用情况,定期检测出不再使用的对象,自动回收它们占用的内存空间,并重新分配这些内存空间让它们为程序所用。Java的这种废弃内存自动回收机制,极大地方便了程序设计人员,使他们在编写程序时不需要考虑对象的内存分配问题。

1.3.3 代码安全性检查机制

Java是网络编程语言,在网络上运行的程序必须保证其安全性。如何保证从网络上下载的Java程序不携带病毒而安全地执行呢?Java提供了代码安全性检查机制。

Java 在将一个扩展名为 .class的字节码文件装载到虚拟机执行之前,先要检验该字节码文件是否符合字节码文件规范,代码中是否存在着某些非法操作。检验工作由字节码检验器(bytecode verifier)或安全管理器(SecurityManager)进行。检验通过之后,将字节码文件加载到Java虚拟机中,由Java解释器解释为机器码并执行。java虚拟机把程序的代码和数据都限制在一定内存空间里执行,不允许程序访问超出该范围,保证了程序的安全运行。

1.4 Java的运行环境JDK

1.4.1 Java平台

Java不仅仅是一种网络编程语言,还是一个不断扩展的开发平台。Sun公司针对不同的市场目标和设备进行定位,把Java划分为如下三个平台:

1)J2SE(Java2 Standard Edition)是Java2 的标准版,主要用于桌面应用软件的编程。它包含了构成Java语言基础和核心的类。我们在学习Java的过程中,主要是在该平台上进

行的。

2)J2EE(Java2 Enterprise Edition)是Java2的企业版,主要是为企业应用提供一个服务器的运行和开发平台。J2EE 不仅包含J2SE 中的类,还包含了诸如EJB、servlet、JSP、XML等许多用于开发企业级应用的类包。J2EE本身是一个开放的标准,任何软件厂商都可以推出自己符合J2EE标准的产品,J2EE将逐步发展成为强大的网络计算平台。

3)J2ME(Java2 Micro Edition)是Java2的微缩版,主要为消费电子产品提供一个Java的运行平台,使得能够在手机、机顶盒、PDA等消费电子产品上运行Java程序。

1.4.2建立Java开发环境

要使用Java开发程序就必须先建立Java的开发环境。当前有许多优秀的Java程序开发环境,诸如JBuilder、Visual Age、Visual J++等等,这些工具功能强大,很适合有经验者使用。对于学习Java者来说,应该使用Sun公司的Java开发工具箱JDK(Java Development Kit),它拥有最新的Java程序库,功能逐渐增加且版本在不断更新,尽管它不是最容易使用的产品,但它是免费的,可到Java.sun.com站点上免费下载。

下边我们在Microsoft Windows操作系统平台上安装JDK,建立Java 的开发环境。

1)下载并安装JDK文件

当前Jdk版本已经更新到1.6.0版本,我们就Jdk1.6.0 版本为例,从Java.sun.com站上下载安装文件jdk-6-windows-i586。

双击安装文件jdk-6-windows-i586,按照安装文件的提示一步步执行即可安装。

如果将JDK安装到C:\ Jdk1.6.0目录下,安装成功后,将有图1.2所示的目录结构。

篇三:java教程

1.1 java语言的发展史

1.1.1java语言在互联网时代获得巨大成功

大家想一想,在PC下用windows编写的程序能够不做修改就直接拿到UNIX系统上运行吗?显然是不可以的,因为程序的执行最终必须转换成为计算机硬件的机器指令来执行,专门为某种计算机硬件和操作系统编写的程序是不能够直接放到另外的计算机硬件上执行的,至少要做移植工作。要想让程序能够在不同的计算机上能够运行,就要求程序设计语言是能够跨越各种软件和硬件平台的,而java满足了这一需求。

1995年,美国Sun Microsystems公司正式向IT业界推出了java语言,该语言具有安全、跨平台、面向对象、简单、适用于网络等显著特点,当时以web为主要形式的互联网正在迅猛发展,java语言的出现迅速引起所有程序员和软件公司的极大关注,程序员们纷纷尝试用java语言编写网络应用程序,并利用网络把程序发布到世界各地进行运行。包括IBM、Oracle、微软、Netscape、Apple、SGI等大公司纷纷与Sun Microsystems公司签订合同,授权使用java平台技术。微软公司总裁比尔盖茨先生在经过研究后认为"java语言是长时间以来最卓越的程序设计语言"。目前,java语言已经成为最流行的网络编程语言,截止到2001年中,全世界大约有310万java程序员,许多大学纷纷开设java课程,java正逐步成为世界上程序员最多的编程语言。

在经历了以大型机为代表的集中计算模式和以PC机为代表的分散计算模式之后,互联网的出现使得计算模式进入了网络计算时代。网络计算模式的一个特点是计算机是异构的,即计算机的类型和操作系统是不一样的,例如SUN工作站的硬件是SPARC体系,软件是UNIX中的Solaris操作系统,而PC机的硬件是INTEL体系,操作系统是windows或者是Linux,因此相应的编程语言基本上只是适用于单机系统,例如COBOL、FORTRAN、C、C++等等;网络计算模式的另一个特点是代码可以通过网络在各种计算机上进行迁移,这就迫切需要一种跨平台的编程语言,使得用它编写的程序能够在网络中的各种计算机上能够正常运行,java就是在这种需求下应运而生的。正是因为java语言符合了互联网时代的发展要求,才使它获得了巨大的成功。

1.1.2 java语言的产生

任何事物的产生既有必然的原因也有偶然的因素,java语言的出现也验证了这一点。1991年,美国Sun Microsystems公司的某个研究小组为了能够在消费电子产品上开发应用程序,积极寻找合适的编程语言。消费电子产品种类繁多,包括PDA、机顶盒、手机等等,即使是同一类消费电子产品所采用的处理芯片和操作系统也不相同,也存在着跨平台的问题。当时最流行的编程语言是C和C++语言,Sun公司的研究人员就考虑是否可以采用C++语言来编写消费电子产品的应用程序,但是研究表明,对于消费电子产品而言C++语言过于复杂和庞大,并不适用,安全性也并不令人满意。于是,Bill Joy先生领导的研究小组就着手设计和开发出一种语言,称之为Oak。该语言采用了许多C语言的语法,提高了安全性,并且是面向对象的语言,但是Oak语言在商业上并未获得成功。时间转到了1995年,互联网在世界上蓬勃发展,Sun公司发现Oak语言所具有的跨平台、面向对象、安全性高等特点非常符合互联网的需要,于是改进了该语言的设计,要达到如下几个目标:

◇ 创建一种面向对象的程序设计语言,而不是面向过程的语言;

◇ 提供一个解释执行的程序运行环境,是程序代码独立于平台;

◇ 吸收C和C++的优点,使程序员容易掌握;

◇ 去掉C和C++中影响程序健壮性的部分,使程序更安全,例如指针、内存申请和释放;

◇ 实现多线程,使得程序能够同时执行多个任务;

◇ 提供动态下载程序代码的机制;

◇ 提供代码校验机制以保证安全性;

最终,Sun公司给该语言取名为java语言,造就了一代成功的编程语。

1.2 java的工作原理

1.2.1 java虚拟机(1)

java虚拟机是软件模拟的计算机,可以在任何处理器上(无论是在计算机中还是在其它电子设备中)安全并且兼容的执行保存在.class文件中的字节码。java虚拟机的"机器码"保存在.class文件中,有时也可以称之为字节码文件。java程序的跨平台主要是指字节码文件可以在任何具有java虚拟机的计算机或者电子设备上运行,java虚拟机中的java解释器负责将字节码文件解释成为特定的机器码进行运行。java源程序需要通过编译器编译成为.class文件(字节码文件),java程序的编译和执行过程 ——如图所示——

1.2.1 java虚拟机(2)

但是,java虚拟机的建立需要针对不同的软硬件平台做专门的实现,既要考虑处理器的型号,也要考虑操作系统的种类。如下图所示,目前在SPARC结构、X86结构、MIPS和PPC等嵌入式处理芯片上、在UNIX、Linux、windows和部分实时操作系统上都有java虚拟机的实现。 ——如图所示——

1.2.2 无用内存自动回收机制

在程序的执行过程中,部分内存在使用过后就处于废弃状态,如果不及时进行无用内存的回收,就会导致内存泄漏,进而导致系统崩溃。在C++语言中是由程序员进行内存回收的,程序员需要在编写程序的时候把不再使用的对象内存释放掉;但是这种人为的管理内存释放的方法却往往由于程序员的疏忽而致使内存无法回收,同时也增加了程序员的工作量。而在java运行环境中,始终存在着一个系统级的线程,专门跟踪内存的使用情况,定期检测出不再使用的内存,并进行自动回收,避免了内存的泄露,也减轻了程序员的工作量。

1.2.3 代码安全性检查机制

安全和方便总是相对矛盾的。java编程语言的出现使得客户端机器可以方便的从网络上下载java程序到本机上运行,但是如何保证该java程序不携带病毒或者不怀有其它险恶目的呢?如果java语言不能保证执行的安全性,那么它就不可能存活到今天。虽然有时候少数程序员会抱怨说applet连文件系统也不能访问,但是正是各种安全措施的实行才确保了java语言的生存

字节码的执行需要经过三个步骤,首先由类装载器(class loader)负责把类文件(.class文件)加载到java虚拟机中,在此过程需要检验该类文件是否符合类文件规范;其次字节码校验器(bytecode verifier)检查该类文件的代码中是否存在着某些非法操作,例如applet程序中写本机文件系统的操作;如果字节码校验器检验通过,由java解释器负责把该类文件解释成为机器码进行执行。java虚拟机采用的是"沙箱"运行模式,即把java程序的代码和数据都限制在一定内存空间里执行,不允许程序访问该内存空间外的内存,如果是applet程序,还不允许访问客户端机器的文件系统。

1.2.4 Java语言的特点(1)

1.简单、面向对象和为人所熟悉

java的简单首先体现在精简的系统上,力图用最小的系统实现足够多的功能;对硬件的要求不高,在小型的计算机上便可以良好的运行。和所有的新一代的程序设计语言一样,java也采用了面向对象技术并更加彻底,所有的java程序和applet程序均是对象,封装性实现了模块化和信息隐藏,继承性实现了代码的复用,用户可以建立自己的类库。而且java采用的是相对简单的面向对象技术,去掉了运算符重载、多继承的复杂概念,而采用了单一继承、类强制转换、多线程、引用(非指针)等方式。无用内存自动回收机制也使得程序员不必费心管理内存,是程序设计更加简单,同时大大减少了出错的可能。java语言采用了C语言中的大部分语法,熟悉C语言的程序员会发现java语言在语法上与C语言极其相似。

2.鲁棒并且安全

java语言在编译及运行程序时,都要进行严格的检查。作为一种强制类型语言,java在编译和连接时都进行大量的类型检查,防止不匹配问题的发生。如果引用一个非法类型、或执行一个非法类型操作,java将在解释时指出该错误。在java程序中不能采用地址计算的方法通过指针访问内存单元,大大减少了错误发生的可能性;而且java的数组并非用指针实现,这样就可以在检查中避免数组越界的发生。无用内存自动回收机制也增加了java的鲁棒性。

作为网络语言,java必须提供足够的安全保障,并且要防止病毒的侵袭。java在运行应用程序时,严格检查其访问数据的权限,比如不允许网络上的应用程序修改本地的数据。下载到用户计算机中的字节代码在其被执行前要经过一个核实工具,一旦字节代码被核实,便由java解释器来执行,该解释器通过阻止对内存的直接访问来进一步提高java的安全性。同时java极高的鲁棒性也增强了java的安全性。

3.结构中立并且可以移植

网络上充满了各种不同类型的机器和操作系统,为使java程序能在网络的任何地方运行,java编译器编译生成了与体系结构无关的字节码结构文件格式。任何种类的计算机,只有在其处理器和操作系统上有java运行时环境,字节码文件就可以在该计算机上运行。即使是在单一系统的计算机上,结构中立也有非常大的作用。随着处理器结构的不断发展变化,程序员不得不编写各种版本的程序以在不同的处理器上运行,这使得开发出能够在所有平台上工作的软件集合是不可能的。而使用java将使同一版本的应用程序可以运行在所有的平台上。

体系结构的中立也使得java系统具有可移植性。java运行时系统可以移植到不同的处

理器和操作系统上,java的编译器是由java语言实现的,解释器是由java语言和标准C语言实现的,因此可以较为方便的进行移植工作。

1.2.4 Java语言的特点(2)

4.高性能

虽然java是解释执行的,但它仍然具有非常高的性能,在一些特定的CPU上,java字节码可以快速的转换成为机器码进行执行。而且java字节码格式的设计就是针对机器码的转换,实际转换时相当简便,自动的寄存器分配与编译器对字节码的一些优化可使之生成高质量的代码。随着java虚拟机的改进和"即时编译"(just in time)技术的出现使得java的执行速度有了更大的提高。

5.解释执行、多线程并且是动态的

如果你了解C语言和C++语言,可以参考下列java与C/C++语言的比较,如果不了解C语言和C++语言,可以忽略本部分知识。

a.全局变量

java程序不能定义程序的全局变量,而类中的公共、静态变量就相当于这个类的全局变量。这样就使全局变量封装在类中,保证了安全性,而在C/C++语言中,由于不加封装的全局变量往往会由于使用不当而造成系统的崩溃。

b.条件转移指令

C/C++语言中用goto语句实现无条件跳转,而java语言没有goto语言,通过例外处理语句try、catch、finally来取代之,提高了程序的可读性,也增强了程序的鲁棒性。

c.指针

指针是C/C++语言中最灵活,但也是最容易出错的数据类型。用指针进行内存操作往往造成不可预知的错误,而且,通过指针对内存地址进行显示类型转换后,可以类的私有成员,破坏了安全性。在java中,程序员不能进行任何指针操作,同时java中的数组是通过类来实现的,很好的解决了数组越界这一C/C++语言中不做检查的缺点。

d.内存管理

在C语言中,程序员使用库函数malloc()和free()来分配和释放内存,C++语言中则是运算符new和delete。再次释放已经释放的内存块或者释放未被分配的内存块,会造成系统的崩溃,而忘记释放不再使用的内存块也会逐渐耗尽系统资源。在java中,所有的数据结构都是对象,通过运算符new分配内存并得到对象的使用权。无用内存回收机制保证了系统资源的完整,避免了内存管理不周而引起的系统崩溃。

e.数据类型的一致性

在C/C++语言中,不同的平台上,编译器对简单的数据类型如int、float等分别分配不同的字节数。例如:int在IBM PC上为16位,在VAX-11上就为32位,导致了代码数据的不可移植。在java中,对数据类型的位数分配总是固定的,而不管是在任何的计算机平台上。因此就保证了java数据的平台无关性和可移植性。

f.类型转换

在C/C++语言中,可以通过指针进行任意的类型转换,不安全因素大大增加。而在java语言中系统要对对象的处理进行严格的相容性检查,防止不安全的转换。

g.头文件

在C/C++语言中使用头文件声明类的原型和全局变量及库函数等,在大的系统中,维护这些头文件是非常困难的。java不支持头文件,类成员的类型和访问权限都封装在一个类中,运行时系统对访问进行控制,防止非法的访问。同时,java中用import语句与其它类进行通信,以便访问其它类的对象。

h.结构和联合

C/C++语言中用结构和联合来表示一定的数据结构,但是由于其成员均为公有的,安全性上存在问题。java不支持结构和联合,通过类把数据结构及对该数据的操作都封装在类里面。

i.预处理

C/C++语言中有宏定义,而用宏定义实现的代码往往影响程序的可读性,而java不支持宏定义

为易于实现跨平台性,java设计成为解释执行,字节码本身包含了许多编译时生成的信息,使连接过程更加简单。而多线程使应用程序可以同时进行不同的操作,处理不同的事件。在多线程机制中,不同的线程处理不同的任务,互不干涉,不会由于某一任务处于等待状态而影响了其它任务的执行,这样就可以容易的实现网络上的实时交互操作。java在执行过程中,可以动态的加载各种类库,这一特点使之非常适合于网络运行,同时也非常有利于软件的开发,即使是更新类库也不必重新编译使用这一类库的应用程序。

1.2.5 java平台-不断扩展的计算平台

java不仅是编程语言,还是一个开发平台,java技术给程序员提供了许多工具:编译器、解释器、文档生成器和文件打包工具等等。同时java还是一个程序发布平台,有两种主要的"发布环境",首先java运行时环境(java runtime environment,简称JRE)包含了完整的类文件包,其次许多主要的浏览器都提供了java解释器和运行时环境。目前Sun公司把java平台划分成J2EE、J2SE、J2ME三个平台,针对不同的市场目标和设备进行定位。J2EE是Java2 Enterprise Edition,主要目的是为企业计算提供一个应用服务器的运行和开发平台。J2EE本身是一个开放的标准,任何软件厂商都可以推出自己的符合J2EE标准的产品,使用户可以有多种选择。IBM、Oracle、BEA、HP等29家已经推出了自己的产品,其中尤以BEA公司的weglogic产品和IBM公司的websphare最为著名。J2EE将逐步发展成为可以与微软的.NET战略相对抗的网络计算平台。J2SE是Java2 Standard Edition,主要目的是为台式机和工作站提供一个开发和运行的平台。我们在学习java的过程中,主要是采用J2SE来进行开发。J2ME是Java2 Micro Edition,主要是面向消费电子产品,为消费电子产品提供一个java的运行平台,使得java程序能够在手机、机顶盒、PDA等产品上运行。上述三个java平台的关系 如图所示

1.3 一切都是对象

篇四:JAVA语言基础教程

JAVA教程 第一讲 Java语言概述(4)

1.2.5 java平台-不断扩展的计算平台

java不仅是编程语言,还是一个开发平台,java技术给程序员提供了许多工具:编译器、解释器、文档生成器和文件打包工具等等。同时java还是一个程序发布平台,有两种主要的"发布环境",首先java运行时环境(java runtime environment,简称JRE)包含了完整的类文件包,其次许多主要的浏览器都提供了java解释器和运行时环境。目前Sun公司把java平台划分成J2EE、J2SE、J2ME三个平台,针对不同的市场目标和设备进行定位。J2EE是Java2 Enterprise Edition,主要目的是为企业计算提供一个应用服务器的运行和开发平台。J2EE本身是一个开放的标准,任何软件厂商都可以推出自己的符合J2EE标准的产品,使用户可以有多种选择。IBM、Oracle、BEA、HP等29家已经推出了自己的产品,其中尤以BEA公司的weglogic产品和IBM公司的websphare最为著名。J2EE将逐步发展成为可以与微软的.NET战略相对抗的网络计算平台。J2SE是Java2 Standard Edition,主要目的是为台式机和工作站提供一个开发和运行的平台。我们在学习java的过程中,主要是采用J2SE来进行开发。J2ME是Java2 Micro Edition,主要是面向消费电子产品,为消费电子产品提供一个java的运行平台,使得java程序能够在手机、机顶盒、PDA等产品上运行。上述三个java平台的关系

1.3 一切都是对象

1.3.1面向过程

面向对象的第一个原则是把数据和对该数据的操作都封装在一个类中,在程序设计时要考虑多个对象及其相互间的关系。有些功能并不一定由一个程序段完全实现,可以让其它对象来实现,在本例中就由类Max完成求最大值的功能。而面向对象的另外一个好处是实现代码的重复使用,例如其它的程序中如果需要求最大值的功能,只需要通过类Max的对象就可以达到目的。但是如果象面向过程的代码段那样把求最大值的算法都实现在该代码段

中,则无法复用

早期的编程语言如FORTRAN、C基本上都是面向过程的语言,其编程的主要思路专注于算法的实现。例如下面是一个面向过程的求正整数最大值的程序:

int maxSoFar=0,price=1; //最大值maxSoFar的初始值为0,price是输入的值 while(price>0){ //循环输入price的值

if (price>maxSoFar) //输入的值price大于最大值maxSoFar

maxSoFar=price; //则maxSoFar的值为price的值

String input=JoptionPane.showInputDialog("Enter the next price");

//继续输入price

price=Double.parseDouble(input); //把字符串input转换成整数price

}

System.out.println("The maximum is "+maxSoFar); //打印最大值maxSoFar

}

该程序段主要实现了求最大值的算法,但是,如果考虑用面向对象的编程,可以是另外一种方式:

Max max=new Max( ); //max是类Max的一个对象

while(price>0){

max.updateMax(price); //对象max调用updateMax方法,更新最大值 price=max.getPrice( ); //对象max调用getPrice获得下一个price的值

}

System.out.println("The maximum is "+max.getMax( ));//对象max调用getMax

方法获得最大值,并打印出来

1.3.2 面向对象

纯粹的面向对象程序设计方法是这样的:

1. 所有的东西都是对象。可以将对象想象成为一种新型变量,它保存着数据,而且还可以对自身数据进行操作。例如类Max中保留着数据的最大值,同时还有方法updateMax根据新加入的price值产生最新的最大值,还有getMax方法返回数据的最大值。

2. 程序是一大堆对象的组合。通过消息传递,各对象知道自己应该做些什么。如果需要让对象做些事情,则须向该对象"发送一条消息"。具体来说,可以将消息想象成为一个调用请求,它调用的是从属于目标对象的一个方法。例如上面面向对象的程序段应该是属于某个类的,比如说是属于类Shopping,则Shopping中就包含了类Max的对象max,调用方法updateMax就相当于Shopping对象对max对象发出一条指令"updateMax",要求对象max重新计算最大值。

3. 每个对象都有自己的存储空间。可容纳其它对象,或者说通过封装现有的对象,可以产生新型对象。因此,尽管对象的概念非常简单,但是经过封装以后却可以在程序中达到?a href="http://www.zw2.cn/zhuanti/guanyuwozuowen/" target="_blank" class="keylink">我飧叩母丛映潭取?/p>

4. 每个对象都属于某个类。根据语法,每个对象都是某个"类"的一个"实例"。一个类的最重要的的特征就是"能将什么消息发给它?",也就是类本身有哪些操作。例如max是类Max的实例。

JAVA教程 第一讲 Java语言概述(5)

1.4 构建java程序

1.4.1 第一个java application

java程序分为java application(java 应用程序)和java applet(java小应用程序)两种。下面让我们编写一个java应用程序,它能够利用来自java标准库的System对象的多种方法,打印出与当前运行的系统有关的资料。其中"//"代表一种注释方式,表示从这个符号开始到这行结束的所有内容都是注释。在每个程序文件的开头,如果这个文件的代码中用到了系统所提供的额外的类,就必须放置一个import语句。说它是额外的是指一个特殊的类库"java.lang"会自动导入到每个java文件

//这是我们的第一个java application,该程序保存在文件Property.java中

import java.util.*; /*下面我们用到了Date和Properties这两个类,是

属于java.util这个包的;*/

/*而System和Runtime这两个类,是属于

java.lang这个包的。*/

public class Property { //程序员给这个类取名为Property

public static void main(String args[]){ //main是类的主方法

System.out.println(new Date( )); //在命令行下面打印出日期

Properties p=System.getProperties( ); //获得系统的Properties对象p

p.list(System.out); //在命令行下打印出p中的各个系统变量的值

System.out.println("--- Memory Usage:"); /*打印一行字符串---Memory Usage*/ Runtime rt=Runtime.getRuntime( ); //获得系统的Runtime对象rt

System.out.println("Total Memory= "

+ rt.totalMemory( ) //打印总内存大小

+" Free Memory = "

+rt.freeMemory( )); //打印空闲内存大小

}

}

在java中,程序都是以类的方式组织的,java源文件都保存在以java为后缀的.java文件当中。每个可运行的程序都是一个类文件,或者称之为字节码文件,保存在.class文件中。而作为一个java application,类中必须包含主方法,程序的执行是从main方法开始的,方法头的格式是确定不变的:

public static void main(String args[])

其中关键字public意味着方法可以由外部世界调用。main方法的参数是一个字符串数组args,虽然在本程序中没有用到,但是必须列出来。

程序的第一行非常有意思:

System.out.println(new Date());

打印语句的参数是一个日期对象Date,而创建Date对象的目的就是把它的值发给println()语句。一旦这个语句执行完毕,Date对象就没用了,而后"无用内存回收器"会将其收回。

第二行中调用了System.getProperties( )。从帮助文档中可知,getProperties( )是System类的一个静态方法(static 方法),由于它是"静态"的,所以不必创建任何对象就可以调用该方法。在第三行,Properties对象有一个名为list( )的方法,它将自己的全部内容都发给一个PrintStream对象,该对象就是list()方法的参数。

第四行和第六行是典型的打印语句,其中第六行通过运算符"+"的重载来连接多个字符串对象,在java中只有当"+"运算符作用于字符串时在能够进行重载。但是让我们仔细观察下述语句:

System.out.println("Total Memory= "

+ rt.totalMemory( ) //打印总内存大小

+" Free Memory = "

+rt.freeMemory( )); //打印空闲内存大小

其中,totalMemory( )和freeMemory( )返回的是数值,并非String对象。如果将一个字符串与一个数值相加,结果会如何?在这种情况下,编译器会自动调用一个toString()方法,将该数值(int型或者float型)转换成字符串。经过这样处理以后,就可以用"+"进行字符串连接了。

main()的第五行通过调用Runtime的getRuntime()方法创建了一个Runtime对象,该对象中包含了内存等信息。

1.4.2 java程序的编辑

java程序的编辑可以使用任何一种文本编辑器,例如UltraEdit、Notepad、Wordpad甚至word,然后只要把编辑好的文件存成.java文件。当然也可以用一些集成开发环境,例如Borland公司的JBuilder,IBM公司的Visualage for Java,此外还有cafe、kawa等其它集成开发环境。下面两幅图分别是用UltraEdit和JBuilder编辑Property.java文件的情况

Sun公司为全世界的java程序员提供了一个免费的java程序开发包(Java Develop Kit,简称JDK),其中包括了java编译器命令"javac",以及java执行命令"java",还有帮助文档生成器命令"javadoc"等等。所有这些命令都可以在命令行下运行,例如我们要编译上述java文件Property.java,如果是在windows中进行开发,就可以在"命令提示符"下进行编译,在命令行中敲入"javac Property.java".

JAVA教程 第一讲 Java语言概述(6)

dev.firnow.com 时间 : 2010-06-07 作者:许斌 编辑:Mr.阿布 点击: 236 [ 评论 ] -

-

1.4.4 java application的执行

当编译结束以后,在java源文件中的每一个类都会生成相应的 .class 文件,例如上图中就会生成一个Property.class文件,而java程序在执行时调用的是.class 文件。Java application的执行是在命令行下进行的,如果是在windows系统中,就可以"命令提示符"下敲入"java Propery"进行执行,该"java"命令会启动java虚拟机,并读入Property.class文件进行执行。

由于该程序的运行结果直接在命令行下进行输出.

1.4.5 第一个java applet

java程序的另一种形式是java applet,applet没有main()方法,它必须嵌在超文本文件中,在浏览器中进行运行。右面这个程序将在浏览器中显示一行字符串.

篇五:java大学实用教程(第三版)课后答案

习题解答

第一章作业题

1.

public class Hello{

public static void main (String args[ ]){

System.out.pintln(“早上好,good Morning”);

}

}

2.

import java.applet.*;

import java.awt.*;

public class Boy extends Applet {

public void paint(Graphics g) {

g.setColor(Color.blue);

g.drawString("你好,hello",12,30); } }

第二章作业题

1.

public class ZuoYe2_1{

public static void main (String args[ ]){

char c='а';

System.out.println("字母"+c+"在unicode表中的顺序位置:"+(int)c); System.out.println("字母表:");

while(c<='я'){

System.out.print(" "+c);

c=(char)(c+1);

}

}

}

2.

import java.util.*;

public class ZuoYe2_2{

public static void main (String args[ ]){

Scanner reader=new Scanner(System.in);

long chengji=1;

int m=0;

while(reader.hasNextInt()){

int x=reader.nextInt();

m=m+1;

chengji=chengji*x;

}

System.out.println(m+"个数的乘积为"+chengji); }

}

第三章作业题

1.

import java.util.*;

public class ZuoYe3_1{

public static void main (String args[ ]){

Scanner reader=new Scanner(System.in);

double y=0,x=0;

x=reader.nextDouble();

if(x<0)

y=-1+2*x;

else if(x==0)

y=-1;

else if(x>0)

y=-1+3*x;

System.out.println(y);

}

}

2.

public class ZuoYe3_2{

public static void main(String args[]){

int sum=0,m=3,n=7,a=1;

while(a<=1000){

if(a%m==0&&a%n==0)

sum=sum+a;

a++;

}

System.out.println("sum="+sum);

}

}

3.

public class ZuoYe3_3

{

public static void main(String args[])

{

long sum=0,a=8,item=a,n=10,i=1;

for(i=1;i<=n;i++)

{ sum=sum+item;

item=item*10+a;

} System.out.println(sum); } }

4.

public class ZuoYe3_4

{

public static void main(String args[])

{

double sum=0,a=1,b=1,fuhao=1,item=a/b;

int i=1;

while(i<=1000)

{

sum=sum+fuhao*item;

i++;

fuhao=fuhao*(-1);

b=b+2;

item=a/b;

}

System.out.println("sum="+sum);

}

}

5.

public class ZuoYe3_5

{

public static void main(String args[])

{

double sum=0,a=1;

int i=1;

while(i<=20)

{

if(i>=10)

sum=sum+a;

i++;

a=a*i;

}

System.out.println("sum="+sum);

}

}

8.

第四章作业题

1.

class DengCha{

int start,d;

DengCha(){

}

DengCha(int start,int d){

this.start=start;

this.d=d;

}

void setStart(int s){

start=s;

}

void setD(int d){

this.d=d;

}

int getSum(int n){

int sum=0,i=1;

while(i<=n){

sum=sum+start;

start=start+d;

i++;

}

return sum;

}

}

public class ZuoYe4_1

{

public static void main (String args[ ])

{

DengCha shulie=new DengCha(2,3);

System.out.println(shulie.getSum(100));

shulie.setStart(10);

shulie.setD(5);

System.out.println(shulie.getSum(9));

}

}

2.

class Letter{

public void printLetter(){

for(char c='a';c<='z';c++)

System.out.print(" "+c);

}

}

public class ZuoYe4_2

{

public static void main (String args[ ])

{

Letter p=new Letter();

p.printLetter();

}

}

3.

class SquareEquation{

double a,b;

static double c;

double root1,root2;

boolean boo;

public SquareEquation(double a,double b,double c){ this.a=a;

this.b=b;

SquareEquation.c=c;

if(a!=0){

boo=true;

}

else{

boo=false;

}

}

public void getRoots(){

if(boo){

System.out.println("是一元2次方程");

double disk=b*b-4*a*c;

if(disk>=0){

root1=(-b+Math.sqrt(disk))/(2*a);

root2=(-b-Math.sqrt(disk))/(2*a);

System.out.printf("方程的根:%f,%f\n",root1,root2); }

else{

System.out.printf("方程没有实根\n");

}

}

else{

System.out.println("不是一元2次方程"); }

}

public void setCoefficient(double a,double b,double c){ this.a=a;

this.b=b;

小学作文