您的位置:首页 > 职场人生

JAVA企业面试题精选 OOP 21-24

2017-07-17 12:05 716 查看

2.21.面向对象的程序在运行时会创建多个对象,这些对象之间通常可以相互”发送消息”,谈谈你对”对象之间发送消息”这句话的理解,并编写几句Java示例代码展示对象之间发送消息的具体编程实现方法

参考答案:

  调用方法的行为通常被称为发送消息给对象.代码示例如下:

public boolean login(String userName,String pwd){
//实现登录的代码
}
//处理用户请求的代码
public String action(){
String userName = request.getParameter("userName");
String pwd = request.getParameter("pwd");
//调用login方法传递用户名,密码信息进入方法
login(userName,pwd);
return "success";
}


  上述代码中,在action方法中,调用login方法并传递用户名,密码信息进入该方法,即将消息传递到了login方法的内部.

2.22.重写Clazz类的equals方法:

public class Clazz{
private in id;

public int getId(){
return id;
}

public void setId(int id){
this.id = id;
}

@Override
public boolean equals(Object obj){

}
}


参考答案:

public class Clazz{
private in id;

public int getId(){
return id;
}

public void setId(int id){
this.id = id;
}

@Override
public boolean equals(Object obj){
if(this == obj){
return true;
}
if(obj == null){
return false;
}
if(getClass() != obj.getClass()){
return false;
}
Clazz other = (Clazz) obj;
if(id != other.id){
return false;
}
return true;
}
}


2.23.请看下列代码:

Test1类:

package com.welkin.test;

public class Test1{

public static String method(){
return "hello world!";
}

public static void main(String[] args){
System.out.println(Test1.method());
}
}


Test2类:

package com.welkin.test;

public class Test2{

public static void main(String[] args){
System.out.println(Test1.method());
}
}


Test3类:

package com.welkin.test.a;

import com.welkin.test.Test1;

public class Test3{

public static void main(String[] args){
System.out.println(Test1.method());
}
}


Test4类:

package com.welkin.test.a;

import com.welkin.test.Test1;

public class Test4 extends Test1{

public static void main(String[] args){
System.out.println(Test1.method());
}
}


  将Test1中的method方法的作用域修饰符public以下第一列的作用域修饰符替换,请在第二,三,四,五列表格中以”√”和”x”标注在各种情况下类Test1,Test2,Test3,Test4是否能正常输出结果.

作用域修饰符Test1Test2Test3Test4
public
protect
private
不写

参考答案:

作用域修饰符Test1Test2Test3Test4
public
protectx
privatexxx
不写xx

2.24.heap和stack有什么区别?

参考答案:

  栈(stack)和堆(heap)都是Java用来在内存中存放数据的地方,二者区别在于:

1.栈存放基本类型变量和对象引用,当超过作用域后释放;堆存放new出来的对象和数组;

2.堆可以动态的分配内存大小,生存期也不必实现告诉编译器,Java的垃圾回收器会自动收走这些不再使用的数据.存在栈中的数据大小与生存期必须是确定的,缺乏灵活性.栈的存取速度比堆要快,仅次于直接位于CPU中的寄存器.堆由于要在运行时动态分配内存,存取速度较慢;

3.栈数据可以共享,如字面量3等;堆不可以;

4.栈是一种线性集合,其添加和删除元素的操作应在同一段完成,栈按照后进先出的方式进行处理;堆地址是不连续的,可随机访问.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: