中软测试题————————————————————————————————作者:————————————————————————————————日期: 中软的一次试题:请说明下面代码的执行结果:bytea=1;byteb=1;bytec=a+b;(c);-2>>3结果是多少?一个ArrayList的引用ArrayList还是List好?为什么?类方法与实例方法有什么区别?Hashtable和HashMap有何区别?单例模式有几种实现方式?举例说明Socket编程有哪两种模式?JSP和Servlet有何区别?Java语言中是怎样实现多线程的?请说明Synchronized,volatile,ThreadLocal的区别?说明wait、sleep、join方法的区别TCP/IP分几层?Java是用什么进行垃圾处理的?列出你所知道的垃圾收集器的实现方式请说明TCP/IP三次握手过程举例说明Linux常用命令什么是序列化?Java是怎样实现序列化的说明heap和stack的区别编程对任意一组数进行排序,使用冒泡程序类方法与实例方法有什么区别有时候我们对静态方法和实例化方法会有一些误解。1、大家都以为“静态方法常驻内存,实例方法不是,所以静态方法效率高但占内存。”事实上,他们都是一样的,在加载时机和占用内存上,静态方法和实例方法是一样的,在类型第一次被使用时加载。调用的速度基本上没有差别。2、大家都以为“静态方法在堆上分配内存,实例方法在堆栈上”事实上所有的方法都不可能在堆或者堆栈上分配内存,方法作为代码是被加载到特殊的代码内存区域,这个内存区域是不可写的。方法占不占用更多内存,和它是不是static没什么关系。因为字段是用来存储每个实例对象的信息的,所以字段会占有内存,并且因为每个实例对象的状态都不一致(至少不能认为它们是一致的),所以每个实例对象的所以字段都会在内存中有一分拷贝,也因为这样你才能用它们来区分你现在操作的是哪个对象。但方法不一样,不论有多少个实例对象,它的方法的代码都是一样的,所以只要有一份代码就够了。因此无论是static还是non-static的方法,都只存在一份代码,也就是只占用一份内存空间。同样的代码,为什么运行起来表现却不一样?这就依赖于方法所用的数据了。主要有两种数据来源,一种就是通过方法的参数传进来,另一种就是使用class的成员变量的值……3、大家都以为“实例方法需要先创建实例才可以调用,比较麻烦,静态方法不用,比较简单”事实上如果一个方法与他所在类的实例对象无关,那么它就应该是静态的,而不应该把它写成实例方法。所以所有的实例方法都与实例有关,既然与实例有关,那么创建实例就是必然的步骤,没有麻烦简单一说。当然你完全可以把所有的实例方法都写成静态的,将实例作为参数传入即可,一般情况下可能不会出什么问题。从面向对象的角度上来说,在抉择使用实例化方法或静态方法时,应该根据是否该方法和实例化对象具有逻辑上的相关性,如果是就应该使用实例化对象反之使用静态方法。这只是从面向对象角度上来说的。如果从线程安全、性能、兼容性上来看也是选用实例化方法为宜。我们为什么要把方法区分为:静态方法和实例化方法?如果我们继续深入研究的话,就要脱离技术谈理论了。早期的结构化编程,几乎所有的方法都是“静态方法”,引入实例化方法概念是面向对象概念出现以后的事情了,区分静态方法和实例化方法不能单单从性能上去理解,创建c++,java,c#这样面向对象语言的大师引入实例化方法一定不是要解决什么性能、内存的问题,而是为了让开发更加模式化、面向对象化。这样说的话,静态方法和实例化方式的区分是为了解决模式的问题。拿别人一个例子说事:比如说“人”这个类,每个人都有姓名、年龄、性别、身高等,这些属性就应该是非静态的,因为每个人都的这些属性都不相同;但人在生物学上属于哪个门哪个纲哪个目等,这个属性是属于整个人类,所以就应该是静态的——它不依赖与某个特定的人,不会有某个人是“脊椎动物门哺乳动物纲灵长目”而某个人却是“偶蹄目”的。拓展:JAVA中构造方法,实例方法,类方法,有什么区别?构造方法:构造方法是用来构造类的对象的,方法名和类名相同没有返回值。一般用new构造方法名()来创建该类的对象。在不写构造方法的情况下会有一个默认的无参构造方法,当然你也可以重写和重载构造方法(建议你找一本《Java编程思想》看看,里面讲的很透彻)。实例方法:简单地说就是可以通过类的实例(某个对象)调用的方法,也就是我们正常情况下使用的方法。实例方法也称成员方法(成员方法和成员变量的知识你可以参考《Java编程思想》)。类方法:简单地说就是直接可以用类名调用的方法,也就是被关键字static修饰的方法,它不需要创建类的对象来调用该方法。(关于
中软考试题 来自淘豆网m.daumloan.com转载请标明出处.