关于java 的一些问题

作者&投稿:东裘 (若有异议请与网页底部的电邮联系)
Java 中的几个类的问题~

从名字上看:
UserDAO数据层接口,上接服务层,下接数据库
UserDAOImpl 是UserDAO的实现类,具体操作数据库的
UserService服务层,上接用户层,下接数据层
UserServiceImpl 服务层UserService的实现类
User**Action用户层,根据用户请求调用service
比如,用户在网页上点击登录,我们把这个请求叫login吧
User**Action会接到这个action请求,发现这是个登陆请求login,这里可以进行一下初步的验证,比如用户名格式,密码格式,如果没问题,那么它就调用service中的login登陆方法,在UserServiceImpl进行验证,比如用户名和密码是否正确。怎么验证呢?UserServiceImpl会调用DAO层的方法,DAO会从数据库中查询。
例如用户是张三,密码是111,的用户登录了
User**Action接到请求,请求类型是login,用户名张三,密码111,
做初步判断,用户名不是空的,密码不是空的,格式正确,好,调用service中的方法,传递参数是张三和111
service接到命令,调用DAO的方法,传递参数张三,DAO链接数据库,根据张三这个用户名查到用户信息(包括用户密码),如果没有,证明用户名写错了或者没注册。如果有,那么把结果返回给service
service接到返回的内容,看一下DAO返回的密码是不是111,如果是,那就登陆成功,如果不是,提示密码错误。将处理结果返回给User**Action,
User**Action接到返回结果,在显示到页面上给用户看。
你也可以问为什么分这么多层?不一起直接写?
可以直接写,但是很乱。这样分层,把逻辑都分割,很多地方都可以共用。
还拿登陆和注册来说,登陆的时候要用到根据用户名查询细信息,注册的时候也要判断用户名是否存在。如果你不分层,都写在User**Action里,是不是同样的代码要写两次呢?
而且出了问题也不好查找出在哪里。比如404错误,通常是找不到页面,可以很快的知道是在User**Action里面,数据库操作错误,马上就知道是在DAO里面

1. java.lang.nullpointerexception
这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话)

2. java.lang.classnotfoundexception
这个异常是很多原本在jb等开发环境中开发的程序员,把jb下的程序包放在wtk下编译经常出现的问题,异常的解释是"指定的类不存在",这里主要考虑一下类的名称和路径是否正确即可,如果是在jb下做的程序包,一般都是默认加上package的,所以转到wtk下后要注意把package的路径加上。

3. java.lang.arithmeticexception
这个异常的解释是"数学运算异常",比如程序中出现了除以零这样的运算就会出这样的异常,对这种异常,大家就要好好检查一下自己程序中涉及到数学运算的地方,公式是不是有不妥了。

4. java.lang.arrayindexoutofboundsexception
这个异常相信很多朋友也经常遇到过,异常的解释是"数组下标越界",现在程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常。

5. java.lang.illegalargumentexception
这个异常的解释是"方法的参数错误",很多j2me的类库中的方法在一些情况下都会引发这样的错误,比如音量调节方法中的音量参数如果写成负数就会出现这个异常,再比如g.setcolor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常,因此一旦发现这个异常,我们要做的,就是赶紧去检查一下方法调用中的参数传递是不是出现了错误。

6. java.lang.illegalaccessexception
这个异常的解释是"没有访问权限",当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了package的情况下要注意这个异常。

其他还有很多异常,我就不一一列举了,我要说明的是,一个合格的程序员,需要对程序中常见的问题有相当的了解和相应的解决办法,否则仅仅停留在写程序而不会改程序的话,会极大影响到自己的开发的。关于异常的全部说明,在api里都可以查阅。

算术异常类:ArithmeticExecption

空指针异常类:NullPointerException

类型强制转换异常:ClassCastException

数组负下标异常:NegativeArrayException

数组下标越界异常:ArrayIndexOutOfBoundsException

违背安全原则异常:SecturityException

文件已结束异常:EOFException

文件未找到异常:FileNotFoundException

字符串转换为数字异常:NumberFormatException

操作数据库异常:SQLException

输入输出异常:IOException

方法未找到异常:NoSuchMethodException

java.lang.AbstractMethodError

