`
qilixiang012
  • 浏览: 204022 次
文章分类
社区版块
存档分类
最新评论

java string方面考题

 
阅读更多

(1)运算符的重载
表达式10.4+"4.2"的结果是什么?
A返回double类型14.6
B返回string类型14.6
C返回long类型14
D返回string类型10.442
试题分析:
Java不支持运算符重载,但是在Java内部提供了一些特殊运算符,它们具有重载的特性。
例如,“+”。当一个操作数为原始数据类型,另一个操作数为string数据类型的时候,则基本类型的操作数要转换为等价的字符串,这时候的+不再是加运算符,而是连接符,所以表达式返回的结果是10.442。
“+”在实现字符串连接时候,操作数可以是两个字符串,也可以是一个字符串和其他类型。
String类型的字符串连接是通过StringBuilder来实现的。
Stringa = "a";
Stringb = "b";
Stringc = a+b;
Stringd = c+1;
将上面代码编码后在反编译,可以得到的结果如下:
Stringa = "a";
Stringb = "b";
Stringc =(newStringBuilder(String.valueOf(a))).append(b).toString();
Stringd =(newStringBuilder(String.valueOf(c))).append(1).toString();
通过上面的反编译结果可以看出“+”在实现字符串连接过程中,实际上是借助StringBuilder类及其append()方法来实现的。
参考答案:
D
(2)string参数的传递方式
写出下面程序的运行结果:
publicclass Test{
publicstatic void method(String str){
str= "good-bye";
}
publicstatic void main(String args[]) {
Stringstr = "abcd";
method(str);
System.out.println(str);
}
}
参考答案:
Abcd


(3)String内存存储
例题一:
下面选项那些返回true?
Strings ="hello";
Stringt ="hello";
char[] c = {'h','e','l','l','o'};
System.out.println(s.equals(t));//true
System.out.println(t.equals(c));//false
System.out.println(s==t);//true
System.out.println(t.equals(newString("hello")));//true
System.out.println(t==c);
试题分析:
字符串是程序中使用频率最高的一种数据类型,Java为了加强程序的运行速度,因此设计了两种不同的方法来生成字符串对象。一种是调用string类的构造函数,另一种是使用“”。这两种方法产生的字符串对象在内存中存放的机制不同。
Java为string类型提供了缓冲池机制,当使用双引号定义对象时,java环境首先去缓冲池寻找相同内容的字符串,如果存在就直接拿出来使用,如果不存在则创建一个新的字符串放入缓冲池中。
在使用string构造函数定义字符串对象时,Java环境会和创建其他类型的对象一样,每次调用,都会创建一个新的对象。
String对象的equals函数是比较两个对象的string内容是否相等。需要指出的是由于s和t并不是由new产生的,他们所指的是内存池中同一个字符串的常量,所以地址是相同的。
==和equal的区别:
==是一个关系运算符,用于比较两个简单类型变量的值是否相等,或者两个引用变量的引用地址是否相等。
equals()是一个方法,用于判断引用变量引用地址指向的存储内容是否相等。
注意:在最根本的object类中定义的equals()方法是直接使用==实现的,因此,在自定义类型时建议重写equals()方法,实现自定义的比较规则。例如string,integer等类型都已经对equals()方法进行过重写。
例题二:
认真分析下面的程序段,按要求回答问题。
1 public static void main(String args[]) {
2 String str = new String ("good");
3 String str1 = "good";
4 String str2= new String ("good");
5 System.out.println(str==str1);
6 System.out.println(str.equals(str2));
7 System.out.println(str2==str1);
}
在程序的第2-4行,string对象创建了几个对象,分别写出?
在程序的5-7行,分别写出输出结果?
参考答案:
第2行处的答案是:两个对象
第3行处的答案是:没有对象
第4行处的答案是:一个对象
第5行处的答案是:false
第6行处的答案是:true
第7行处的答案是:false
试题分析:
首先我们要清楚什么是StringPool?stringpool就是string池,也就是内存的数据段区域,专门存放静态变量和字符串的区域。如果stringstr = "abc",那么字符串"abc"就存放在StringPool中,如果stringstr = new String("abc")就存放在内存的Heap里面。
在本程序中,当Java执行到第二行的时候,首先在StringPool中查找有没有字符串常量"good",因为没有所以创建"good"的对象。当执行newString ("good")则在Heap里面创建"good"对象,而str则是该对象的引用,因此共创建两个对象。
当执行第3行时候,首先还是在StringPool查找有没有字符串常量"good",有则直接将str1当做StringPool中"good"的引用,当你重新一个string类型变量为"good"时候,将使用StringPool中原来那个"good",而不重新分配内存。也就是说str和str1指向同一块儿内存,因此此时没有创建任何对象。
当执行到第4行的时候,还是先在StringPool查找有没有字符串常量"good",有则不在进行创建。由于这里使用new关键字,所以便在java堆内存中又建立一个"good"对象,而str2是这个对象的引用。因此执行此句话只创建了一个对象。
在第5行,==是比较对象的,str是指向java堆中的对象,而str1是指向javaString Pool中的对象,所以输出false
在执行到第6行,由于equals函数是判断函数的内存相等而不是地址内容,所以返回true
第7行判断同第5行。
(4)StringBuffer
下列选项是StringBuffer的构造方法,那些选项是正确的?
AStringBuffer()
BStringBuffer(int capacity)
CStringBuffer(String str)
DStringBuffer(CharSequence cq)
EStringBuffer(Char [] data)
参考答案:ABC
试题分析:
StringBuffer有三个构造函数:
不带参数的构造方法——StringBuffer()
创造一个不带字符的字符串缓存区,其初始容量为16个字符。
以int为参数的构造方法——StringBuffer(intlength)
创造一个不带字符串,但是具有指定初始容量的字符串缓存区。
以string对象作为参数——StringBuffer(Stringstr)
构造一个字符串缓存区,并将其初始化为指定的字符串。
(5)String,StringBuffer和StringBuilder区别
String:是被final修饰的类,是不可变类,也就是说我们通常定义的String类型的变量的值是不可改变的
StringBuffer:是线程安全的可变的字符序列
StringBuilder:是非线程安全的可变的字符序列,它和StringBuffer基本上差不多吧,在不涉及多线程使用时用StringBuilder会更快些
总体来说就是:String不可变,StringBuffer和StringBuilder可变,线程同步时用StringBuffer,非同步用StringBuilder

感谢金丝燕大学校长


分享到:
评论

相关推荐

    java基础String类选择题练习题

    java基础String类选择题练习题,文档包含了答案与分析,适合学习用,本文档仅仅用于学习分享,不得用于商业用途

    java试题经典考试试题

    java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置...

    Java期末考试真题试卷及复习资料【高级编程】

    Java期末考试真题试卷及复习资料【高级编程】 Java高级编程期末考试真题试卷及复习资料 名词解释 泛型 答即参数化类型允许程序创建集合时指定集合元素的类型在定义方法类接口时使用类型形参类型形参将在声明变量调用...

    java考试题大总结

    java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置...

    java中String类的笔试面试题含答案

    java中String类的笔试面试题含答案 1.下面程序的运行结果是()(选择一项) String str1=”hello”; String str2=new String(“hello”); System.out.println(str1==str2); A. true B. false C. hello D. he 答案...

    沈阳工程java2期末试题

    沈阳工程java2试题 D. 5 3、main方法是Java Application程序执行的入口点,关于main方法的方法头以下哪项是合法的( )? A、public static void main( ) B、public static void main( String args[] ) C、...

    java--scjp考题复习

    scjp考题 930. What String instance method would return true when invoked like this? a.method(b); Where a="GROUNDhog" and b="groundHOG"? Select the one right answer. A. equals() B. toLowerCase() C. ...

    一套java模拟试题

    1、 import java.io.*; public class abc { public static void main(String args[ ]) { AB s = new AB("Hello!","I love JAVA."); System.out.println(s.toString( )); } } class AB { String s1; String s2; ...

    Java期末考试试题(一)

    一、 选择 1.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的 ? A.ArrayList myList=new Object(); B .List myList=new ArrayList... String str=new String("good"); ····绝对经典

    java程序设计阅读程序写结果题22道

    《java程序设计》课程的题库资料,由贺州学院整理,可供学生期末课程复习使用,也可以供相关任课教师出卷使用。 内容示例为: 9. 阅读下列程序片段,写出运行结果。 public class Test { public static void main...

    java上机考试题目.doc

    1、ClockTime(int h,int m,String ap),构造方法 2、getHour(),返回当前时间的小时数 3、getMinute(),返回当前的分钟数 4、getAmPm(),返回上午还是下午 5、toString(),表示时间的字符串,例如“6:27 PM...

    java试卷(含答案)

    大学java期末考试试卷(含答案) 一 判断题 (共10分) 1 Java的各种数据类型占用固定长度,与具体的软硬件平台环境无关 子类可以定义与父类同名的方法,称为方法的覆盖,方法覆盖要求子类的方法与父类的方法名字...

    java期末考试试题(3)

     1) String str = null;  2) if ((str != null) && (str.length() > 10)) {  3) System.out.println("more than 10");  4) }  5) else if ((str != null) & (str.length() )) {  6) System.out.println(...

    《JAVA语言程序设计》期末考试试题及答案3(应考必备题库)

    期末考试试题及答案import java.io.*; public class Test{ public static void main( String [] argv) { try { BufferedReader is = new BufferedReader( new InputStreamReader(System.in)); String input...

    java程序设计程序题16道

    《java程序设计》课程的题库资料,由贺州学院整理,可供学生期末课程复习使用,也可以供相关任课教师出卷使用。 内容示例为: 13. 编写代码实现一个Demo类,该类继承于Thread类,该类包括三个私有类方法,字符串类型...

    Java测试题1答案

    《Java测试题1》 Java培训后考试 一、 是非题5题(每题3分) 1、 对象的特征是对象有状态、行为、标识ID ( ) 2、 GenericServlet是一个与协议相关的Servlet类。 ( ) 3、 Java中的this指的是当前类...

    java期末考试试题(2)

     2) private String name;  3) public Parent(){}  4) }  5) public class Child extends Parent {  6) private String department;  7) public Child() {}  8) public String getValue(){ return name...

    java web 期末复习题库(便于打印)

    response对象的 setHeader( String name, String value) 方法的作用是 A 添加 HTTP 文件头 B 设定指定名字的 HTTP 文件头的值 C 判断指定名字的 HTTP 文件头是否存在 D 向客户端发送错误信息 pageContext 对象的 ...

    Java程序设计语言考试试题

    一、单项选择题(本大题共10小题,每小题1分,共10分) 1.下述字符组合不能作为Java程序标识符的是( ) A.Aa12 B.大x C.y小 D.5x 2.以下程序代码的输出的结果是( ) int x=53; System. out. println(1.0+x...

    java面试题大全(2012版)

    82、能不能自己写个类,也叫java.lang.String? 57 83. Java代码查错 57 二. 算法与编程 61 1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt...

Global site tag (gtag.js) - Google Analytics