ImageVerifierCode 换一换
格式:DOC , 页数:118 ,大小:318KB ,
资源ID:6914584      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-6914584.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java面试宝典2012版.doc)为本站会员(yjrm16270)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

Java面试宝典2012版.doc

1、Java 面 试 宝 典 2010 版一.Java 基础部分. 7 1、一个”.java”源文件中是否可以包括多个类(不是内部类)?有什么限制? 72、Java 有没有 goto? . 8 3、说说 s1 = s1 + 1;有什么错 ? short s1 = 1; s1 += 1;有什么错? . 9 7、char 型变量中能不能存贮一个中文汉字?为什么? 108、用最有效率的方法算出 2 乘以 8 等於几? . 10 9、请设计一个一百亿的计算器 . 10 10、使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? . 11 11、 ”=”和 equals 方法究竟有什

2、么区别? . 12 12、静态变量和实例变量的区别? . 12 13、是否可以从一个 static 方法内部发出对非 static 方法的调用? 13 14、Integer 与 int 的区别 1315、Math.round(11.5)等於多少 ? Math.round(-11.5)等於多少? . 1416、下面的代码有什么不妥之处? . 14 17、请说出作用域 public,private,protected,以及不写时的区别 14 18、Overload 和 Override 的区别。Overloaded 的方法是否可以改变返回值的类型? . 14 19、构造器 Constructor

3、是否可被 override? 1520、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继 承具体类(concrete class)? 抽象类中是否可以有静态的 main 方法? 16 21、写 clone()方法时,通常都有一行代码,是什么? . 1622、面向对象的特征有哪些方面 . 16 23、java 中实现多态的机制是什么? . 17 24、abstract class 和 interface 有什么区别? . 18 25、abstract 的 method 是否可同时是 static,是否可同时是 native,是否可同时是synchronized

4、? 19 26、什么是内部类?Static Nested Class 和 Inner Class 的不同。 . 19 27、内部类可以引用它的包含类的成员吗?有没有什么限制? . 21 28、Anonymous Inner Class (匿名内部类) 是否可以 extends(继承)其它类,是否可 以implements(实现 )interface(接口)? 22 29、super.getClass()方法调用 22 30、String 是最基本的数据类型吗? 22 31、String s = “Hello”;s = s + “ world!”;这两行代码执行后,原始的 String 对象中的

5、 内容到底变了没有? . 23 32、是否可以继承 String 类? . 24 33、String s = new String(“xyz”);创建了几个 String Object? 二者之间有什么区别? . 24 34、String 和 StringBuffer 的区别 . 24 35、如何把一段逗号分割的字符串转换成一个数组? . 25 36、数组有没有 length()这个方法? String 有没有 length()这个方法? 25 37、下面这条语句一共创建了多少个对象:String s=”a”+”b” +”c”+”d”; 25 38、try 里有一个 return 语句,那么紧

6、跟在这个 try 后的 finally 里的 code 会不 会被执行,什么时候被执行,在 return 前还是后? 25 39、下面的程序代码输出的结果是多少? . 26 40、final, finally, finalize 的区别。 2841、运行时异常与一般异常有何异同? . 28 42、error 和 exception 有什么区别? . 28 43、Java 中的异常处理机制的简单原理和应用。 . 29 44、请写出你最常见到的 5 个 runtime exception。 . 2945、JAVA 语言如何进行异常处理,关键字:throws,throw,try,catch,fina

7、lly 分别代表 什么意义?在 try 块中可以抛出异常吗? 3046、java 中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和 suspend()方法为何不推荐使用? . 30 47、sleep() 和 wait() 有什么区别? . 31 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 . 33 49. 下面两个方法同步吗?(自己发明) 34 50、多线程有几种实现方法?同步有几种实现方法? . 34 51、启动一个线程是用 run()还是 start()? . 34 52、当一个线程进入一个对象的一个 synchronized 方法后,其它线程是