抽象方法错误。当应用试图调用抽象方法时抛出。

java.lang.AssertionError

断言错。用来指示一个断言失败的情况。

java.lang.ClassCircularityError

类循环依赖错误。在初始化一个类时,若检测到类之间循环依赖则抛出该异常。

java.lang.ClassFormatError

类格式错误。当Java虚拟机试图从一个文件中读取Java类,而检测到该文件的内容不符合类的有效格式时抛出。

java.lang.Error

错误。是所有错误的基类,用于标识严重的程序运行问题。这些问题通常描述一些不应被应用程序捕获的反常情况。

java.lang.ExceptionInInitializerError

初始化程序错误。当执行一个类的静态初始化程序的过程中,发生了异常时抛出。静态初始化程序是指直接包含于类中的static语句段。

java.lang.IllegalAccessError

违法访问错误。当一个应用试图访问、修改某个类的域(Field)或者调用其方法,但是又违反域或方法的可见性声明,则抛出该异常。

java.lang.IncompatibleClassChangeError

不兼容的类变化错误。当正在执行的方法所依赖的类定义发生了不兼容的改变时,抛出该异常。一般在修改了应用中的某些类的声明定义而没有对整个应用重新编译而直接运行的情况下,容易引发该错误。

java.lang.InstantiationError

实例化错误。当一个应用试图通过Java的new操作符构造一个抽象类或者接口时抛出该异常.

java.lang.InternalError

内部错误。用于指示Java虚拟机发生了内部错误。

java.lang.LinkageError

链接错误。该错误及其所有子类指示某个类依赖于另外一些类,在该类编译之后,被依赖的类改变了其类定义而没有重新编译所有的类,进而引发错误的情况。

java.lang.NoClassDefFoundError

未找到类定义错误。当Java虚拟机或者类装载器试图实例化某个类,而找不到该类的定义时抛出该错误。

java.lang.NoSuchFieldError

域不存在错误。当应用试图访问或者修改某类的某个域,而该类的定义中没有该域的定义时抛出该错误。

java.lang.NoSuchMethodError

方法不存在错误。当应用试图调用某类的某个方法,而该类的定义中没有该方法的定义时抛出该错误。

java.lang.OutOfMemoryError

内存不足错误。当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误。

java.lang.StackOverflowError

堆栈溢出错误。当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误。

java.lang.ThreadDeath

线程结束。当调用Thread类的stop方法时抛出该错误,用于指示线程结束。

java.lang.UnknownError

未知错误。用于指示Java虚拟机发生了未知严重错误的情况。

java.lang.UnsatisfiedLinkError

未满足的链接错误。当Java虚拟机未找到某个类的声明为native方法的本机语言定义时抛出。

java.lang.UnsupportedClassVersionError

不支持的类版本错误。当Java虚拟机试图从读取某个类文件,但是发现该文件的主、次版本号不被当前Java虚拟机支持的时候,抛出该错误。

java.lang.VerifyError

验证错误。当验证器检测到某个类文件中存在内部不兼容或者安全问题时抛出该错误。

java.lang.VirtualMachineError

虚拟机错误。用于指示虚拟机被破坏或者继续执行操作所需的资源不足的情况。

java.lang.ArithmeticException

算术条件异常。譬如:整数除零等。

java.lang.ArrayIndexOutOfBoundsException

数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。

java.lang.ArrayStoreException

数组存储异常。当向数组中存放非数组声明类型对象时抛出。

java.lang.ClassCastException

类造型异常。假设有类A和B(A不是B的父类或子类),O是A的实例,那么当强制将O构造为类B的实例时抛出该异常。该异常经常被称为强制类型转换异常。

java.lang.ClassNotFoundException

找不到类异常。当应用试图根据字符串形式的类名构造类,而在遍历CLASSPAH之后找不到对应名称的class文件时,抛出该异常。

java.lang.CloneNotSupportedException

不支持克隆异常。当没有实现Cloneable接口或者不支持克隆方法时,调用其clone()方法则抛出该异常。

java.lang.EnumConstantNotPresentException

枚举常量不存在异常。当应用试图通过名称和枚举类型访问一个枚举对象,但该枚举对象并不包含常量时,抛出该异常。

java.lang.Exception

