有如下程序代码, 程序运行的结果是( )。 String s1 = "sdut"; String s2 = "I love " + s1; String s3 = "I love " + s1; System.out.print(s2 == s3); Sytem.out.println(" "+s2.equals(s3));
时间: 2024-04-03 21:32:04 浏览: 43
程序运行的结果是:
false true
解释如下:
第一行代码定义了一个字符串变量s1,它的值为"sdut"。
第二行代码定义了一个字符串变量s2,它的值为"I love " + s1,即"I love sdut"。注意,这里使用了字符串拼接操作符+。
第三行代码定义了一个字符串变量s3,它的值同样为"I love " + s1,即"I love sdut"。
第四行代码使用==运算符比较s2和s3的引用是否相等,结果为false。这是因为s2和s3虽然包含的字符序列相同,但是它们是两个不同的对象,即它们的引用不同。
第五行代码使用equals方法比较s2和s3的字符序列是否相等,结果为true。这是因为equals方法比较的是对象的值,即它们包含的字符序列是否相同。在这里,s2和s3的字符序列相同,因此equals方法返回true。
最后,System.out.println方法将结果输出到控制台,其输出结果为"false true"。
相关问题
String s1 = "sdut"; String s2 = "I love " + s1; String s3 = "I love " + s1; System.out.print(s2 == s3); Sytem.out.println(" "+s2.equals(s3));
结果是false true。虽然s2和s3的值相同,但是它们是通过不同的方式创建的。s2是通过字符串连接运算符+创建的,而s3是通过相同的字符串连接运算符+创建的。在Java中,对于创建字符串,通过+运算符创建的字符串会在内存中创建新的对象,所以s2和s3引用的是不同的对象,它们的地址不同。而s2.equals(s3)则会比较两个字符串的内容是否相同,返回true。
7-3 sdut-String-5 图书价格汇总(II)用Java写代码
以下是一个使用 Java 写的图书价格汇总程序,使用了 HashMap 和 DecimalFormat 类:
```java
import java.util.HashMap;
import java.text.DecimalFormat;
import java.util.Scanner;
public class BookPriceSum {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
DecimalFormat df = new DecimalFormat("0.00");
HashMap<String, Double> map = new HashMap<String, Double>();
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
String name = sc.next();
double price = sc.nextDouble();
if (map.containsKey(name)) {
price += map.get(name);
}
map.put(name, price);
}
for (String name : map.keySet()) {
System.out.println(name + " " + df.format(map.get(name)));
}
}
}
```
程序首先读入图书的数量 n,然后使用一个 HashMap 来存储每种图书的价格总和。
接着循环读入每本图书的名称和价格,如果该图书已经存在于 map 中,则将该图书的价格加上之前已经存储的价格总和,最后将新的价格总和存储到 map 中。
最后遍历 map,输出每种图书的名称和价格总和。在输出价格时,使用 DecimalFormat 类来保留两位小数。