MyEclipse和Java学习中的问题集锦

上传人:豆** 文档编号:108558723 上传时间:2022-06-15 格式:DOC 页数:24 大小:68KB
收藏 版权申诉 举报 下载
MyEclipse和Java学习中的问题集锦_第1页
第1页 / 共24页
MyEclipse和Java学习中的问题集锦_第2页
第2页 / 共24页
MyEclipse和Java学习中的问题集锦_第3页
第3页 / 共24页
资源描述:

《MyEclipse和Java学习中的问题集锦》由会员分享,可在线阅读,更多相关《MyEclipse和Java学习中的问题集锦(24页珍藏版)》请在装配图网上搜索。

1、.MyEclipse和Java学习中的问题集锦1、在MyEclipse环境中如何运行带有main()方法的class?2、字符型和字符串型:字符型:用单引号引起来的单个(个)字符;字符串型:用双引号引起来的个或多个字符;转义字符:Java还允许使用一种特殊形式的字符常量值来表示一些难以用一般字符来表示的字符,这种特殊形式的字符是以一个“”开头的字符序列,称为转义字符。1.八进制转义序列:+1到3位5数字;范围0003770:空字符2.Unicode转义字符:u+四个十六进制数字;065535u0000:空字符3.特殊字符:就3个:双引号:单引号:反斜线4.控制字符:5个单引号字符反斜杠字符r回

2、车n换行f走纸换页t横向跳格b退格点的转义:.=u002E美元符号的转义:$=u0024乘方符号的转义:=u005E左大括号的转义:=u007B左方括号的转义:=u005B左圆括号的转义:(=u0028竖线的转义:|=u007C右圆括号的转义:)=u0029星号的转义:*=u002A加号的转义:+=u002B问号的转义:?=u003F反斜杠的转义:=u005C3、上溢、下溢问题:、变量的作用域:变量的作用域变量的定义不但包括变量名和变量类型,同时还包括它的作用域,变量的作用域指明可以访问该变量的程序代码的范围。按作用域来分,变量可分为以下几种:局部变量、成员变量、方法参数和异常处理参数。局部变

3、量定义在方法中或方法内的一个代码块中,其作用域为它所在的代码块。局部变量必须初始化。例如,在方法中定义变量:变量a的作用域为界定方法体的两个大括号之间的区域。在方法内的一个代码块中定义变量时:变量i的作用域为for循环所确定的一对大括号(加下划波浪线部分)之间的区域。成员变量定义在类里面,但不在类里面的某个方法中,其作用域为整个类。关于类成员变量的概念将在其它章节中向大家作进一步介绍。方法参数用于将方法外的数据传递给方法,其作用域就是方法的方法体。关于方法参数的概念将在其它章节中向大家作进一步介绍。异常处理参数是将数据传递给异常处理代码,其作用域是异常处理部分。关于异常处理参数的概念将在其它章

4、节中向大家作进一步介绍。成员变量和局部变量有什么区别?答:classAinta;/成员变量publicstaticvoidmain(Stringargs)intb;/局部变量类体由2部分构成:一部分是变量的定义;一部分是方法的定义(一个类中可以有多个方法)。在变量定义部分定义的变量叫做类的成员变量,成员变量在整个类中都有效。(全局变量应该是成员变量的俗称)。在方法体中定义的变量叫做局部变量,局部变量只在定义它的方法中有效。成员变量又分为实例变量和类变量(static静态变量)。classOnefloatx;/x为实例变量staticinty;/只要有关键字static,y为类变量1.成员变量可

5、以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可以定义成final型;2.成员变量存储在堆,局部变量存储在栈;3.存在时间不同;4.成员变量有默认值,(被final修饰且没有static的必须显式赋值),局部变量不会自动赋值;先看下面两段程序:程序一:publicclassVariableinti;voidtest()intj=8;if(j=i)System.out.println(相等);elseSystem.out.println(不相等);publicstaticvoidmain(Stringargs)Va

6、riablev=newVariable();v.test();程序二:publicclassVariablevoidtest()inti;intj=8;if(j=i)System.out.println(相等);elseSystem.out.println(不相等);publicstaticvoidmain(Stringargs)Variablev=newVariable();v.test();第一个程序很正常,编译时不会出错。第二个程序编译时会提示如下错误:D:ProgramjavatestjavacVariable.javaVariable.java:9:可能尚未初始化变量iif(j=i)

