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是否能正常输出结果.
作用域修饰符 | Test1 | Test2 | Test3 | Test4 |
---|---|---|---|---|
public | ||||
protect | ||||
private | ||||
不写 |
参考答案:
作用域修饰符 | Test1 | Test2 | Test3 | Test4 |
---|---|---|---|---|
public | √ | √ | √ | √ |
protect | √ | √ | x | √ |
private | √ | x | x | x |
不写 | √ | √ | x | x |
2.24.heap和stack有什么区别?
参考答案:
栈(stack)和堆(heap)都是Java用来在内存中存放数据的地方,二者区别在于:1.栈存放基本类型变量和对象引用,当超过作用域后释放;堆存放new出来的对象和数组;
2.堆可以动态的分配内存大小,生存期也不必实现告诉编译器,Java的垃圾回收器会自动收走这些不再使用的数据.存在栈中的数据大小与生存期必须是确定的,缺乏灵活性.栈的存取速度比堆要快,仅次于直接位于CPU中的寄存器.堆由于要在运行时动态分配内存,存取速度较慢;
3.栈数据可以共享,如字面量3等;堆不可以;
4.栈是一种线性集合,其添加和删除元素的操作应在同一段完成,栈按照后进先出的方式进行处理;堆地址是不连续的,可随机访问.
相关文章推荐
- JAVA企业面试题精选 OOP 1-10
- JAVA企业面试题精选 数据库21-30
- JAVA企业面试题精选 OOP 11-20
- JAVA企业面试题精选 Servlet和JSP 21-30
- JAVA企业面试题精选 Java基础 21-30
- JAVA企业面试题精选 Web基础 21-30
- JAVA企业面试题精选 Java SE 21-30
- JAVA企业面试题精选 Servlet和JSP 1-10
- JAVA企业面试题精选 数据库41-44
- JAVA企业面试题精选 Web基础 41-42
- JAVA企业面试题精选 Spring 1-10
- JAVA企业面试题精选 Java基础 1-10
- JAVA企业面试题精选 JDBC 1-10
- JAVA企业面试题精选 Java SE 91-100
- JAVA企业面试题精选 Struts 1-10
- JAVA企业面试题精选 Java SE 11-20
- JAVA企业面试题精选 Servlet和JSP 41-48
- JAVA企业面试题精选 Java SE 1-10
- JAVA企业面试题精选 Hibernate 11-20