String
String s1=new String("abc");
String s2=new String("abc");
System.out.println(s1==s2);(都是新建地址)false
String s1="abc";//先查找字符串常量池,没有直接创建 String s2="abc";//先查找字符串常量池,有就直接引用 System.out.println(s1==s2);//由于两个都是字符串常量池中的同一个,所以地址相同
String s1=new String("abc");//在堆中定义一个变量 String s2="abc";//先查找字符串常量池,没有直接创建 System.out.println(s1==s2);//由于一个在堆中,一个是字串常量池中定义的,所以地址不同结果为false
错题:
public class Example{
String str=new String("good");
char[] ch = {'a','b','c'};
public static void main(String args[]){
Example ex=new Example();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+" and ");
Sytem.out.print(ex.ch);
}
public void change(String str,char ch[]){
str="test ok";
ch[0]='g';
}
}
在这里对字符串操作是不会改变原来的值的,但是对数组(包括字符数组和字符串数组),列表等直接操作会改变原来的值
11.下列选项中关于Java中ArrayList、LinkedList、HashMap三个类的描述错误的是( )。
A.ArrayList和LinkedList均实现了List接口
B.ArrayList的访问速度比LinkedList快
C.添加和删除元素时,ArrayList的表现更佳 (中间删除不好)
D.HashMap实现Map接口,它允许任何类型的键和值对象,允许将null用作键或值
ArrayList对两端删除效率较高,但是中间删除效率较低
19. 分析下面的Java程序,编译运行结果为( )。
public class Test{
public static void main(String[] args){
try{
throw new NullPointerException();
}catch(Exception e){
System.out.println("throwException");
}
}
}
1.编译出错
2.正常运行无输出结果
3.运行出错
4.输出:throwException
throw new NullPointerException()代表直接抛出异常,给catch去捕获。
25.给定Java代码,编译运行的结果是()(选择一项)
import java.util.*;
public class Test{
public staic void main(String[] args){
LinkedList list = new LinkedList();
list.add("A");
list.add(2, "B");
String s = (String) list.get(1);
System.out.println(s);
}
}
[A]编译时发生错误 [B]运行时引发异常
[C]正确运行,输出:A [D]正确运行,输出:B
没有顺序添加,这里只能添加进入"A",但是在添加时就会出现索引超出范围的异常,报错位置将会出现在list.add(2, "B")这个位置,如果改为list.add(1,"B"),就可以将"B"添加进去。