执行下面语句后,输出结果是Stringstr="ABCDE";str.substring(3);str.concat("XYZ");System.out.println(str);
时间: 2023-11-16 13:06:17 浏览: 231
这段代码会输出"ABCDE",因为String类是不可变的,调用substring()和concat()方法并不会改变原始字符串,而是返回一个新的字符串。如果想要输出修改后的字符串,需要将结果保存到一个新的字符串变量中,例如:
```
String str = "ABCDE";
String newStr = str.substring(3).concat("XYZ");
System.out.println(newStr);
```
这样会输出"DEXYZ"。
相关问题
public class X { public static void main(String[] args) { String foo="ABCDE"; foo.substring(3); foo.concat("XYZ"); } }
这段代码定义了一个名为X的公共类。在main方法中,创建了一个名为foo的字符串变量,并将其初始化为"ABCDE"。然后,使用foo.substring(3)方法调用字符串的substring方法,该方法会返回从索引3开始的子字符串,但在此代码中没有接收和使用返回值,所以没有对foo进行修改。
接下来,使用foo.concat("XYZ")方法调用字符串的concat方法,该方法用于将指定的字符串附加到原始字符串的末尾,并返回新的字符串。但同样,代码中没有接收和使用返回值,所以对foo也没有进行修改。
因此,这段代码最终不会改变foo的值。
package com.huawei.classroom.student.h20; /**定义合适的类、接口,使得下面的代码编译并能正确运行*/ public class Test { public Test() { // TODO Auto-generated constructor stub } public static void main(String[] args) { A a = new D(); C c = new D(); D d = new D(); System.out.println("pass 1"); B b = c; System.out.println("pass 2"); a = d; System.out.println("pass 3"); c=new E(); System.out.println("pass 4"); a=new A(); if (!(a instanceof B)) { System.out.println("pass 5"); } if (!(c instanceof A)) { System.out.println("pass 6"); } if (!(c instanceof D)) { System.out.println("pass 7"); } } }怎么看ABCDE之间的关系
根据上述代码中的类和对象的声明,我们可以推断出ABCDE之间的关系如下:
- A是所有类的父类。
- B是C的父类。
- C是D的父类。
- D是B和C的子类。
- E是C的子类。
同时,我们也可以看出代码中的对象声明和实例化的关系:
- a是A类型的对象,指向D的实例对象。
- b是B类型的对象,指向C的实例对象。
- c是C类型的对象,指向E的实例对象。
- d是D类型的对象,指向D的实例对象。
基于上述关系,我们可以看出该程序是进行对象声明和实例化的操作,并对其进行类型判断。
阅读全文