根异常。用以描述应用程序希望捕获的情况。

java.lang.IllegalAccessException

违法的访问异常。当应用试图通过反射方式创建某个类的实例、访问该类属性、调用该类方法,而当时又无法访问类的、属性的、方法的或构造方法的定义时抛出该异常。

java.lang.IllegalMonitorStateException

违法的监控状态异常。当某个线程试图等待一个自己并不拥有的对象(O)的监控器或者通知其他线程等待该对象(O)的监控器时,抛出该异常。

java.lang.IllegalStateException

违法的状态异常。当在Java环境和应用尚未处于某个方法的合法调用状态,而调用了该方法时,抛出该异常。

java.lang.IllegalThreadStateException

违法的线程状态异常。当县城尚未处于某个方法的合法调用状态,而调用了该方法时,抛出异常。

java.lang.IndexOutOfBoundsException

索引越界异常。当访问某个序列的索引值小于0或大于等于序列大小时,抛出该异常。

java.lang.InstantiationException

实例化异常。当试图通过newInstance()方法创建某个类的实例,而该类是一个抽象类或接口时,抛出该异常。

java.lang.InterruptedException

被中止异常。当某个线程处于长时间的等待、休眠或其他暂停状态,而此时其他的线程通过Thread的interrupt方法终止该线程时抛出该异常。

java.lang.NegativeArraySizeException

数组大小为负值异常。当使用负数大小值创建数组时抛出该异常。

java.lang.NoSuchFieldException

属性不存在异常。当访问某个类的不存在的属性时抛出该异常。

java.lang.NoSuchMethodException

方法不存在异常。当访问某个类的不存在的方法时抛出该异常。

java.lang.NullPointerException

空指针异常。当应用试图在要求使用对象的地方使用了null时,抛出该异常。譬如:调用null对象的实例方法、访问null对象的属性、计算null对象的长度、使用throw语句抛出null等等。

java.lang.NumberFormatException

数字格式异常。当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常。

java.lang.RuntimeException

运行时异常。是所有Java虚拟机正常操作期间可以被抛出的异常的父类。

java.lang.SecurityException

安全异常。由安全管理器抛出,用于指示违反安全情况的异常。

java.lang.StringIndexOutOfBoundsException

字符串索引越界异常。当使用索引值访问某个字符串中的字符,而该索引值小于0或大于等于序列大小时,抛出该异常。

java.lang.TypeNotPresentException

类型不存在异常。当应用试图

