华为java笔试.doc

华为java笔试.doc

ID:48594800

大小:90.50 KB

页数:14页

时间:2020-01-28

华为java笔试.doc_第1页
华为java笔试.doc_第2页
华为java笔试.doc_第3页
华为java笔试.doc_第4页
华为java笔试.doc_第5页
资源描述:

《华为java笔试.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1.在main(String[]args)方法内是否可以调用一个非静态方法?答案:不能.静态成员不能访问非静态成员.对一个类而言,包含三种最常见的成员:构造器、属性、方法。类内各成员的定义顺序没有影响,各成员之间可以相互调用,但是,static修饰的成员不能修饰没有static修饰的成员。还记得我说的,如果类A中有一个普通方法f(),那么编译器会隐式地把它转化为f(Athis)吗?那你也还记得我说,static方法就是没有这个this的方法吗?如果A中有两个普通方法f()和g(),那么编译器会隐式地把它们变成f(Athis)和g(Athis

2、)。这样,在f方法里面调用g方法的时候,编译器就可以隐式地把f方法参数中的this传递给g方法。然而,如果f方法是static的,而g方法是非static的,那么,f方法本身就没有this参数,所以它无法隐式地提供给g方法一个this参数,因此,f方法就不能直接调用g方法了。我们有一个解决的办法,就是在f方法中手动产生一个A的对象obj,然后把这个对象当作this参数传递给g方法(obj.g()),这样就可以调用g方法了,明白了吗?其实还可以跟你说简单一点。普通方法是对象的方法,也就是说,普通方法的调用都是跟某一个具体的对象相关联的(thi

3、s),我们要用一个对象来调用它,它也可以改变这个对象属性;而静态方法是用作工具的方法,也就是说,它不跟任何对象相关联,它可以不通过对象来调用,它做的事情也不能改变任何对象的属性。明白了吗?使用方法如下:静态成员一般通过类名调用,也可以通过对象来调用,或者在所在类的其他方法(可以是静态,也可以是非静态)里直接使用(不管如何调用,只要记住一点:同类所有对象共用同一个静态成员)。但是在静态方法里,只能直接访问静态成员,不能直接访问非静态成员。(要想在静态方法里访问非静态成员,可以实例该类的一个对象,然后在通过对象调用非静态成员。)非静态成员只能通

4、过实例调用,别无他法。只要记住一点:把static成员和非静态成员彻底分隔开,他们各自作用不同,用法不同,之间没有任何联系这个跟编译器的内存处理有关系,静态成员变量需要在一开始就分配内存进行初始化,而一般的类成员只是在类实例化的时候才会为止分配内存初始化,从方面来说,假如允许非静态类中有静态成员变量,如下面所示:classA{publicclassB{staticstringvar_a;}}那么在程序一开始就需要给A.B.var_a分配内存并初始化,假如这个成立了,那么A.B也应该会有相应的内存,但是由于B只是A的一个非静态成员变量,在类A

5、还没有实例化的时候就以及有了相应的内存(也就是非静态成员变量只有在类的实例中才会有相应的内存位置),这样跟原来的标准有冲突,假如JAVA编译器(或者JAVA虚拟机)支持这种做法(其实也是可以实现的),这有的后果会导致编译器混乱无序的,大大增加了编译器的难度和复杂性,每一种语言都有预先制定好的语言标准,相对应的编译器都是基于这种标准来实现的,假如随意突破这种标准,那只会导致灾难性的后果而已我的理解,因为静态的东西是在编译的时候就要有内存空间的,但是不是静态的东西只有当实例化的时候才会分配空间,如果你在非静态方法里面包含了静态的东西,这个方法还

6、没有去分配空间,怎么又能为里面的变量去分配空间呢,个人理解JVM启动的时候要先把static的东西初始化但此时外部类可能还没有被实例化14所以会引起混乱java的主函数写public和static的原因?public使得该函数可以被外部(Java虚拟机)调用;static使得该函数不需要任何对象便可直接被调用。JavaisnotaC。下面一点是不同的。static不能在方法中修饰变量,只能在类中申明使用!把staticintm=0;放在main()方法的上面static是静态的,它所修饰的东西属于类,在程序加载的时候就分配内存,而方法在被调

7、用的时候才分配内存,所以你把一个静态变量放到一个方法中是错误的我们运行java程序使用的是java虚拟机。虚拟机启动之后,会在.class文件里面去找一个名为main的函数,然后运行它,我们的程序便运行了。那么你想一想,这个main函数是在它所属的类的实例产生之前就被调用的,所以它只能是static的。另外,这个main函数是虚拟机来调用的,即是外部代码来调用的,所以它只能是public的。然后,你也可以把这个函数声明为int返回值。但是虚拟机并不需要返回状态,所以它只会找返回值为void的main,如果你定义为int,则不会当作主函数被调

8、用。最后,函数参数是String类型的一个数组,这个数组也就是运行时的参数。args是型参名,可以随意。2.同一个文件里是否可以有两个public类?答案:不能.同个源文件有多个

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。