阅读以下程序,写出程序运行结果。 public class Test { public static void main(String[] args) { String str1 = "百年追梦"; String str2 = "百年追梦"; String str3 = new String("百年追梦"); String str4 = new String("百年追梦"); String str5 = "胸怀千秋伟业,恰是百年风华!"; System.out.println(str1 == str2); System.out.println(str3 == str4); System.out.println(str3.equals(str4)); System.out.println(str5.length()); System.out.println(str5.substring(9,13)); System.out.println(str5.indexOf("伟业")); } }
时间: 2024-01-11 21:04:51 浏览: 150
程序运行结果如下:
```
true
false
true
13
千秋伟业
4
```
解释如下:
1. `str1 == str2`,比较的是字符串对象的引用,由于字符串常量池中只有一个"百年追梦"对象,因此str1和str2都指向同一个对象,结果为true。
2. `str3 == str4`,比较的是字符串对象的引用,由于使用new关键字创建了两个不同的字符串对象,因此str3和str4指向不同的对象,结果为false。
3. `str3.equals(str4)`,比较的是字符串对象的值,由于字符串内容相同,因此结果为true。
4. `str5.length()`,返回字符串的长度,结果为13。
5. `str5.substring(9,13)`,返回从下标9开始到下标13之前的子串,即"千秋伟业"。
6. `str5.indexOf("伟业")`,返回"伟业"在字符串中第一次出现的位置,即从下标9开始,结果为4。
相关问题
public class Test { public static void main(String args[]) { String Str = new String("菜鸟教程:www.runoob.com"); boolean retVal; retVal = Str.endsWith( "runoob" ); System.out.println("返回值 = " + retVal ); retVal = Str.endsWith( "com" ); System.out.println("返回值 = " + retVal ); } }
这段代码是一个简单的Java程序。它创建了一个名为 `Test` 的公共类,并包含一个 `main` 方法作为程序的入口点。
在 `main` 方法中,首先创建了一个名为 `Str` 的字符串对象,其值为 "菜鸟教程:www.runoob.com"。
接下来,声明了一个布尔类型的变量 `retVal`,用于存储方法 `endsWith()` 的返回值。
然后,通过调用 `Str.endsWith("runoob")` 来判断字符串 `Str` 是否以 "runoob" 结尾,并将结果赋值给 `retVal` 变量。
接着,使用 `System.out.println()` 方法将 `"返回值 = "` 和 `retVal` 的值打印输出。
然后,再次调用 `Str.endsWith("com")` 来判断字符串 `Str` 是否以 "com" 结尾,并将结果赋值给 `retVal` 变量。
最后,再次使用 `System.out.println()` 方法将 `"返回值 = "` 和 `retVal` 的值打印输出。
运行该程序将会输出如下结果:
```
返回值 = false
返回值 = true
```
这是因为字符串 "菜鸟教程:www.runoob.com" 不以 "runoob" 结尾,但以 "com" 结尾。
下面哪行代码有错误 public class Test { private String str1 = "str1"; private final String str2 = "str2"; public Test() { System.out.println("Done!"); } public Test(String str1, String str2) { 1 this.str1 = str1; 2 this.str2 = str2; } public static void main(String[] args) { 3 Test test1 = new Test(); 4 Test test2 = new Test("str1", "str2");
第二个构造函数的第二行代码有错误。因为str2是一个final变量,一旦被赋值后就无法修改。因此,尝试给它赋值会导致编译错误。正确的代码应该是:
```
public Test(String str1, String str2) {
this.str1 = str1;
this.str2 = str2;
}
```
或者可以将str2声明为非final变量:
```
private String str2 = "str2";
```
阅读全文