8、否可进入此 对象的其它方法? . 34 53、线程的基本概念、线程的基本状态以及状态之间的关系 . 35 54、简述 synchronized 和 java.util.concurrent.locks.Lock 的异同 ? 35 55、设计 4 个线程,其中两个线程每次对 j 增加 1,另外两个线程对 j 每次减少 1。 写出程序。. 37 56、子线程循环 10 次,接着主线程循环 100,接着又回到子线程循环 10 次,接着 再回到主线程又循环 100,如此循环 50 次,请写出程序。 39 57、介绍 Collection 框架的结构 44 58、Collection 框架中实现比较要实

9、现什么接口 . 44 59、ArrayList 和 Vector 的区别 45 60、HashMap 和 Hashtable 的区别 45 61、List 和 Map 区别? . 46 62、List, Set, Map 是否继承自 Collection 接口? . 46 63、List、Map、Set 三个接口,存取元素时,各有什么特点? . 46 64、说出 ArrayList,Vector, LinkedList 的存储性能和特性 . 47 65、去掉一个 Vector 集合中重复的元素 47 66、Collection 和 Collections 的区别。 . 48 67、Set 里的

10、元素是不能重复的,那么用什么方法来区分重复与否呢? 是用= 还是 equals()? 它们有何区别? 48 68、你所知道的集合类都有哪些?主要方法? . 48 69、两个对象值相同(x.equals(y) = true),但却可有不同的 hash code,这句话对不 对? . 49 70、TreeSet 里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用 的是父类的 compareTo 方法,还是使用的子类的 compareTo 方法,还是抛异常! . 49 71、说出一些常用的类,包,接口,请各举 5 个 . 50 72、 java 中有几种类型的流?JDK 为每种类型的流提供

11、了一些抽象类以供继承, 请 说出他们分别是哪些类? . 50 73、字节流与字符流的区别 . 51 74、什么是 java 序列化,如何实现 java 序列化?或者请解释 Serializable 接口的作 用。. 52 75、描述一下 JVM 加载 class 文件的原理机制? . 53 76、heap 和 stack 有什么区别。 53 77、GC 是什么? 为什么要有 GC? 53 78、垃圾回收的优点和原理。并考虑 2 种回收机制。 . 53 79、 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法 主动通知虚拟机进行垃圾回收? . 53 80、什么时候用 asse

12、rt。. 54 81、java 中会存在内存泄漏吗,请简单描述。 . 54 82、能不能自己写个类,也叫 java.lang.String? . 58 83. Java 代码查错. 58二. 算法与编程 62 1、编写一个程序,将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文 件中,a.txt 文件中的单词用回车符分隔,b.txt 文件中用回车或空格进行分隔。 . 62 2、编写一个程序,将 d:java 目录下的所有.java 文件复制到 d:jad 目录下,并将原 来文件的扩展名从.java 改为.jad。 63 3、编写一个截取字符串的函数,输入为一个字

13、符串和字节数,输出为按字节截取 的字符串,但要保证汉字不被截取半个,如“我 ABC” ,4,应该截取“我 AB” , 输入“我 ABC 汉 DEF” ,6,应该输出“我 ABC” ,而不是“我 ABC+汉的半个” 。 . 66 4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各 个字符的个数。. 66 5、说明生活中遇到的二叉树,用 java 实现二叉树 67 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次 数,并按重复次数排序: . 72 7、写一个 Singleton 出来。 . 76 8、递归算法题 1 78 9、递归算法题 2 79 10

14、、排序都有哪几种方法?请列举。用 JAVA 实现一个快速排序。 80 11、有数组 an,用 java 代码将数组元素顺序颠倒 . 81 12金额转换,阿拉伯数字的金额转换成中国传统的形式如: (¥1011)(一千 零一拾一元整)输出。 . 82三. html 86 4、说一说 Servlet 的生命周期? 87 5、Servlet 的基本架构 87 6、SERVLET API 中 forward() 与 redirect()的区别? . 87 7、什么情况下调用 doGet()和 doPost()? . 87 8、Request 对象的主要方法: . 88 9、forward 和 redir

