Java新教材第四章面试题.doc_第1页
Java新教材第四章面试题.doc_第2页
Java新教材第四章面试题.doc_第3页
Java新教材第四章面试题.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第 4 章 数组和字符串操作 63 4 1 数组 63 4 1 1 为什么使用数组 63 4 1 2 数组的基本概念 64 什么是数组 答案 数组是编程语言中非常常见的一种数据结构 它用来存储一组相同数据类 型数据 4 1 3 一维数组的创建和使用 64 下面哪一项是正确的定义一维数组的方式 答案 两种方式都正确 4 1 4 一维数组的应用 70 4 1 5 多维数组 76 什么是多维数组 答案 Java 中支持多维数组 也就是 数组的数组 多维数组的声明是通过 每一维一组方括号的方式来实现的 如何把一段逗号分割的字符串转换成一个数组 答案 如果不查 jdk api 我很难写出来 我可以说说我的思路 用正则表达式 代码大概为 String result orgStr split 用 StingTokenizer 代码为 StringTokenizer tokener StringTokenizer orgStr String result new String tokener countTokens Int i 0 while tokener hasNext result i toker nextToken 数组有没有 length 这个方法 答案 数组没有 length 这个方法 有 length 的属性 String 有有 length 这个方 法 4 2 String 字符串 77 VI 请问数组和 String 有没有 length 这个方法或 length 的属性 答案 数组没有 length 这个方法 但有 length 的属性 String 有 length 这个方 法 什么是字符串 答案 字符串是一系列字符组成的序列 4 2 2 如何使用 String 字符串 77 String 字符串对象建立后 还能修改吗 为什么 答案 不能 因为 String 类是字符串常量类 该类对象建立后不能修改 4 2 2 String 字符串的长度 77 4 2 3 String 字符串的比较 78 4 2 4 String 字符串的连接 81 String s Hello s s world 这两行代码执行后 原始的 String 对 象中的内容到底变了没有 答案 没有 因为 String 被设计成不可变 immutable 类 所以它的所有对象都是 不可变对象 在这段代码中 s 原先指向一个 String 对象 内容是 Hello 然后 我们对 s 进行了 操作 那么 s 所指向的那个对象是否发生了改变呢 答案是没 有 这时 s 不指向原来那个对象了 而指向了另一个 String 对象 内容为 Hello world 原来那个对象还存在于内存之中 只是 s 这个引用变量不再指向 它了 通过上面的说明 我们很容易导出另一个结论 如果经常对字符串进行各种各样 的修改 或者说 不可预见的修改 那么使用 String 来代表字符串的话会引起很 大的内存开销 因为 String 对象建立之后不能再改变 所以对于每一个不同的 字符串 都需要一个 String 对象来表示 这时 应该考虑使用 StringBuffer 类 它允许修改 而不是每个不同的字符串都要生成一个新的对象 并且 这两种类 的对象转换十分容易 同时 我们还可以知道 如果要使用内容相同的字符串 不必每次都 new 一个 String 例如我们要在构造器中对一个名叫 s 的 String 引用变量进行初始化 把 它设置为初始值 应当这样做 public class Demo private String s public Demo s Initial Value 而非 s new String Initial Value 后者每次都会调用构造器 生成新对象 性能低下且内存开销大 并且没有意义 VII 因为 String 对象不可改变 所以对于内容相同的字符串 只要一个 String 对象来 表示就可以了 也就说 多次调用上面的构造器创建多个对象 他们的 String 类 型属性 s 都指向同一个对象 上面的结论还基于这样一个事实 对于字符串常量 如果内容相同 Java 认为它 们代表同一个 String 对象 而用关键字 new 调用构造器 总是会创建一个新的对 象 无论内容是否相同 至于为什么要把 String 类设计成不可变类 是它的用途决定的 其实不只 String 很多 Java 标准类库中的类都是不可变的 在开发一个系统的时候 我们 有时候也需要设计不可变类 来传递一组相关的值 这也是面向对象思想的体现 不可变类有一些优点 比如因为它的对象是只读的 所以多线程并发访问也不会 有任何问题 当然也有一些缺点 比如每个不同的状态都要一个对象来代表 可 能会造成性能上的问题 所以 Java 标准类库还提供了一个可变版本 即 StringBuffer 是否可以继承 String 类 答案 String 类是 final 类故不可以继承 4 2 5 String 字符串的提取和查询 82 能不能自己写个类 也叫 java lang String 答案 可以 但在应用的时候 需要用自己的类加载器去加载 否则 系统的类 加载器永远只是去加载 jre jar 包中的那个 java lang String 由于在 tomcat 的 web 应用程序中 都是由 webapp 自己的类加载器先自己加载 WEB INF classess 目录 中的类 然后才委托上级的类加载器加载 如果我们在 tomcat 的 web 应用程序 中写一个 java lang String 这时候 Servlet 程序加载的就是我们自己写的 java lang String 但是这么干就会出很多潜在的问题 原来所有用了 java lang String 类的都将出现问题 虽然 java 提供了 endorsed 技术 可以覆盖 jdk 中的某些类 具体做法是 但 是 能够被覆盖的类是有限制范围 反正不包括 java lang 这样的包中的类 下面的例如主要是便于大家学习理解只用 不要作为答案的一部分 否则 人 家怀疑是题目泄露了 例如 运行下面的程序 package java lang public class String param args public static void main String args TODO Auto generated method stub System out println string VIII 报告的错误如下 java lang NoSuchMethodError main Exception in thread main 这是因为加载了 jre 自带的 java lang String 而该类中没有 main 方法 4 3 StringBuffer 字符串 86 StringBuffer 字符串对象建立后 还能修改吗 为什么 答案 能 因为 StringBuffer 表示一个内容可变的 mutable 字符系列 通过 StringBuffer 的 append insert reverse setCharAt setLength 等方法 可 以对这个字符串中的内容进行修改 String 和 StringBuffer 的区别是什么 答案 Java 平台提供了两个类 String 和 StringBuffer 它们可以储存和操作 字符串 即包含多个字符的字符数据 这个 String 类提供了数值不可改变的字 符串 而这个 StringBuffer 类提供的字符串进行修改 当你知道字符数据要改 变的时候你就可以使用 StringBuffer 典型地 你可以使用 StringBuffers 来 动态构造字符数据 请简述冒泡排序算法的运作 答案 比较相邻的元素 如果第一个比第二个大 就交换他们两个 对每一对相邻元素作同样的工作 从开始第一对到结尾的最后一对 在这一点 最后的元素应该会是最大的数 针对所有的元素重复以上的步骤 除了最后一个 持续每次对越来越少的元素重复上面的步骤 直到没有任何一对数字需要比较 StringBuffer 与 StringBuilder 的区别 答案 StringBuffer 和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论