java小问题求解答

应用程序的main方法中有以下语句,则输出的结果是 ( )。
String s1=new String("abc");
String s2=new String("abc");
boolean b1=s1.equals(s2);
boolean b2=(s1==s2);
System.out.print(b1+" "+b2);
A)true false B) false true C) true true D)false false

应用程序的main方法中有以下语句,则输出的结果是 ( )。
String s="12345#aaa#bbb#67890";
int n=s.indexOf("#");
int k=s.indexOf("#",n+1);
int m=s.indexOf("#",k+1);
String s2=s.substring(m+1);
System.out.println(s2);
A) 123456 B) 67890 C) aaa D) bbb

应用程序Test.java的源程序如下,在命令行键入:
java Test aaa bb c
回车后输出的结果是 ( )。
public class Test {
public static void main(String args[]) {
int k1=args.length;
int k2=args[1].length();
System.out.print(k1+" "+k2);
}
}
A) 3 2 B)1 2 C) 1 3 D) 3 3
求答案与解释,三克油~~~

A :
equals比较的是两个字符串值,两个字符串的值都是abc,所有为true

==比较的是两个引用,也就是两个abc在内存中的地址,两次都是new出来的字符串,所有地址不同,所有结果为false
B:
String s="12345#aaa#bbb#67890";
//获取从左边数,第一个字符#所在的下标
int n=s.indexOf("#");
//从n+1的位置开始往右数,第一个字符#所在的下标
int k=s.indexOf("#",n+1);
//从k+1的位置开始往右数,第一个字符#所在的下标
int m=s.indexOf("#",k+1);
//从m+1的下标开始截取字符串
String s2=s.substring(m+1);
A:
//执行test,后面的全是参数,传给main方法中的agrs参数
java Test aaa bb c

public class Test {
public static void main(String args[]) {
//总共传了aaa,bb,c这三个参数,所以数组的长度是3
int k1=args.length;
//此处获取的是bb,所以长度是2
int k2=args[1].length();
System.out.print(k1+" "+k2);
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-28
A 第一个是true是因为s1和s2有是相同序列的String ;  第二个是false s1和s2 是new出来的 ==是比较两个对象是否相等 这就像没有两个完全相同的人一样

B 第一次检索(indexOf)"#"返回整个字符串中第一次出现"#"号的位置;第二次索引 使用indexOf("#", n+1) 也就是从第一次索引的位置+1开始 ,到字符串的结尾之间第一次出现"#"的位置;第三次是冲第二次索引结果+1开始到结尾之间第一次出现"#"的位置 最后截取 得到67890

A k1=args.length; 求的是main方法的参数 String args[] 也就是 输入命令Test(类名) 后跟的三个字符串组成的字符串数组的长度 所以是3

k2=args[1].length(); 求的是args这个数组中下标为1的字符串的长度 也就是bb的长度 所以是2
第2个回答  2014-10-28
第一题:A
equals判断的是字符串的内容是否相等,==判断的是字符串在内存中的地址是否相等,所以选择A
第二题:B
n的位置是第一个#号,k的位置是第二个#号,m的位置是第三个#号,s.substring(m+1);
从第三个#号开始截取字符串,因此值为67890
第三题:A
从控制台输入aaa bb c,放入数组args中,所以数组长度即K1=3,对于args[1],表示数组中的第二个元素,也就是字符串bb,其由两个字母组成,因此长度为2本回答被网友采纳
第3个回答  2014-10-28
第一题:true false,字符串相同使用equal()函数,==是判断两个字符串是不是指向同一个字符串对象。
第二题:67890。indexOf()的第一个参数是目标字符串,第二个是开始位置,连续使用了indexOf()求“#”的位置,每次从上一次的找到的位置的下一个字符开始找,所以最后m就是第三个“#”的位置索引。求子串就是从第三个“#”往后,所以最后答案是67890.

第三题:3 2,agrs[] 是传入的字符参数,实际上就是{“aaa", "bb", "c"},答案就明显了。
第4个回答  2014-10-28
1.A
equals两个对象的内容是否相等;
== 内存地址

2:B
int n = s.indexOf("#"); //找到第一次出现#的下标也就是 n=5
int k =s.indexOf("#",n+1); //从下标为6的地方开始找第一次出现#的位置,k=10
int m =s.indexOf("#",k+1); //从下标为11的地方开始找第一次出现#的位置,m=14
String s2=s.substring(m+1) //从第15截取到最后
答案是67890
相似回答