15、ect 的区别 88 10、request.getAttribute() 和 request.getParameter() 有何区别?. 89 11. jsp 有哪些内置对象? 作用分别是什么? 分别有什么方法? 89 12. jsp 有哪些动作? 作用分别是什么? 89 13、JSP 的常用指令 90 14. JSP 中动态 INCLUDE 与静态 INCLUDE 的区别? . 90 15、两种跳转方式分别是什么?有什么区别? . 90 16、页面间对象传递的方法 . 90 17、JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么? . 91 18、MVC 的各个部分都有

16、那些技术来实现?如何实现? . 91 19、我们在 web 应用开发过程中经常遇到输出某种编码的字符,如 iso8859-1 等, 如何输出一个某种编码的字符串? . 91 20现在输入 n 个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就 在另一页面显示按什么排序,结果为,提供 reset 92五. 数据库部分 92 1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 . 92 2、列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排 序.92 3、存储过程与触发器必须讲,经常被面试到? . 93 4、数据库三范式是什么? . 95 5、说出一些数据

17、库优化方面的经验? . 96 6、union 和 union all 有什么不同 ? . 97 7.分页语句 98 8.用一条 SQL 语句 查询出每门课都大于 80 分的学生姓名. 101 9.所有部门之间的比赛组合 101 10.每个月份的发生额都比 101 科目多的科目 102 11.统计每年每月的信息 103 12.显示文章标题,发帖人、最后回复时间 104 13.删除除了 id 号不同,其他都相同的学生冗余信息 105 14.航空网的几个航班查询题: 105 15.查出比经理薪水还高的员工信息: 106 16、求出小于 45 岁的各个老师所带的大于 12 岁的学生人数 . 107 1

18、7.求出发帖最多的人: 108 18、一个用户表中有一个积分字段,假如数据库中有 100 多万个用户,若要在每年 第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? . 108 19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他用户。 . 109 20. xxx 公司的 sql 面试 . 109 21、注册 Jdbc 驱动程序的三种方式 110 22、用 JDBC 如何调用存储过程 . 110 23、JDBC 中的 PreparedStatement 相比 Statement 的好处 111 24. 写一个用 jdbc 连接并访问 oracle 数据的程序代码 . 11

19、2 25、Class.forName 的作用? 为什么要用 ? 112 26、大数据量下的分页解决方法。 . 112 27、用 JDBC 查询学生成绩单, 把主要代码写出来(考试概率极大). . 113 28、这段代码有什么不足之处? . 113 29、说出数据连接池的工作机制是什么? . 114 30、为什么要用 ORM? 和 JDBC 有何不一样? 114六. XML 部分 . 114 1、xml 有哪些解析技术?区别是什么? 114 2、你在项目中用到了 xml 技术的哪些方面?如何实现的? . 115 3、用 jdom 解析 xml 文件时如何解决中文问题?如何解析? . 115 4、

20、编程用 JAVA 解析 XML 的方式. 1165、XML 文档定义有几种形式?它们之间有何本质区别?解析 XML 文档有哪几种 方式?. 118七. 流行的框架与新技术 118 1、谈谈你对 Struts 的理解。 118 2、谈谈你对 Hibernate 的理解。 . 119 3、AOP 的作用。 119 4、你对 Spring 的理解。 119 5、谈谈 Struts 中的 Action servlet。 121 6、Struts 优缺点 优点: 1. 实现 MVC 模式,结构清晰,使开发者只关注业务逻 辑的实现.121 7、STRUTS 的应用( 如 STRUTS 架构) . 122

21、8、说说 struts1 与 struts2 的区别。 122 9、 hibernate 中的 update()和 saveOrUpdate()的区别, session 的 load()和 get()的区别。 . 123 10、简述Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. . 123 11、iBatis 与 Hibernate 有什么不同? . 123 12、写 Hibernate 的一对多和多对一双向关联的 orm 配置 ? . 123 9、hibernate 的 inverse 属性的作用? 123 13、在 DAO 中如何体现 DAO

