第二个灵魂 发表于 2015-1-18 11:43:01

JAVA教程之Java 类中类属性和对象属性的初始化按次...

关于第二点:俺问问你,如果是企业级项目的话,诸如RMI,EJB,等一些关键技术,这些难道都不需要学么?如果光是使用jsp,servlet,javabean的话。对象边城狂人

Java类中类属性(static变量)和对象属性(非static变量)的初始化按次能够用以下程序测试:

/**
*@(#)Test.java
*@authorfancy
*/

publicclassTest{

staticStringa="string-a";
staticStringb;

Stringc="stirng-c";
Stringd;

static{
printStatic("beforestatic");
b="string-b";
printStatic("afterstatic");
}

publicstaticvoidprintStatic(Stringtitle){
System.out.println("---------"+title+"---------");
System.out.println("a=""+a+""");
System.out.println("b=""+b+""");
}

publicTest(){
print("beforeconstructor");
d="string-d";
print("afterconstructor");
}

publicvoidprint(Stringtitle){
System.out.println("---------"+title+"---------");
System.out.println("a=""+a+""");
System.out.println("b=""+b+""");
System.out.println("c=""+c+""");
System.out.println("d=""+d+""");
}

publicstaticvoidmain(String[]args){
newTest();
}

}

起首,我把main()办法正文失落,运转了局以下:

---------beforestatic---------
a="string-a"
b="null"
---------afterstatic---------
a="string-a"
b="string-b"
java.lang.NoSuchMethodError:main
Exceptioninthread"main"
Processcompleted.

然后,作废对main()办法的正文,运转了局以下:

---------beforestatic---------
a="string-a"
b="null"
---------afterstatic---------
a="string-a"
b="string-b"
---------beforeconstructor---------
a="string-a"
b="string-b"
c="stirng-c"
d="null"
---------afterconstructor---------
a="string-a"
b="string-b"
c="stirng-c"
d="string-d"

由此能够看出Java类属性和对象属性的初始化按次以下:

①类属性(静态变量)界说时的初始化,如上例的staticStringa="string-a";
②static块中的初始化代码,如上例static{}中的b="string-b";
③对象属性(非静态变量)界说时的初始化,如上例的Stringc="stirng-c";
④机关办法(函数)中的初始化代码,如上例机关办法中的d="string-d";

在此过程当中②和③的按次无所断定,由于在静态块中没法打印出非静态变量。一样是由于这个缘故原由,晓得他们的按次对我们写程序也毫无匡助。再由于类成员(静态成员)是在第一次利用到类的时分就举行了响应的初始化,而对象成员(非静态成员)则必要天生类实例(即对象)时才干初始化,以是我把③排在了②的前面。再声名一次,它们事实谁先谁后,从代码上是不克不及断定的,生怕必要往研讨一下JVM(Java假造机)的实行历程才行。


以下是一些回帖的会商:
我对狂人教程"对象成员(非静态成员)则必要天生类实例(即对象)时才干初始化"有些意见!比方你在例程中界说的两个对象成员变量Stringc="stirng-c";
Stringd;我以为当程序实行这个Test类的时分,成员变量(不包含机关函数)和类成员变量一样,都要装载到内存。如许对象成员变量就能够被机关函数所挪用。可是事实静态变量和非静态变量哪一个先实行能够看在代码中的前后按次,可是这关于编写代码来讲并没有多年夜的用途!
--小猪努努
static
{
printStatic("beforestatic");
b="string-b";
printStatic("afterstatic");
}在e第一次利用而d进r绦校抑绦幸淮巍!!!!
--caterpillar

还得说上一点,就java本质而言,是面相对象的,但是你有没有发现,java也不全是,比如说基本类型,int,那他就是整型而不是对象,转换类型是还得借助包装类。

谁可相欹 发表于 2015-1-21 13:07:01

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

透明 发表于 2015-1-25 22:02:30

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言

精灵巫婆 发表于 2015-2-3 11:40:18

Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台

冷月葬花魂 发表于 2015-2-8 20:21:21

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。

爱飞 发表于 2015-2-12 09:27:39

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)

飘飘悠悠 发表于 2015-2-24 02:29:00

是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能

山那边是海 发表于 2015-2-28 15:19:52

Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台

愤怒的大鸟 发表于 2015-3-10 00:10:03

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)

若相依 发表于 2015-3-12 11:27:03

至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。

若天明 发表于 2015-3-21 09:04:14

是一种为 Internet发展的计算机语言

蒙在股里 发表于 2015-3-26 14:53:53

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

海妖 发表于 2015-4-3 21:41:44

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

分手快乐 发表于 2015-4-6 04:08:28

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

不帅 发表于 2015-4-10 02:23:05

是一种使网页(Web Page)产生生动活泼画面的语言

乐观 发表于 2015-4-17 13:31:58

Java是一种计算机编程语言,拥有跨平台、面向对java

金色的骷髅 发表于 2015-5-8 09:40:38

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

小妖女 发表于 2015-6-4 16:59:33

至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。

第二个灵魂 发表于 2015-6-11 22:37:31

至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。

再见西城 发表于 2015-7-14 00:09:29

是一种为 Internet发展的计算机语言
页: [1]
查看完整版本: JAVA教程之Java 类中类属性和对象属性的初始化按次...