7、1错误:之所以会出现这样的错误是因为:成员变量有默认值,(被final修饰且没有static的必须显式赋值),局部变量不会自动赋值。类体分为两部分。变量定义部分所定义的变量被称为类的成员变量,在方法体中定义的变量和方法的参数都被称为局部变量。java中成员变量和局部变量的区别:1.成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可以定义成final型。2.成员变量存储在堆,局部变量存储在栈。3.存在时间不同。4.成员变量有默认值,(被final修饰且没有static的必须显式赋值),局部变量不会自动赋值。

8、顾名思意:什么是局部,方法内部,块内部都是局部,执行指令退出那个局部,局部变量自动清除。比如方法中,不用说块中inti=0;/这是一个局部变量,它的作用范围就在其中成员变量就会涉及到谁的成员,类的成员?实例的成员?classAinti=0;/实例的成员staticj=1;/类的成员static的差别,是否依赖于实例而存在成员变量:作为类的成员而存在,直接存在于类中。局部变量:作为方法或语句块的成员而存在,存在于方法的参数列表和方法定义中。局部变量在使用前必须被程序员主动的初始化,和此形成对比,系统中的成员变量则会被系统提供一个默认的初始值。所以在语法上,类的成员变量能够定义后直接使用,而局部变

9、量在定义后先要赋初值,然后才能使用。所有类的成员变量可以通过this来引用。成员变量又分成俩中类型:实例变量和静态变量。静态变量在定义时要使用static关键字。静态变量的类型说明符是static。静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由static加以定义后才能成为静态外部变量,或称静态全局变量。对于自动变量,它属于动态存储方式。但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。由此看来,一个变量可由static进行再说明,并改变其原有的存储方式。1.静态局部变量

10、在局部变量的说明前再加上static说明符就构成静态局部变量。例如:staticinta,b;staticfloatarray5=1,2,3,4,5;静态局部变量属于静态存储方式,它具有以下特点:(1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。(2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后,尽管该变量还继续存在,但不能使用它。(3)允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋以0值。(4)对基本类型的静态局部变

11、量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。根据静态局部变量的特点,可以看出它是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值。因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。给读者一个简单直白的例子(区别静态局部变量和动态局部变量):*intfun(intn)staticintf=1;/*请注意这行的修改*/这是static结果:f=f

12、*n;return(f);main()inti;for(i=1;i=5;i+)printf(%d!=%dn,i,fun(i);*intfun(intn)intf=1;/*请注意这行的修改*/结果是:这是auto的结果f=f*n;return(f);main()inti;for(i=1;i=5;i+)printf(%d!=%dn,i,fun(i);2.静态全局变量:全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多

13、个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。因此static这个说明符在不同的地方所起的作用是不同的。应予以注意。静态变量:除范围之外,变量还有存活期,在这一期间变量能够保持它们的值。在应用程序的存活期内一直保持模块级变量和

14、公用变量的值。但是,对于Dim声明的局部变量以及声明局部变量的过程,仅当过程在执行时这些局部变量才存在。通常,当一个过程执行完毕,它的局部变量的值就已经不存在,而且变量所占据的内存也被释放。当下一次执行该过程时,它的所有局部变量将重新初始化。但可将局部变量定义成静态的,从而保留变量的值。在过程内部用Static关键字声明一个或多个变量,其用法和Dim语句完全一样:1.动态存储方式与静态存储方式的定义1)所谓静态存储方式是指在程序编译期间分配固定的存储空间的方式;2)所谓动态存储方式是指在程序运行期间根据需要进行动态的分配存储空间的方式。2.内存中用户存储空间的分配情况(分为三部分)1)程序区:

15、存放程序语句2)静态存储区:存放全局变量,在程序开始执行时给全局变量分配存储区,程序执行完毕就释放。3)动态存储区:存放以下数据:函数形式参数。在调用函数时给形参分配存储空间;自动变量(未加static声明的局部变量);函数调用时的现场保护和返回地址等。栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。类变量、实例变量、局部变量类变量是类中独立于方法之