22、 设计模式? 124 14、spring+Hibernate 中委托方案怎么配置 ? 124 15、spring+Hibernate 中委托方案怎么配置 ? 124 16. hibernate 进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没 有一个实体类与之对应如何解决; . 124 17.介绍一下 Hibernate 的二级缓存 124 18、Spring 的依赖注入是什么意思 ? 给一个 Bean 的 message 属性, 字符串类型, 注入值为 “Hello” 的 XML 配置文件该怎么写? 126 19、Jdo 是什么? 126 20、什么是 spring 的 IOC

23、AOP . 127 21、STRUTS 的工作流程! . 127 22、spring 与 EJB 的区别! 127 ! 八. 软件工程与设计模式 127 1、UML 方面 . 127 2、j2ee 常用的设计模式?说明工厂模式。 . 127 3、开发中都用到了那些设计模式?用在什么场合? . 128九. j2ee 部分 . 128 1、BS 与 CS 的联系与区别。 128 2、应用服务器与 WEB SERVER 的区别? 129 3、应用服务器有那些? . 129 4、J2EE 是什么? . 129 5、J2EE 是技术还是平台还是框架? 什么是 J2EE 129 6、请对以下在 J2EE

24、中常用的名词进行解释(或简单描述) 130 7、如何给 weblogic 指定大小的内存? 130 8、如何设定的 weblogic 的热启动模式(开发模式)与产品发布模式? 130 9、如何启动时不需输入用户名与密码? . 131 10、在 weblogic 管理制台中对一个应用域(或者说是一个网站,Domain)进行 jms 及 ejb 或连接池等相关信息进行配置后,实际保存在什么文件中? 131 11 、 说 说 weblogic 中 一 个 Domain 的 缺 省 目 录 结 构 ? 比 如 要 将 一 个 简 单 的 helloWorld.jsp 放 入 何 目 录 下 , 然 的

25、 在 浏 览 器 上 就 可 打 入 http:/ 主 机 : 端 口 号 /helloword.jsp 就 可 以 看 到 运 行 结 果 了 ? 又 比 如 这 其 中 用 到 了 一 个 自 己 写 的 javaBean 该如何办? . 131 12、在 weblogic 中发布 ejb 需涉及到哪些配置文件 . 131 13、如何在 weblogic 中进行 ssl 配置与客户端的认证配置或说说 j2ee(标准)进行 ssl 的配置? . 131 14、如何查看在 weblogic 中已经发布的 EJB? . 132十. EBJ 部分 . 132 1、EJB 是基于哪些技术实现的?并说

26、出 SessionBean 和 EntityBean 的区别, StatefulBean 和StatelessBean 的区别。 . 132 2、简要讲一下 EJB 的 7 个 Transaction Level? 132 3、EJB 与 JAVA BEAN 的区别? 132 4、EJB 包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的? . 133 5、EJB 容器提供的服务 . 133 6、EJB 的激活机制 . 133 7、EJB 的几种类型 . 1338、客服端调用 EJB 对象的几个基本步骤 134十一. webservice 部分 134 1

27、、 WEB SERVICE 名词解释。 JSWDL 开发包的介绍。 JAXP、 JAXM 的解释。 SOAP、 UDDI,WSDL 解释。 . 134 2、CORBA 是什么 ?用途是什么? 134 3. Linux . 1354、LINUX 下线程,GDI 类的解释。 . 1355. 问得稀里糊涂的题 135 6、四种会话跟踪技术 . 135 7、简述逻辑操作(i10;i+) for(int j=0;j10;j+) System.out.println(“i=” + i + “,j=” + j); if(j = 5) break ok; for(int i=0;i4;i+) for(int

28、j=0;j5;j+) System.out.println(“i=”+i+”; j=”+j); if(j=3) i=4; break; try for (int i = 0; i 4; i+) for (int j = 0; j 5; j+) System.out.println(“i=” + i + “; j=” + j); if (j = 3) throw new Exception(); catch (Exception e) System.out.println(“e”); 另外,我个人通常并不使用标号这种方式,而是让外层的循环条件表达式的结果可以受到里层循环体 代码的控制,例如,要在

