- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java总结
1.谈谈HashMap和Hashtable的区别(6分)
答:
1).Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;
2).Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,则需要额外的同步机制。但HashMap的同步问题可通过Collections的一个静态方法得到解决:Map Collections.synchronizedMap(Map m)这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的。
3). 在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示 HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。
4).其底层的实现机制不同,hashmap的访问速度要快于hashtable,因为它不需要进行同步检验,建议在非多线程环境中使用hashmap代替hashtable .
2.方法重建Overload和方法的重写Overriding的区别。Overload的方法是否可以改变返回值的类型?(10分)
答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。 Overloaded的方法是可以改变返回值的类型。
3.Java的体系结构:实际上是由4个组件结合而成。
1).Java编程语言;
2).Java类文件格式;
3)Java API;
4)JVM
使用Java开发时,就是用Java编写代码,然后将代码编译为Java类文件,接着在JVM中执行类文件。JVM与核心类共同构成了Java平台也称JRE(Java Running Environment,Java运行时环境),该平台可以建立在任何操作系统上。
5.抽象类和接口有什么相同点和不同点
1)相同点:
1)).都不能被实例化;
2)).都包含未实现的方法;
3)).派生类必须实现未实现的方法。抽象类是抽象方法,而接口则是所有的方法。
2)不同点:
1)).Java是单继承的,为了实现多重继承,提出了接口的概念。抽象类是特殊的类,体现了父类和派生类的关系;
2)).抽象类的成员具有访问控制级别,但接口的成员变量为Public static final,成员函数为[public] [abstract] 返回类型 成员方法[参数列表];
3)).抽象类可以包含字段,而接口不可以;
4))抽象类可以继承接口,而接口不能继承抽象类;
5))抽象类的子类必须实现抽象方法,而接口都得实现。
笼统点说:
接口 = 定义了要做的所有事情,但自己啥也不干
抽象类 = 做了部分工作,剩下的他不干了,等后来人继续完成。
6. java内存分配机制通过这几天对一个内存溢出程序的监控,学习了程序运行时对内存的使用机制,在这里和大家分享下。
?Java程序运行在JVM(Java? Virtual?Machine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在学习Java内存分配原理的时候一定要牢记这一切都是在JVM中进行的,JVM是内存分配原理的基础与前提。
一个完整的Java程序运行过程会涉及以下内存区域:????????寄存器:JVM内部虚拟寄存器,存取速度非常快,程序不可控制。
????????栈:保存局部变量的值,包括:a.用来保存基本数据类型的值;b.保存类的实例,即堆区对象的引用(指针)。也可以用来保存加载方法时的帧。
????????堆:用来存放动态产生的数据,比如new出来的对象。注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。因为同一个类的对象拥有各自的成员变量,存储在各自的堆中,但是他们共享该类的方法,并不是每创建一个对象就把成员方法复制一次。
??
文档评论(0)