16、外的变量,用static修饰。实例变量也是类中独立于方法之外的变量,不过没有static修饰。局部变量是类的方法中的变量。看下面的伪代码说明:publicclassVariablestaticintallClicks=0;/类变量Stringstr=helloworld;/实例变量publicvoidmethod()inti=0;/局部变量实例变量也称为:“域”,“成员变量”,在实体类或数据类中被称为“属性”或“字段”。当实例变量可以改变时,被称为对象的状态。final用于常量的声明,规范要求常量的变量名是大写的。statci在java里面用于对类方法和属性进行修饰,其作用是什么呢?有两种情况

17、是non-static无法做到的,这时你就要使用statice。第一种:你希望不论产生了多少个对象,或不存在任何对象的情形下,那些特定数据的存储空间都只有一份;第二种:你希望某个函数不要和classobject绑在一起。即使没有产生任何object,外界还是可以调用其static函数,或是取用其staticdata。Java中关于类变量和实例变量问:实例方法可直接调用本类的类方法吗?先一一分析一下这几个东东:实例方法,实例变量,类方法,类变量。实例变量(instancevariable):或叫实例域、实例字段(instancefield),或叫成员变量(membervariable)。实例的变

18、量,每个实例的变量可能不同。实例方法(instancemethod):或叫成员方法(membermethod)。供实例用的方法,必须要先有实例,才能通过此实例调用实例方法。类变量(classvariable):或叫静态域、静态字段(staticfield),或叫静态变量(staticvariable)。出现在这样的情况下:一个类的所有实例需要一个公有的属性,比如,一,统计实例个数;二,常量。类变量与类直接关联在一起。内存当中只有一个地方存放这个变量。任何实例都可以修改它的值(前提是它没有被final修饰符修饰,不然就是常量),但是,访问类变量并不需要实例,用类就可以操作了。类方法(classm

19、ethod):跟类变量的基本特点一样。供类用的方法,可以没有实例,直接通过类来调用类方法。从形式上看,类变量和类方法,比一般的变量和方法多了一个static修饰符。因为这个原因,类变量和类方法也被叫做静态变量和静态方法。它们的使用方法:实例方法可以直接访问实例变量,调用实例方法;实例方法可以直接访问类变量,调用类方法。但不推荐这么做,原因是不清晰,容易把类变量误认为是实例变量,把类方法误认为是实例方法(借助IDE,它会给出警告信息。);类方法可以直接调用类变量和类方法;类方法不能直接调用实例变量和实例方法;类方法里面不能使用“this”关键字,因为没有实例存在,“this”不知道引用哪个实例。

20、程序代码:1234567891011121314151617181920212223242526272829303132333435publicclassMyClasspublicstaticStringclassVariable=Classvariable.;publicStringinstanceVariable=Instancevariable.;publicstaticvoidclassMethod()System.out.println(Classmethod.);publicvoidinstanceMethod()System.out.println(Instancemethod.

21、);publicstaticvoidmain(Stringargs)/callanotherclassmethodviaaclassmethodclassMethod();/callclassmethodviaclassMyClass.classMethod();/accessclassvariableviaclassSystem.out.println(MyClass.classVariable);System.out.println(classVariable);MyClassinstance=newMyClass();/callclassmethodviainstancereferenc

22、einstance.classMethod();/accessclassvariableviainstancereferenceSystem.out.println(instance.classVariable);/callinstancemethodviainstancereferenceinstance.instanceMethod();/accessinstancevariableviainstancereferenceSystem.out.println(instance.instanceVariable);注意这样一个特殊的情形:如果已有一个类变量,再定义一个方法去操作这个类变量。那

23、么此方法可以不加static修饰符,本质上仍然是一个类方法。但是,现在就只能通过该类的一个实例,才能调用这个方法了。(这是典型的吃多了没事干。仅存活于某些笔试,面试题中。)参考文章:-java中实例变量和类变量的区别是什么?实例变量是类实例化后,系统为其创建的一个类的实例变量的拷贝,即一个实例拥有一个实例变量。类变量则是用static声明,系统为每个类变量分配一次存储空间。即所有的实例共享一个类变量。例如一个银行帐户(Account)是一个class的话,可以把他的利息设为类变量(staticfloatinterest),而持有人是实例变量(Stringname),这样只要改变Account.interest就可以把所有人的利息都该了,而持有人的姓名则是属于单独的帐户的。.24

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!