29、二维数组中查找到某个数字。 int arr = 1,2,3,4,5,6,7,9; boolean found = false; for(int i=0;iarr.length i+) for(int j=0;jarri.length;j+) System.out.println(“i=” + i + “,j=” + j); if(arrij = 5) found = true; break; 5、switch 语句能否作用在 byte 上,能否作用在 long 上,能 、 否作用在 String 上? 在 switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体) ,

30、整数表达式可以是 int 基本类型或 Integer包装类型,由于,byte,short,char 都可以隐含转换为 int,所以,这些类型以及这些类型 的包装类型也是可以的。显然,long 和 String 类型都不符合 switch 的语法规定,并且不能被隐式转换成int 类型,所以,它们不能作用于 swtich 语句中。 6、short s1 = 1; s1 = s1 + 1;有什么错 short s1 = 1; s1 += 1; 、 有什么错? 有什么错 有什么错? 有什么错 对于 short s1 = 1; s1 = s1 + 1; 由于s1+1 运算时会自动提升表达式的类型,所以结

31、果是 int 型,再赋值 给 short 类型 s1 时,编译器将报告需要强制转换类型的错误。 对于 short s1 = 1; s1 += 1;由于 += 是 java 语言规定的运算符,java 编译器会对它进行特殊处理,因此 可以正确编译。 7、char 型变量中能不能存贮一个中文汉字 为什么 、 型变量中能不能存贮一个中文汉字?为什么 为什么? char 型变量是用来存储 Unicode 编码的字符的,unicode 编码字符集中包含了汉字,所以,char 型变量 中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在 unicode编码字符集中,那么,这个 char 型变量中就不

32、能存储这个特殊汉字。补充说明: unicode 编码占用两个字节,所以,char 类型的变量也是占 用两个字节。 备注:后面一部分回答虽然不是在正面回答题目,但是,为了展现自己的学识和表现自己对问题理解 的透彻深入,可以回答一些相关的知识,做到知无不言,言无不尽。 8、用最有效率的方法算出 2 乘以 8 等於几 、 等於几? 2 3, 因为将一个数左移 n 位,就相当于乘以了 2 的 n 次方,那么,一个数乘以 8 只要将其左移 3 位即可, 而位运算 cpu 直接支持的,效率最高,所以,2 乘以 8 等於几的最效率的方法是 2 3。 9、请设计一个一百亿的计算器 、 首先要明白这道题目的考查

33、点是什么,一是大家首先要对计算机原理的底层细节要清楚、要知道加减 法的位运算原理和知道计算机中的算术运算会发生越界的情况,二是要具备一定的面向对象的设计思想。 首先,计算机中用固定数量的几个字节来存储的数值,所以计算机中能够表示的数值是有一定的范围 的,为了便于讲解和理解,我们先以 byte 类型的整数为例,它用 1 个字节进行存储,表示的最大数值范围 为-128 到+127。-1 在内存中对应的二进制数据为 11111111,如果两个 -1 相加,不考虑 Java 运算时的类型提 升,运算后会产生进位,二进制结果为 1,11111110,由于进位后超过了 byte 类型的存储空间,所以进位部

34、 分被舍弃,即最终的结果为 11111110,也就是-2,这正好利用溢位的方式实现了负数的运算。-128 在内存 中对应的二进制数据为 10000000, 如果两个-128 相加, 不考虑 Java运算时的类型提升, 运算后会产生进位, 二进制结果为 1,00000000,由于进位后超过了 byte类型的存储空间,所以进位部分被舍弃,即最终的结果 为 00000000,也就是 0,这样的结果显然不是我们期望的,这说明计算机中的算术运算是会发生越界情况 计算机中的算术运算是会发生越界情况 的,两个数值的运算结果不能超过计算机中的该类型的数值范围。由于 Java 中涉及表达式运算时的类型自 两个数

