仓酷云

标题: JAVA网页编程之JAVA程序员必读:基本篇(5) [打印本页]

作者: 再见西城    时间: 2015-1-18 11:55
标题: JAVA网页编程之JAVA程序员必读:基本篇(5)
手机用到的是用j2me所编出来的小程序。程序|程序员JAVA程序员必读:基本篇工夫:2001/09/1313:31ZSC宁靖洋收集学院

 
2.4实例和类成员

2.4.1了解实例和类成员

上面具体会商一下实例和类成员,详细触及变量和办法和类变量和办法:

你如许声明一个成员变量,好比在类Myclass中有一个float型的aFloat:

classMyClass{

floataFloat;

}

如许你就声明一个实例变量。每次你创立一个类的实例的时分,体系就为实例创立了类的每个实例变量的正本。你能够从对象中会见对象的实例变量。

实例变量跟类变量是纷歧样的,类变量示利用静态修正量来声明的。不论类创立了几个实例,体系为每一个类变量分派了类变量。体系为类变量分派的内存是在它第一次挪用类的时分产生的。一切的实例共享了类的类变量的不异正本。你能够经由过程实例大概经由过程类自己来会见类变量。

它们的办法是相似的:你的类能够有实例办法和类办法。实例办法是对以后对象的实例变量举行操纵的,并且会见类变量。别的一个办法,类办法不克不及会见界说在类中的实例变量,除非它们创立一个新的对象并经由过程对象来会见它们。一样,类办法能够在类中被挪用,你不用必要一个实例来挪用一个类办法。

缺省地,除非别的的成员被指定,一个界说在类中成员就是一个实例成员。这个鄙人面界说的类有一个实例变量,有一个整型的x,两个实例办法x和setX,它们设置别的对象和查询x的数值。

classAnIntegerNamedX{

intx;

publicintx(){

returnx;

}

publicvoidsetX(intnewX){

x=newX;

}

}

每次你从一个类实例化一个新的对象,你能够失掉每一个类的实例变量的正本。这些正本都是跟新对象有干系的。因而,每次你从这个类实例化一个新的AnIntegerNamedX对象的时分,你得以失掉跟新的AnIntegerNamedX对象有关的新正本。

一个类的一切实例共享一个实例办法的不异的实施;一切的AnIntegerNamedX实例都共享x和setX的不异实行。这里注重,两个办法x和setX是指对象的实例变量x。可是,你大概会问:假如一切AnIntergerNamedX共享x和setX的不异实行,会不会形成不置可否的形态?谜底固然是:不是。在实例办法中,实例变量的名字是指以后对象的实例变量,假设实例变量不是由一个办法参数来埋没的。如许在x和setX中,x就等价于这个x,而不会形成凌乱。
关于AnIntegerNamedX内部的对象假如想会见x,它必需经由过程特定的AnIntegerNamedX的实例来完成。假设这个代码片断处在别的对象的办法中。它创立了两种分歧范例的AnIntegerNamedX,它设置了x为分歧的数值,然后显现它们:

AnIntegerNamedXmyX=newAnIntegerNamedX();

AnIntegerNamedXanotherX=newAnIntegerNamedX();

myX.setX(1);

anotherX.x=2;

System.out.println("myX.x="+myX.x());

System.out.println("anotherX.x="+anotherX.x());

这里注重,代码利用setX来为myX设置x的值,而间接给anotherX.x指定一个数值。不论用甚么办法,代码是在操纵两个分歧的x正本:一个包括在myX对象中一,别的一个包括在anotherX对象中。其输入是用以下代码片断来完成的:

myX.x=1

anotherX.x=2

下面代码显现了类AnIntegerNamedX的每个实例有本人实例变量x的正本和每一个x有本人的数值。

你能够在声明成员变量的时分,指定变量是一个类变量而不是一个实例变量。类似地,你能够指定办法是一个类办法而不是一个实例办法。体系在第一次挪用类来界说变量的时分创立了一个类变量的正本。一切的类实例共享了类变量的不异正本。类办法能够只操纵类变量,它们不克不及会见界说在类中的实例变量。

