new String(""+"y")创建了几个对象
时间: 2023-10-03 12:09:52 浏览: 135
`new String(""+"y")` 创建了两个对象,分别是一个空字符串对象和一个字符串 "y" 对象。具体来说,`""` 是一个空字符串对象,因为 Java 中字符串是不可变的,所以每个字符串都是一个对象。而 `""+"y"` 的结果是一个新的字符串对象,它的值是 "y"。然后 `new String(...)` 又创建了一个新的字符串对象,它是对前面新创建的字符串对象的一个拷贝。因此,`new String(""+"y")` 一共创建了两个字符串对象。
相关问题
import java.util.*; public class Main { public static void main(String []args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int a[]=new int[7]; for(int i=1900;i<=1900+n-1;i++) { for(int j=1;j<=12;j++) { int m=j,y=i; if(m==1||m==2) { m+=12; y--; } int d=13; switch((d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7) { case 0:a[2]++;break; case 1:a[3]++;break; case 2:a[4]++;break; case 3:a[5]++;break; case 4:a[6]++;break; case 5:a[0]++;break; case 6:a[1]++;break; } } } for(int i=0;i<7;i++) { System.out.print(a[i]+" "); } } }分析时间
这段代码实现的功能是输入一个年数n,计算从1900年开始到1900年+n-1年的每个月的13号是星期几,并统计每个星期几出现的次数。最后输出每个星期几出现的次数。
具体实现过程:
1. 首先使用Scanner类获取用户输入的年数n。
2. 创建一个长度为7的整型数组a,用于统计每个星期几出现的次数。数组下标0-6分别对应星期天到星期六。
3. 使用两个for循环,外层循环遍历从1900年开始到1900年+n-1年的每一年,内层循环遍历每个月份。
4. 对于每个月份,首先判断是不是1月或2月,如果是,则将月份加12,年份减1(因为在计算公式中,1月和2月被视为上一年的13月和14月)。
5. 接下来根据蔡勒公式计算该月13号是星期几,并将相应的星期几出现次数加1。
6. 最后遍历整个数组a,输出每个星期几出现的次数。
需要注意的是,蔡勒公式只适用于格里高利历(即我们现在使用的公历),对于其他历法可能不适用。
假设Employee类包含一个int型成员id,一个 String型成员name,一个double型成员salar y。如果要求Employee可按id值比较大小,请编写Employee类。编写程序,创建几个Employee对象,将已们存放到TreeSet中并输出。
好的,以下是Employee类的实现代码:
```java
import java.util.Objects;
public class Employee implements Comparable<Employee> {
private int id;
private String name;
private double salary;
public Employee(int id, String name, double salary) {
this.id = id;
this.name = name;
this.salary = salary;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
@Override
public int compareTo(Employee other) {
return Integer.compare(this.id, other.id);
}
@Override
public String toString() {
return "Employee{" +
"id=" + id +
", name='" + name + '\'' +
", salary=" + salary +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Employee)) return false;
Employee employee = (Employee) o;
return id == employee.id &&
Double.compare(employee.salary, salary) == 0 &&
Objects.equals(name, employee.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name, salary);
}
}
```
其中,我们实现了Comparable接口,重写了compareTo方法,以便能够按照id值比较大小。
接下来,我们可以编写测试代码,创建几个Employee对象,将它们存放到TreeSet中并输出:
```java
import java.util.Set;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
Employee emp1 = new Employee(3, "Alice", 5000.0);
Employee emp2 = new Employee(1, "Bob", 6000.0);
Employee emp3 = new Employee(2, "Charlie", 7000.0);
Set<Employee> employees = new TreeSet<>();
employees.add(emp1);
employees.add(emp2);
employees.add(emp3);
for (Employee emp : employees) {
System.out.println(emp);
}
}
}
```
输出结果应该是:
```
Employee{id=1, name='Bob', salary=6000.0}
Employee{id=2, name='Charlie', salary=7000.0}
Employee{id=3, name='Alice', salary=5000.0}
```
阅读全文