35、值的运算结果不能超过计算机中的该类型的数值范围。 动提升,我们无法用 byte 类型来做演示这种问题和现象的实验,大家可以用下面一个使用整数做实验的例 子程序体验一下: int a = Integer.MAX_VALUE; int b = Integer.MAX_VALUE; int sum = a +b; System.out.println(“a=”+a+”,b=”+b+”,sum=”+sum); 先不考虑 long 类型,由于 int 的正数范围为 2的 31 次方,表示的最大数值约等于 2*1000*1000*1000, 也就是 20 亿的大小, 所以, 要实现一个一百亿的计算器, 我

36、们得自己设计一个类可以用于表示很大的整数, 并且提供了与另外一个整数进行加减乘除的功能,大概功能如下: ()这个类内部有两个成员变量,一个表示符号,另一个用字节数组表示数值的二进制数 ()有一个构造方法,把一个包含有多位数值的字符串转换到内部的符号和字节数组中 ()提供加减乘除的功能 public class BigInteger int sign; byte val; public Biginteger(String val) sign = ; val = ; public BigInteger add(BigInteger other) public BigInteger subtract

37、(BigInteger other) public BigInteger multiply(BigInteger other) public BigInteger divide(BigInteger other) 备注:要想写出这个类的完整代码,是非常复杂的,如果有兴趣的话,可以参看 jdk 中自带的 java.math.BigInteger 类的源码。面试的人也知道谁都不可能在短时间内写出这个类的完整代码的,他要的 是你是否有这方面的概念和意识,他最重要的还是考查你的能力,所以,你不要因为自己无法写出完整的 最终结果就放弃答这道题,你要做的就是你比别人写得多,证明你比别人强,你有这方面的思想

38、意识就可 以了,毕竟别人可能连题目的意思都看不懂,什么都没写,你要敢于答这道题,即使只答了一部分,那也 与那些什么都不懂的人区别出来,拉开了距离,算是矮子中的高个,机会当然就属于你了。另外,答案中 的框架代码也很重要,体现了一些面向对象设计的功底,特别是其中的方法命名很专业,用的英文单词很 精准,这也是能力、经验、专业性、英语水平等多个方面的体现,会给人留下很好的印象,在编程能力和 其他方面条件差不多的情况下,英语好除了可以使你获得更多机会外,薪水可以高出一千元。 10、使用 final 关键字修饰一个变量时,是引用不能变,还 、 关键字修饰一个变量时 是引用不能变, 一个变量时, 是引用的对

39、象不能变? 是引用的对象不能变? 使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改 变的。例如,对于如下语句: final StringBuffer a=new StringBuffer(“immutable”); 执行如下语句将报告编译期错误: a=new StringBuffer(“”); 但是,执行如下语句则可以通过编译: a.append(“ broken!”); 有人在定义方法的参数时,可能想采用如下形式来阻止方法内部修改传进来的参数对象: public void method(final ) StringBuffer param)

40、实际上,这是办不到的,在该方法内部仍然可以增加如下代码来修改参数对象: param.append(“a”); 11、 ”=”和 equals 方法究竟有什么区别? 、 方法究竟有什么区别? 和 (单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则 很难说清楚) =操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是 否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用=操作符。 如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆 内存) ,变量也占用一块内存,例如 Objet

41、obj = new Object();变量 obj 是一个内存,new Object()是另一个内 存,此时,变量 obj 所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的 变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这 时候就需要用=操作符进行比较。 equals 方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较 的两个对象是独立的。例如,对于下面的代码: String a=new String(“foo”); String b=new String(“foo”); 两条 new 语句创

42、建了两个对象,然后用 a,b 这两个变量分别指向了其中一个对象,这是两个不同的对 象,它们的首地址是不同的,即 a 和 b 中存储的数值是不相同的,所以,表达式 a=b 将返回 false,而这 两个对象中的内容是相同的,所以,表达式 a.equals(b)将返回 true。 在 实 际 开 发 中 , 我 们 经 常 要 比 较 传 递 进 行 来 的 字 符 串 内 容 是 否 等 , 例 如 , String input = ;input.equals(“quit”),许多人稍不注意就使用= 进行比较了,这是错误的,随便从网上找几个项目实战 的教学视频看看,里面就有大量这样的错误。记住,

