本文取自《你必须知道的261个Java语言问题》一书的目录,前段时间在书城快速地浏览了一下,该书的作者总结了很多Java经典问题,注重讲解技术细节和知识扩展,其中的很多问题在业内日渐成熟的架构设计和层出不穷的框架技术面前,显得不是那么的重要,但它们却是Java立足之根本所在。本文仅以此目录抛砖引玉,有兴趣的朋友可以自行查阅答案。
第1章 Java基本概念及环境配置 .1
FAQ1.01 什么是面向对象程序设计? 1
FAQ1.02 面向对象程序设计的基本特征有哪些? 2
FAQ1.03 Java语言是如何产生和发展的? 3
FAQ1.04 Android与Java语言有什么关系? 4
FAQ1.05 Java SE. Java EE和Java ME有什么区别? 5
FAQ1.06 Java语言的运行机制如何? 6
FAQ1.07 什么是JVM?有什么作用?工作机制如何?8
FAQ1.08 什么是JRE(或J2RE)? 9
FAQ1.09 什么是JDK? 10
FAQ1.10 JDK. JRE和JVM之间有什么区别? 11
FAQ1.11 什么是GC?GC的工作原理如何? 12
FAQ1.12 如何安装Java基本开发环境JDK? 13
FAQ1.13 为何在JDK安装路径下存在两个JRE? 16
FAQ1.14 JDK安装时设置PATH和CLASSPATH环境变量有何作用? 17
FAQ1.15 如何编译. 运行Java应用程序? 18
FAQ1.16 如何将程序中的文档注释提取出来生成说明文档? 20
FAQ1.17 怎样制作鼠标双击就可以运行的Jar文件? 23
FAQ1.18 怎样给main(String[] args)方法的args指定参数值? 26
第2章 Java编程基础 28
FAQ2.01 Java中的标识符如何命名?可以用中文吗? 28
FAQ2.02 Java中有哪些关键字? 29
FAQ2.03 用public. protected和private修饰方法有什么区别? 30
FAQ2.04 this关键字有什么含义?在哪些情况下应用? 31
FAQ2.05 super关键字有什么含义?在哪些情况下应用? 32
FAQ2.06 static关键字有什么含义?具体如何应用?能修饰构造方法吗? 34
FAQ2.07 final关键字有什么含义?具体如何应用? 36
FAQ2.08 instanceof关键字有什么含义?如何应用? 37
FAQ2.09 Java中有哪些数据类型? 38
FAQ2.10 如何解决double和float精度不准的问题? 40
FAQ2.11 int和Integer都可以作为整数类型, 那么它们有什么区别? 43
FAQ2.12 float f=3.4语句是否正确? 44
FAQ2.13 成员变量和局部变量有什么区别? 45
FAQ2.14 变量之间传值时可分为值传递和引用传递, 那么它们有何区别? 46
FAQ2.15 Java中有哪些运算符?优先级如何? 48
FAQ2.16 在实现x和y相加时, x+=y和x=x+y两种实现方式有区别吗? 50
FAQ2.17 在执行与运算时, 运算符&和&&有什么区别? 50
FAQ2.18 在实现x递增加1操作时, x++和++x有什么区别? 52
FAQ2.19 x?y:z格式的语句表示什么意思? 53
FAQ2.20 “+”操作符在Java内部是如何实现字符串连接的?54
FAQ2.21 ==和equals()都可用于比较两个操作数是否相等, 它们有什么区别吗? 55
FAQ2.22 创建String对象时, 使用String s=new String (“abc”)和String s=“abc”语句有什么区别? 56
FAQ2.23 break和continue语句有什么区别? 56
FAQ2.24 数组如何定义和初始化? 57
FAQ2.25 如何实现一维和二维数组的遍历? 59
FAQ2.26 如何实现数组的复制? 60
FAQ2.27 数组的排序算法有哪些?如何实现? 61
FAQ2.28 如何解决ArrayIndexOutOfBounds Exception异常? 64
第3章 Java与面向对象 65
FAQ3.01 什么是类. 对象. 属性和方法? 65
FAQ3.02 什么是包?有什么好处? 67
FAQ3.03 什么是抽象类?有什么好处? 67
FAQ3.04 什么是接口?有什么好处? 69
FAQ3.05 什么是多态?有什么好处? 70
FAQ3.06 什么是内部类?有什么好处? 71
FAQ3.07 什么是匿名内部类?如何使用? 73
FAQ3.08 什么是封装类?有什么作用? 74
FAQ3.09 什么是继承?有什么好处? 75
FAQ3.10 使用new关键字创建对象时, 为什么有时候提示找不到无参的构造方法? 76
FAQ3.11 抽象类和接口都可以包含抽象方法, 那么它们有什么区别?使用时该如何选择? 76
FAQ3.12 什么是方法重写?为什么需要方法重写? 78
FAQ3.13 什么是方法重载?为什么需要方法重载? 78
FAQ3.14 构造方法是否可以被重写?能否被重载? 79
FAQ3.15 static修饰的方法能否在子类中重写? 80
FAQ3.16 在定义类时, 何时需要重写Object类中toString()方法? 81
FAQ3.17 在定义类时, 何时需要重写Object类中equals()方法? 82
FAQ3.18 为什么在重写equals()方法时, 一般都会重写HashCode()方法? 84
FAQ3.19 如何重写hashCode()方法? 85
FAQ3.20 Java中动态绑定是什么意思? 87
FAQ3.21 Java中是如何实现多态的?实现机制是什么? 88
FAQ3.22 创建类的对象时, 类中各成员的执行顺序是什么样的? 89
FAQ3.23 什么是初始化块?有什么作用? 90
FAQ3.24 静态初始化块与非静态初始化块有什么区别? 92
FAQ3.25 如何调用内部类中的方法? 93
FAQ3.26 当内部类和外部类的成员名称相同时, 如何在内部类中调用外部类的成员? 94
FAQ3.27 匿名内部类如何访问外部方法的局部变量或参数? 95
FAQ3.28 Java异常处理机制是什么样的? 96
FAQ3.29 常见的RuntimeException异常有哪些? 97
FAQ3.30 Java中异常处理的方式有哪些? 98
FAQ3.31 try-catch-finally语句块各部分的执行顺序如何? 100
FAQ3.32 为什么使用自定义异常?自定义异常如何使用? 101
第4章 Java流和文件操作 103
FAQ4.01 如何获取文件的属性信息? 103
FAQ4.02 如何判断文件是否为空? 105
FAQ4.03 如何实现文件的创建. 删除和移动? 105
FAQ4.04 如何创建和删除文件夹? 107
FAQ4.05 如何遍历目录中所有的文件? 109
FAQ4.06 如何获取文件夹大小? 110
FAQ4.07 什么是流?如何分类?具体包含哪些类? 111
FAQ4.08 如何实现字节流和字符流之间的转化? 113
FAQ4.09 如何判断要读的文件是否到达末尾? 116
FAQ4.10 如何读文件. 写文件? 117
FAQ4.11 如何以追加的方式写文件? 118
FAQ4.12 如何实现文件和文件夹的复制? 119
FAQ4.13 如何在文件的任意位置进行读写? 121
FAQ4.14 使用Buffered缓冲流写文件, 为什么内容没有写入? 122
FAQ4.15 如何实现文件的分割与合并? 123
FAQ4.16 什么是NIO?与I/O有什么区别和联系? 125
FAQ4.17 如何使用NIO读写文件? 127
FAQ4.18 什么是字符编码和解码? 129
FAQ4.19 读写文件时为什么中文字符经常产生乱码? 130
FAQ4.20 如何解决FileReader读文件乱码的问题? 131
FAQ4.21 为什么DataInputStream和DataOutputStream读写文件时乱码? 132
FAQ4.22 如何实现文件锁定功能? 134
FAQ4.23 如何实现对文件和字符串加密. 解密? 135
FAQ4.24 如何实现对文件和目录的压缩. 解压缩? 139
FAQ4.25 如何读写properties文件? 143
FAQ4.26 如何读写XML文件? 146
FAQ4.27 如何读写XML文件中的元素属性? 151
FAQ4.28 如何读写CSV格式的文件? 152
FAQ4.29 如何为图片文件生成缩略图? 154
FAQ4.30 如何操作Excel文件? 156
FAQ4.31 如何操作Word文件? 161
第5章 Java GUI编程 164
FAQ5.01 什么是Java GUI?Swing与AWT有什么关系? 164
FAQ5.02 什么是布局管理器?常用的布局管理器有哪些? 165
FAQ5.03 如何在窗体中显示一张图片? 170
FAQ5.04 如何为容器添加滚动条功能? 171
FAQ5.05 如何实现一个打开文件或者是存储文件的对话框? 173
FAQ5.06 如何实现弹出消息框的功能? 175
FAQ5.07 如何使用Dialog对话框? 177
FAQ5.08 如何为按钮添加单击事件? ..178
FAQ5.09 如何为窗体添加关闭事件? 181
FAQ5.10 如何实现窗体菜单功能? 183
FAQ5.11 如何处理键盘输入事件? 185
FAQ5.12 如何处理鼠标单击事件?如何区分是左键还是右键? 186
FAQ5.13 如何实现鼠标右键弹出菜单的功能? 189
FAQ5.14 如何使用表格组件? 191
FAQ5.15 如何实现记事本功能? 193
FAQ5.16 如何实现贪吃蛇游戏? 198
第6章 Java线程和序列化 208
FAQ6.01 线程. 进程和程序有何区别和联系?208
FAQ6.02 如何创建和启动一个线程? 209
FAQ6.03 线程的基本状态有哪些?它们之间有何关系? 211
FAQ6.04 什么是线程优先级?线程依据什么原则调度执行? 212
FAQ6.05 什么是后台线程?如何创建一个后台线程? 214
FAQ6.06 如何使正在运行的线程在指定时间内休眠? 216
FAQ6.07 如何终止一个正在运行的线程? 218
FAQ6.08 为何stop()和suspend()方法不推荐使用? 219
FAQ6.09 如何控制线程的暂停和启动? 220
FAQ6.10 如何实现多个线程同步? 225
FAQ6.11 什么是对象序列化和对象反序列化? 233
FAQ6.12 实现对象序列化的方法有哪些? 234
FAQ6.13 如何实现对象在磁盘中的存取操作? 236
FAQ6.14 使用ObjectInputStream读取对象时为什么会发生StreamCorruptedException异常? 238
FAQ6.15 对象中的成员哪些参与序列化?哪些不参与序列化? 241
FAQ6.16 如何自定义序列化和反序列化过程? 243
FAQ6.17 如何使用Externalizable接口定制序列化过程? 247
FAQ6.18 在序列化类中添加serialVersionUID属性有什么作用? 250
FAQ6.19 当序列化遭遇继承时, 如何正确处理对象序列化过程?251
第7章 Java网络编程 256
FAQ7.01 什么是TCP/IP?什么是IP? 256
FAQ7.02 TCP和UDP有什么区别? 258
FAQ7.03 什么是HTTP?HTTP的工作原理如何? 259
FAQ7.04 在Socket通信时如何获取主机和客户机的IP地址? 261
FAQ7.05 如何利用Socket实现基于TCP的通信? 264
FAQ7.06 如何利用Socket传输中文字符? 265
FAQ7.07 如何在Socket读取数据时使用超时设置?267
FAQ7.08 如何利用Socket传递对象信息? 268
FAQ7.09 如何利用Socket实现文件传输? 271
FAQ7.10 如何基于Socket实现聊天系统? 274
FAQ7.11 如何利用Socket实现基于UDP的通信? 278
FAQ7.12 如何利用UDP Socket技术实现IP多点传送? 280
FAQ7.13 如何获取Internet资源的大小? 285
FAQ7.14 如何实现Internet资源的单线程下载? 286
FAQ7.15 URL如何通过proxy代理访问Internet资源? 287
FAQ7.16 如何实现Internet资源下载的断点续传? 288
FAQ7.17 如何实现Internet资源的多线程下载? 290
FAQ7.18 如何解析Internet网页内容? 293
第8章 Java常用功能 296
FAQ8.01 如何使字符串中包含“"”字符 296
FAQ8.02 如何实现字符串和整数之间的转化? 297
FAQ8.03 如何替换字符串中的字符或子字符串? 298
FAQ8.04 如何过滤字符串前后以及中间出现的空格? 299
FAQ8.05 如何对字符串中的子字符或子字符串进行截取? 301
FAQ8.06 如何判断一个字符串是否符合数值格式? 302
FAQ8.07 如何实现字符串的切割和查找? 303
FAQ8.08 如何实现十进制和二进制之间的相互转化? 306
FAQ8.09 如何将字节流转换为指定编码的字符串? 307
FAQ8.10 如何实现日期格式和字符串之间的转化? 308
FAQ8.11 String. StringBuffer和StringBuilder有什么区别? 310
FAQ8.12 如何获得一个随机数? 311
FAQ8.13 List. Set和Map是否继承自Collection接口?有什么区别? 312
FAQ8.14 ArrayList与LinkedList. Vector的区别是什么? 313
FAQ8.15 HashMap和Hashtable有什么区别? 314
FAQ8.16 如何遍历Map和Vector集合? 315
FAQ8.17 如何获取系统当前时间? 317
FAQ8.18 如何获得系统属性? 318
FAQ8.19 什么是反射机制?有什么作用? 319
FAQ8.20 如何读取键盘输入的信息? 322
FAQ8.21 如何获取当前工程目录? 323
FAQ8.22 如何使用Java调用系统的exe文件? 324
FAQ8.23 如何使用Java执行cmd命令? 325
FAQ8.24 如何使用Java程序打开一个Word文档? 326
FAQ8.25 如何使用MD5和SHA算法加密信息? 327
第9章 Java数据库操作 329
FAQ9.01 什么是JDBC?有什么作用? 329
FAQ9.02 Java与数据库的连接方式有哪些? 330
FAQ9.03 如何连接各种类型的数据库? 331
FAQ9.04 如何实现对数据库数据的查询? 335
FAQ9.05 如何实现对数据库数据的增加. 删除和修改? 336
FAQ9.06 如何使用PrepareStatement对数据库操作? 339
FAQ9.07 Statement和PrepareStatement有什么区别? 340
FAQ9.08 如何调用数据库中的存储过程? 341
FAQ9.09 如何通过JDBC-ODBC桥访问Access数据库? 344
FAQ9.10 连接Oracle数据库时thin和oci方式有什么区别? 346
FAQ9.11 如何判断ResultSet结果集为空? 347
FAQ9.12 如何获取ResultSet中含有的记录数量? 348
FAQ9.13 如何获取ResultSet中n~m位置区间的记录? 350
FAQ9.14 如何利用ResultSet更新数据库数据? 351
FAQ9.15 如何使用LIKE关键字实现模糊查询? 352
FAQ9.16 如何实现查询的分组统计和排序? 354
FAQ9.17 如何实现多表联合查询? 355
FAQ9.18 如何使用JDBC的批处理操作? 357
FAQ9.19 如何实现Oracle字段值递增的功能? 358
FAQ9.20 如何处理数据表中Date类型的字段? 360
FAQ9.21 如何向表中插入含有特殊字符的信息? 360
FAQ9.22 如何使用BLOB类型的字段存取图片? 361
FAQ9.23 如何使用CLOB类型的字段存取字符文件?363
FAQ9.24 如何通过程序创建和删除数据表? 365
FAQ9.25 如何获取数据表的结构信息? 367
FAQ9.26 如何获取数据库中所有表名? 369
FAQ9.27 如何用程序备份和恢复数据库? 370
FAQ9.28 什么是事务?如何使用JDBC事务控制? 372
FAQ9.29 什么是JTA?JTA事务与JDBC事务有什么区别? 373
FAQ9.30 如何使用JTA实现分布式事务控制? 374
FAQ9.31 什么是数据库连接池?工作原理如何? 376
FAQ9.32 如何提升SQL语句的查询性能? 377
FAQ9.33 如何解决MySQL数据库插入乱码的问题?379
第10章 Java Web程序设计 381
FAQ10.01 什么是JSP?JSP的工作原理如何? 381
FAQ10.02 JSP. Java和JavaScript有什么区别和联系? 383
FAQ10.03 JSP程序开发和运行环境是什么?如何搭建? 383
FAQ10.04 如何开发一款JSP程序? 387
FAQ10.05 在JSP中有哪些注释格式?有什么作用? 390
FAQ10.06 JSP中有哪些内建对象?分别有什么作用? 391
FAQ10.07 page. request. session和application有什么区别? 395
FAQ10.08 如何解决request.getParameter()取值乱码问题? 396
FAQ10.09 JSP中forward和redirect有什么区别? 397
FAQ10.10 如何在多个JSP页面之间传递信息? 399
FAQ10.11 如何解决URL传递中文时出现乱码的问题?400
FAQ10.12 动态include与静态include有什么区别? 401
FAQ10.13 什么是JavaBean?如何使用JavaBean? 402
FAQ10.14 什么是Session?如何使用Session? 403
FAQ10.15 如何在关闭页面时自动清除Session? 405
FAQ10.16 什么是Cookie?如何使用Cookie? 406
FAQ10.17 如何在禁用Cookie的情况下使用Session? 408
FAQ10.18 如何在JSP中避免表单的重复提交?409
FAQ10.19 如何实现JSP数据和JavaScript数据的交互使用? 411
FAQ10.20 什么是Servlet?Servlet与JSP有什么区别? 412
FAQ10.21 Servlet容器的工作原理如何? 413
FAQ10.22 如何在Servlet中使用Session和Application? 414
FAQ10.23 如何编写多线程安全的Servlet程序? 415
FAQ10.24 如何在Servlet和JSP中获取工程文件的绝对路径?417
FAQ10.25 如何获取客户端浏览器和操作系统信息? 417
FAQ10.26 如何在Web程序中实现定时运行的功能?418
FAQ10.27 如何实现网站登录记忆跳转的功能? 421
FAQ10.28 如何将JSP动态页面转换为HTML静态页面? 423
FAQ10.29 如何实现数据分页显示的功能? 424
FAQ10.30 如何将JSP内容以Excel或Word格式输出? 431
FAQ10.31 如何在JSP中实现打印功能? 432
FAQ10.32 如何实现图片验证码功能? 433
FAQ10.33 如何实现饼状图. 柱状图和曲线图? 436
FAQ10.34 如何实现进度条显示功能? 443
FAQ10.35 如何实现网站计数器功能? 447
FAQ10.36 如何发送HTML格式和带附件的邮件? 448
FAQ10.37 如何实现文件的上传和下载? 453
FAQ10.38 如何禁止浏览器缓存页面内容? 457
FAQ10.39 如何在网页中在线播放音乐和视频? 458
FAQ10.40 如何处理JSP页面的错误? 460
FAQ10.41 如何利用过滤器实现权限验证功能? 462
FAQ10.42 如何实现JSP防盗链功能?464