下面程序的运行结果是() public class Example { public static void main(String[] args) { String s1 = new String("Hello"); String s2 = new String("Hello"); System.out.print(s1 == s2); String s3 = "Hello"; String s4 = "Hello"; System.out.print(s3 == s4); s1 = s3; s2 = s4; System.out.print(s1 == s2); } }
时间: 2024-01-23 15:01:35 浏览: 120
程序的运行结果是falsefalsetrue。
原因是:在Java中,用new关键字创建的字符串对象,每次都会在堆内存中新分配一块内存,因此s1和s2指向的是不同的对象,所以s1==s2的结果为false。
而用双引号创建的字符串对象,会首先在常量池中查找是否已有相同值的对象,如果有,则直接返回该对象的引用,如果没有,则创建一个新的字符串对象并存储在常量池中。因此s3和s4指向的是同一个对象,所以s3==s4的结果为true。
最后s1=s3,s2=s4,因此s1和s2也指向同一个对象,所以s1==s2的结果为true。
相关问题
用JavaSort the Student list by ascending order of student namesThe following is an example illustrating formatting output. You will need it for task 2 and 3. public class Main { public static void main(String[] args) { String string1 = "Hello"; String string2 = "World"; String string3 = "Java"; System.out.println(String.format("%-10s %-10s %-10s", string1, string2, string3)); } } 格式化打印 代码用会打印出名字和和爱好,爱好的第一位对齐
好的,您想让我帮您用Java对学生名单按照姓名升序进行排序,是这样的吗?如果是的话,您可以使用Java内置的排序函数Arrays.sort()和自定义比较器Comparator来实现。以下是示例代码:
```java
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
// 假设学生名单保存在一个Student对象数组中
Student[] students = new Student[] {
new Student("Tom", "Swimming"),
new Student("Alice", "Reading"),
new Student("Bob", "Running"),
new Student("David", "Singing")
};
// 按照姓名升序排序
Arrays.sort(students, new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
return s1.getName().compareTo(s2.getName());
}
});
// 输出排序结果
for (Student s : students) {
System.out.println(String.format("%-10s %10s", s.getName(), s.getHobby()));
}
}
}
class Student {
private String name;
private String hobby;
public Student(String name, String hobby) {
this.name = name;
this.hobby = hobby;
}
public String getName() {
return this.name;
}
public String getHobby() {
return this.hobby;
}
}
```
输出结果:
```
Alice Reading
Bob Running
David Singing
Tom Swimming
```
在输出结果中,姓名和爱好都是左对齐的,并且使用了String.format()函数来进行格式化打印。其中,"%-10s"表示左对齐且占用10个字符的字符串,"%10s"表示右对齐且占用10个字符的字符串。
class StringExample { public static void main(String args[ ]) { String s1=new String("you are a student"), s2=new String("how are you"); //**********Found**********判断s1与s2是否相同 if (__________________) { System.out.println("s1与s2相同"); } else { System.out.println("s1与s2不相同"); } String s3=new String("22030219851022024"); //**********Found**********判断s3的前缀是否是“220302” if (__________________) { System.out.println("吉林省的身份证"); } String s4=new String("你"), s5=new String("我"); //**********Found**********按字典序,s4大于s5的表达式 if(__________________) { System.out.println("按字典序,s4大于s5"); } else { System.out.println("按字典序,s4小于s5"); } } }
以下是符合要求的代码:
```java
class StringExample {
public static void main(String args[]) {
String s1 = new String("you are a student"), s2 = new String("how are you");
// 判断s1与s2是否相同
if (s1.equals(s2)) {
System.out.println("s1与s2相同");
} else {
System.out.println("s1与s2不相同");
}
String s3 = new String("22030219851022024");
// 判断s3的前缀是否是“220302”
if (s3.startsWith("220302")) {
System.out.println("吉林省的身份证");
}
String s4 = new String("你"), s5 = new String("我");
// 按字典序,s4大于s5的表达式
if (s4.compareTo(s5) > 0) {
System.out.println("按字典序,s4大于s5");
} else {
System.out.println("按字典序,s4小于s5");
}
}
}
```
输出结果为:
```
s1与s2不相同
吉林省的身份证
按字典序,s4小于s5
```
阅读全文