Java的起源
计算机发展需要2哥基本因素的驱动:
适应不断变化的环境和需求;
编程艺术的不断完善与提高
Java的由来
语法继承了c,面向对象的特性继承了c++,而且Java语言的产生与过去几十年计算机编程语言的改进和发展密切相关,语言设计的每一次革新是因为旧的语言无法解决某个基本问题所引起的,Java也不例外。
C
替代汇编语言,开发系统程序 特性:易用性和功能 安全性和效率 稳定性和可扩展性FORTRAN:科学计算应用方面可以编写出相当高效的程序,但它不适合编写系统程序,BASIC虽然易学,但功能不够强大,并且谈不上结构化,应用到大程序令人怀疑,汇编语言虽能写出高效率的程序,但是学习或者高效地使用不容易,而且调试汇编程序也相当困难。
早期设计的计算机语言(如BASIC、COBOL、FORTRAN)没有考虑结构化,使用GOTO语句,这样做的结果是一大堆混乱的跳转语句和条件分支语句使得程序几乎不可能被读懂。Pascal虽然是结构化语言,但它的设计效率较低,而且缺少几个必需的特性,因而无法在大的编程范围内使用。20世纪70年代初期,计算机革命开始,使用早期语言进行软件开发无法满足这种需求,当然硬件资源充足,是促使c诞生的一个也许最重要的因素。
Dennis Ritchie在运行UNIX操作系统的DECPDP-11上发明并首次实现了c,而Martin Richards设计的BCPL语言导致了c语言开发成功受BCPL影响,由Brian Kernighan 发明的B语言也逐渐向c语言发展演变,在此后的许多年里,Brian Kernighan和Dennis Ritchie编写的The C Programming Language(Prentice-Hall,1978)被认为是事实上的C语言标准,89年12月美国国家标准化组织(ANSI)制定了C语言的标准。
C语言的特性由实际运用该语言的人们不断提炼、测试、思考、再思考使其成为程序员们喜欢使用的语言。
C++:更上一层楼
20世纪70年代末和80年代初,C语言成为主流计算机编程语言,至今仍被广泛使用,你也许会问,既然C是一种如此成功且有用的语言,为什么还需要新的计算机语言?答案是:复杂性,纵观编程的历史,正是程序日益增加的复杂性驱使人们寻求管理复杂性的更好方法。c++正是适应了这一需求,为什么管理程序复杂性是C++产生的基本条件呢?
计算机出生:面板触发器(人工打孔)——》对于只有几百行的程序,这种办法是可行的,随着程序不断变大,人们发明汇编语言,它使用符号来代替机器指令,这样程序员就能处理更大更复杂的程序,随着程序进一步变大,高级语言产生了,它给程序员提供了更多的工具来处理复杂性问题。20世纪80年代初,许多工程项目都令结构化方法到达了极限。为解决这个问题,一种面向对象编程的新编程方法诞生,在这里先给出一个简短的定义:面向对象的编程是通过使用继承性、封装性和多态性来组织复杂程序的编程方法。
尽管C伟大,但是处理复杂性的能力有限。一旦一个程序的代码超过25000~100000行,就因为过于复杂从而很难把握,C++突破了这个限制,可以帮助程序员理解和管理更大的程序。
1979年Bjiarne Stroustrup发明C++,最初成为带类的C,83年改名C++,通过增加面向对象的特性扩充了C。因为C++建立在C的基础之上,所以包括C的所有特性、属性和优点,这是C++作为一种语言的成功的关键原因,发明C++不是企图创造一种全新的编程语言,相反,它是对一个已经高度成功的语言的改进。
Java出现的时机已经到来
20世纪80年代末和90年代初,使用面向对象编程的C++语言占主导地位,甚至有一段时间程序员似乎都认为已经找到了一种完美的语言。然而,推动计算机语言进化的力量正在酝酿。在随后的几年里,万维网和Internet事件促成了编程的另一场革命。
Java诞生
Java是由Jamcs Gosling、Patrick Naughton、Chris Warth、Ed Frank 和Mike Sheridan于1991年在Sun Microsystems公司设计出来,最初推动力并非Internet而是源于对独立于平台语言的需要,这种语言可开发能嵌入微波炉、遥控器等各种家用电器设备软件。用作控制器的CPU是多种多样的,但是c和c++(以及其他绝大多数语言)的缺点是只能对特定目标进行编译。尽管为任何类型的cpu是多种多样的,但c和c++的缺点只能对特定目标进行编译,尽管为任何类型的cpu编译c++程序是可能的,但是需要一个完整的以该cpu为目标的c++编译器,而创建编译器是一项既耗费又耗时的工作,因此需要一种简单且更为经济高效的解决方案。为了找到这种方案,Gosling和其他人一起致力于开发一种致力于开发一种可移植的、平台独立的语言,该语言能够生成运行于不同环境、不同cpu上的代码,他们的努力最终促成了Java的诞生。
www诞生对java的未来起到至关重要的作用
Java与C++不兼容,对Java影响最大的是c#,二者使用相同的语法,而且均支持分布式程序设计,使用相同的对象模型等。
Java对Internet重要性
二者互补原因简单,Java扩展了可以在电脑空间自由流动的对象的世界在网络中有两大类对象在服务器和个人计算机之间传输:被动的信息和动态的、主动的程序例如,当阅读电子邮件时,是在看被动的数据,甚至当你下载一个程序时,该程序的代码也是被动的数据,直到你执行它为止。可以传输到个人计算机的另一类对象是动态的,自运行的程序,虽然这类程序是客户机上的活动代理,但却是由服务器来初始化的例如,服务器提供用来正确地显示服务器传送数据的程序。网络程序在动态上是令人满意的,但是在可移植上和安全性上却带来了严重的问题,在java出现之前有一半以上的电脑实体无法进入网络世界,是java为它们打开了便利之门,而且在这个过程中定义了一种全新的程序形式:applet(小应用程序)
Java applet
applet是可以在Internet中传输并可以兼容Java的web浏览器中运行的特殊Java程序,applet可以随需下载,就像图像、声音文件和视频文件。换句话说,它能对用户的输入做出反应,并且能动态的变化,而不是一遍又一遍地播放同一动画或声音。
如果java不能解决两个关于applet最棘手的问题:安全性和可移植性,那么applet就不会如此令人激动了
安全性
众所周知,每次下载一个正常的程序时,都要冒着被病毒感染的危险,在java出现之前,大多数用户并不经常下载可执行的程序文件,即使下载也要进行病毒检查,尽管如此,大多数用户还是担心,除了病毒还有恶意程序也要警惕,这种程序通过搜索计算机本地文件系统的内容来收集你的私人信息,例如信用卡号码,银行账户结算和口令而Java在网络应用程序和用户的计算机之间提供了一道防火墙(firewall),消除了用户这些顾虑
将java程序编译成字节码有助于更容易地在一个大的范围环境下运行程序原因非常简单,只要在各种操作平台上实现java虚拟机就可以了。在一个给定的系统中,只要系统运行时包存在,任何java程序就可以在该系统上运行。记住,尽管不同平台的java虚拟机的细节有所不同,但它们都理解相同的java字节码,如果java程序被编译为本机代码,那么对于连接到Internet上的每种cpu类型都要有该程序的对应版本,这当然不是一种可行的解决方案。因此,通过JVM执行字节码是编写真正可移植性程序最容易的方法
JVM执行java程序有助于提高安全性,因为 jvm控制java程序的运行,所以它可以包含这个程序并且能阻止它在系统之外产生负作用,而java语言特有的某些限制增强了它的安全性
java专门用语
简单(simple)安全(secure)可移植(Portable)面向对象(Object-oriented)健壮(Robust)多线程(Multithread)体系结构中立(Architecture-neutral)解释执行(Interpreted)高性能(High perforance分布式(Distributed)动态(Dynamic)
健壮性:先考虑使程序失败的两个重要原因:内存管理错误,和误操作引起的异常情况(运行时错误)。在传统的编程环境下,内存管理是一项困难乏味的任务。例如:在c++/c中程序员必须手工分配和释放所有的动态内存。就会出现问题,因为程序员可能忘记释放原来分配的内存,或者释放了其他正在使用的内存,而通过Java管理内存分配和释放,可以从根本上消除这些问题(事实上释放内存是完全自动的,因为Java为闲置的对象提供了内存垃圾自动收集)。在传统的环境下,异常情况可能经常由“除零”或“文件未找到”这样的情况所引起,而我们又必须用既笨拙又难以理解的一大堆指令来对它们进行管理,Java通过提供面向对象的异常处理机制解决这个问题。在编写良好的Java程序中,所有的运行时错误都可以并且应该有程序自身进行管理
多线程
设计Java的目标之一是满足人们对创建交互式网络程序的需要,为此,Java支持多线程编程,因而用Java编写的应用程序可以同时执行多个任务,Java运行时系统在多线程同步方面具有成熟的解决方案,能够创建出运行平稳的交互式系统,Java的多线程机制非常好用,所以只需关注程序特定的行为,不用担心多任务子系统
体系结构中立
Java设计者考虑主要问题是程序代码的持久性和可移植性。程序员面临的问题是不能保证今天的程序明天能否在同一台机器上顺利运行。操作系统升级、处理器升级以及核心系统资源的变化,都可能导致程序无法继续运行,Java设计者对这个问题做过多种尝试,Java虚拟机就是用来解决这个问题的。它们的目标是“只要写一次程序,在任何地方、任何时间该程序永远都能执行”这在很大程度上,Java实现了这个目标
解释执行和高性能
前面说过,通过把程序编译为Java字节码,Java可以产生跨平台运行的程序。该代码可以在提供Java虚拟机的任何一种系统上执行,其他的跨平台解决方案对性能要求都很高,而Java的字节码经过设计后,很容易用JIT编译器将字节码直接转换成高性能的本机代码,Java运行时,系统在提供这个特性的同时仍具有平台独立性
分布式
Java是为Internet的分布式环境而设计,因为它能处理TCP/IP协议事实上,通过URL地址访问资源与直接访问一个文件的差别并不太大。Java还支持远程方法调用(Remote Method Invocation,RMI)使程序能够跨网络调用方法。
动态:
Java程序带有多种运行时类型信息,用于在运行时校验和解决对象访问问题。这使得在一种安全,有效的方式下动态地链接代码成为可能,同时对applet环境的健壮性十分重要,因为在运行的系统中,可以动态地更新字节码内的小段程序
java的演化
Java的最初发布本不亚于一场革命,但是它并不标志着Java快速革新时代的结束。与其他软件系统经常进行小的改进不同,Java以爆炸式的步伐向前发展。Java1.0发布后不久,Java的设计者开发出了Java1.1Java1.1新增的特性远比普通意义上的版本修订的内容丰富许多,Java1.1增加了许多新的库元素,重新定义了applet处理事件的方法,并且重新设置了1.0版中库的许多特性,同时它也放弃了原来的由Java1.0定义的若干过时的特征。
java的第二个版本是java2,“2”代表是第二代,java2是一个分水岭,它标志着java现代时的开始!java2第一版本号是1.2,其原因是1.2最初指的是java库的内部版本号,后来才用作整个发行版。Sun公司将其java产品重新组装为J2SE(java2平台标准版)
java2增加了很多新特性,例如Swing和集合框架(collection framework),并且还提高了java虚拟机和各种编程工具的性能。java2也包含了一些不赞成继续使用的内容主要是Thread类中suspend()、resume()和stop()等方法
Java下一个版本是J2SE1.3这个版本是Java2最初版本的第一次主要升级。该版本增强了Java大部分现有的功能,并且限制了开发环境。总的说来。版本1.2和1.3的程序源代码是兼容的
J2se1.4发布进一步增强了java此发行版包括了许多重要的升级、改进和新增功能例如,新增了关键词assert、链式异常和一个基于心道的i/o子系统,它同时对集合框架和网络类作乐改动。另外还有不计其数的小改动贯穿其中。尽管引进了很多新功能,但版本1.4几乎与先前版本几乎保持了百分之百的源代码兼容。Java的最新版本是J2se 5,它无疑是另一场革命!
J2SE最新版本是J2SE5,它无疑是另一场革命!
J2SE5革命
是java生命里程碑上一个重要的事件。与java先前大多数升级不同,j2se5提供的不是递增式的改进,而是从根本上拓展了java语言的作用域,功能和范围,java的任何一次发行都无法与J2SE5相提并论。为了领会关注一下新特性
泛型 冗数据 自动装箱和自动拆箱(Autoboxing和Auto-unboxing)枚举 增强的for-each风格的for循环 变长参数 静态导入 格式化I/O 并行工具 对API的升级
上述这些特性不是枝节的改动和递增式的升级,每一项都代表着对java语言的重大引进。比如泛型。增强的for循环类型,和变长参数,引进了新的语法元素,自动装箱和自动拆箱,改变了java的语言的句法冗数据将一种全新的标准引入到编程领域,所有这些新增特性,不仅造成了直接影响,而且还改变了java本身的基本特性
这些新增的特性重要性反映了在版本号“5”的才用上,下一个版本号正常情况应为1.5,但这些变化和新增的特性是在是太重要了仅从1.4转向1.5不足以说明变化之大,因此,Sun公司选择将发行号增至5来强调,当前产品被称为J2SE 5,开发者工具箱被称为JDK 5,不过处于维持一致性的考虑,Sun决定将内部版本号定为1.5,即“5”是外部版本号,“1.5”是内部版本号。
文化革新
从一开始,Java就处于文化革新的中心位置。它的第一个发行版重新定义了面向Internet的程序设计,Java虚拟机(JVM和字节码)改变了我们对安全性和可移植性的认识,applet(包括其后的servlet)给Web带来了盎然生机,Java社区项目重新定义了Java语言吸收新理念的方式,Java世界从来都不是静止不前一成不变的。
随着J2SE的发行,Java又一次获得涅馨,适应了变化莫测的编程前景的需求,也又一次成功地站到了计算机语言设计领域的最前沿。


德州市18645546581: java的一些问题!急!帮助!十分感谢. -
岛南安神: 1.是同一父类2.可以又抽象方法3.不一定,private修饰的变量和方法不可被子类继承,在子类中可以增加子类的变量和方法3.(你写重复了)所有子类在产生对象是,都会默认去调用父...

德州市18645546581: 关于java编程的小问题
岛南安神: 首先 你得了解java中类是怎么使用的 库其实就是由一些现成的类,接口,异常组成.先不去看接口和异常,库中的类的使用方法和自定义的类的使用方法是一样的 比如你举例的String类中的 length()方法 它不是一个静态方法 所以你必须先实...

德州市18645546581: 关于java一些小问题.大虾进.
岛南安神: 这不是java的小问题,很多人在学的过程中,都会犯这样的问题 有的人学了C,C++,C# ,然后有学java 学到头,都还不知道自己学的东西能做什么 现在我给你讲一下java的流程: java可以分为: 1、java ee (又叫J2EE ):主要做Web开发 2、...

德州市18645546581: 新手关于Java的一些问题高手帮忙
岛南安神: 1.println()是输出后在多输出一个“\n”换行符,print()没有,所以println()输出后会重新换行输出第二个println()输出的内容.2.具体情况来看,所有的字符串常量都应该加上双引号.3.输出并换行.4.i*j 的结果转换成字符串输出5.返回上一层目录: cd ..(cd后带两点) 返回根目录:cd \6.子函数运行后返回主函数的数据,子函数可以没有返回值7. 方法名是随便起的,不过需要重载方法,方法名必须与需要重载的方法名称一致

德州市18645546581: JAVA的一些基础问题
岛南安神: 先回答 JAVA中reader和writer是怎么用的 一般在什么情况下使用: InputStream叫输入类,是因为它要把要需要读取的内容转化成输入流,再从它那里进行读取, 而OutputStream叫输出类,是因为它首先需要与写入的目的地相关联,然后通过它进行写入. 输入是:把要读取的内容输入到输入流,在从输入流进行读取,所以是read(). 输出是:把要输出的东西通过输出流输出到目的地,所以是write(). 一般是在对文件进行读写的时候用到的....

德州市18645546581: java的一些问题,求解答 -
岛南安神: 1、类的实例成员变量(又叫属性,属性和数据压根是两个东西,没关系,不要混淆概念)不管有没有显示初始化,建立的对象都是有初始值的(没有初始化的,初始值是该类型的默认值,如int是0,引...

德州市18645546581: 关于java的一些初级问题 -
岛南安神: 1 类中的方法也是占用相同的空间,调用时根据不同的实例对象而不同,是这样的吗?是这样的,和成员变量不同,同一个方法对于相同类不同的对象来说是一样的,使用时调用就行,没有必要每个对象...

德州市18645546581: 一些java问题,望高手指教 -
岛南安神: 1,在java的反射机制里方法参数变量都可以被实例化,不过我觉得你问的应该不是这么高深的,java中只有8个基本数据类型在初始化的时候直接用关键字就可以,其他的包括String类型都是需要使用或者间接使用new关键字(有些工厂模式new...

德州市18645546581: 关于java的常识问题,我想问几下.麻烦路过人帮忙,小弟不胜感激 .
岛南安神: 局限性不好说 因为java使用jvm(java虚拟机)所以它是对jvm依赖的 但是也是因为如此,他不再需要依赖于操作系统,从而实现跨操作系统平台. 但是以为他不依赖于操作系统,所以一些针对于操作系统的底层操作受到限制,没有c和c++,汇编等进行底层开发 不过java可以通过jni(Java Native Interface)调用c等其他代码来完成底层操作,不过也就损失了java的跨平台性

德州市18645546581: java里的一些问题... -
岛南安神: 不光for,if,else,case等等都会遇到 {}表示里面的是一个整体,编译的时候当成一个代码段来编译 比如 for(;;){ 语句A;语句B;} for循环执行N次,语句A,B都会执行N次 for(;;) 语句A;语句B;这么写的话,for循环执行N次,语句A会执行N次,语句B只执行一次.如果你在语句B的位置有引用for循环里定义的变量,如i等,就会报错.当然有时候是编译器抽筋,其实写{}是一个好的习惯,帮助编译器,更好的知道你想做什么

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网