为了指定一个成员变量为一个类变量,你可使用static关头字。好比,我们能够修正一下下面的AnIntegerNamedX类,使得x变量如今是一个类变量:

classAnIntegerNamedX{

staticintx;

publicintx(){

returnx;

}

publicvoidsetX(intnewX){

x=newX;

}

}

如今设置它们的x数值并显现分歧的输入:

myX.x=2

anotherX.x=2

此次的输入分歧,是由于x如今是一个类变量,以是就只要这个变量的正本,它是被AnIntegerNamedX的一切实例所共享的,包含myX和anotherX。当你在别的实例中挪用setX的时分,你能够为一切的AnIntegerNamedX的一切实例改动x的数值。

一样,当我们声明一个办法的时分,你能够指定办法为类办法而不是实例办法。类办法只能够在类变量中举行操纵,而且不克不及会见界说在类中的一切实例变量。

为了指定办法为类办法,你能够在办法声明处利用static关头字。上面,我们再次来修正AnIntegerNamedX类,使它的成员变量x为一个实例变量,和它的两个办法为类办法:

classAnIntegerNamedX{

intx;

staticpublicintx(){

returnx;

}

staticpublicvoidsetX(intnewX){

x=newX;

}

}

当你想编译这个版本的AnIntegerNamedX,编译器就会显现以下的毛病:AnIntegerNamedX.java:4:Cantmakeastaticreferenceto

nonstaticvariablexinclassAnIntegerNamedX.

returnx;

^

呈现这些毛病的缘故原由是类办法不克不及会见实例变量,除非办法先创立AnIntegerNamedX的一个实例而且经由过程它来会见变量。

上面我们修正一下AnIntegerNamedX,让x变量成为类变量:

classAnIntegerNamedX{

staticintx;

staticpublicintx(){

returnx;

}

staticpublicvoidsetX(intnewX){

x=newX;

}

}

如今为x设置数值,并打印出x数值:

myX.x=2

anotherX.x=2

再一次,我们经由过程myX来改动x,并将它改动为AnIntegerNamedX的别的实例。

实例成员和类成员之间的别的一个不同是类成员能够从类自己举行会见。你不用实例化类来会见它的类成员。上面让我们编写一段代码来间接从AnIntegerNamedX类中会见x和setX:

...

AnIntegerNamedX.setX(1);

System.out.println("AnIntegerNamedX.x="+AnIntegerNamedX.x());

...

值得一提的是,你如今已不必再创立myX和anotherX了。你能够设置x并间接AnIntegerNamedX类中检索x。你不克不及使用实例成员来处置它,你只能从一个对象来挪用实例办法而且只能够从对象中会见实例变量。而你能够从类的实例大概从类自己来会见类变量和办法。




诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net里有这些工具吗?要简单多少?。
作者: 柔情似水    时间: 2015-1-21 17:21
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
作者: 若相依    时间: 2015-1-22 05:52
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
作者: 分手快乐    时间: 2015-1-27 05:04
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
作者: 谁可相欹    时间: 2015-1-30 05:10
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
作者: 愤怒的大鸟    时间: 2015-2-6 07:24
是一种为 Internet发展的计算机语言
作者: 灵魂腐蚀    时间: 2015-2-7 03:59
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
作者: 乐观    时间: 2015-2-8 06:24
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
作者: 深爱那片海    时间: 2015-2-12 20:25
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
作者: 蒙在股里    时间: 2015-3-4 03:59
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
作者: 若天明    时间: 2015-3-5 17:30
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
作者: 因胸联盟    时间: 2015-3-7 22:38
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
作者: 飘飘悠悠    时间: 2015-3-15 15:13
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
作者: 仓酷云    时间: 2015-3-22 01:29
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
作者: 老尸    时间: 2015-3-27 15:11
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
作者: 透明    时间: 2015-3-30 11:15
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
作者: 小魔女    时间: 2015-4-3 04:58
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
作者: 不帅    时间: 2015-4-4 06:53
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
作者: 第二个灵魂    时间: 2015-4-9 14:48
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
作者: 简单生活    时间: 2015-4-10 05:25
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2