43、字符串的比较基本上都是使用 equals 方法。 如果一个类没有自己定义equals 方法,那么它将继承 Object 类的 equals 方法,Object 类的 equals 方法 的实现代码如下: boolean equals(Object o) return this=o; 这说明,如果一个类没有自己定义 equals 方法,它默认的 equals 方法(从 Object 类继承的)就是使 用=操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用 equals 和使用=会得到同样的 结果,如果比较的是两个独立的对象则总返回 false。如果你编写的类希望能够比较该类创建的两个

44、实例对 象的内容是否相同,那么你必须覆盖 equals 方法,由你自己写代码来决定在什么情况即可认为两个对象的 内容是相同的。12、静态变量和实例变量的区别? 、静态变量和实例变量的区别? 在语法定义上的区别:静态变量前要加 static 关键字,而实例变量前则不加。 在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被 分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只 要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。 总之,实例变量必须创建对象后才可以通过这个对象来使

45、用,静态变量则可以直接使用类名来引用。 例如,对于下面的程序,无论创建多少个实例对象,永远都只分配了一个 staticVar 变量,并且每创建 一个实例对象,这个 staticVar 就会加 1;但是,每创建一个实例对象,就会分配一个 instanceVar,即可能 分配多个 instanceVar,并且每个 instanceVar 的值都只自加了 1 次。 public class VariantTest public static int staticVar = 0; public int instanceVar = 0; public VariantTest() staticVar+;

46、instanceVar+; System.out.println(“staticVar=” + staticVar + ”,instanceVar=” + instanceVar); 备注:这个解答除了说清楚两者的区别外 ,最后还用一个具体的应用例子来说明两者的差异,体现 了自己有很好的解说问题和设计案例的能力,思维敏捷,超过一般程序员,有写作能力! 13、是否可以从一个 static 方法内部发出对非 static 方法的 、 调用? 调用? 不可以。因为非 static 方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方 法调用,而 static 方法调用时不需要创建对

47、象,可以直接调用。也就是说,当一个 static 方法被调用时,可 能还没有创建任何实例对象,如果从一个 static 方法中发出对非 static 方法的调用,那个非 static 方法是关 联到哪个对象上的呢?这个逻辑无法成立,所以,一个 static 方法内部发出对非 static 方法的调用。14、Integer 与 int 的区别 、 int 是 java 提供的 8 种原始数据类型之一。 Java 为每个原始类型提供了封装类,Integer 是 java 为 int 提 供的封装类。int 的默认值为 0,而 Integer 的默认值为null,即 Integer 可以区分出未赋值

48、和值为 0 的区别, int 则无法表达出未赋值的情况, 例如, 要想表达出没有参加考试和考试成绩为 0 的区别, 则只能使用 Integer。 在 JSP 开发中,Integer的默认为 null,所以用 el 表达式在文本框中显示时,值为空白字符串,而 int 默认 的默认值为0,所以用 el 表达式在文本框中显示时,结果为 0,所以,int 不适合作为 web 层的表单数据的 类型。 在 Hibernate 中,如果将 OID 定义为 Integer 类型,那么 Hibernate 就可以根据其值是否为null 而判断一 个对象是否是临时的,如果将 OID 定义为了 int 类型,还需要

49、在 hbm 映射文件中设置其 unsaved-value 属性 为 0。 另外,Integer 提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数,Integer 中还定义 了表示整数的最大值和最小值的常量。 15、 Math.round(11.5)等於多少 Math.round(-11.5)等於多 、 等於多少? 等於多少 等於多 少? Math 类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的英文名称的含 义 相 对 应 , 例 如 , ceil 的 英 文 意 义 是 天 花 板 , 该 方 法 就 表 示 向 上 取 整 , Math.ceil(11.3) 的 结 果 为 12,Math.ceil(-11.3)的结果是-11;floor 的英文意义是地板,该方法就表示向下取整,Math.floor(11.6)的结果 为 11,Math.floor(-11.6)的结果是-12; 最难掌握的是 round 方法, 它表示 “四舍五

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报