Object[] obj= {1L,2,3} obj[0]为什么是null
时间: 2024-01-13 17:05:44 浏览: 28
这是因为数组中的元素类型为基本类型 long 的包装类 Long,而你使用的是基本类型的字面量赋值,这会触发自动装箱操作。当你将一个基本类型的值赋给一个包装类时,Java 会自动地将这个值封装到一个新的对象中。所以,实际上 obj[0] 存储的是一个 Long 类型的对象,而不是一个基本类型的 long 值。
在 Java 中,如果你使用 new 关键字显式地创建一个包装类的对象,那么这个对象的值为 null,而不是对应的基本类型的默认值。所以,当你使用 Long[] obj = new Long[]{1L, 2L, 3L} 这样的方式创建一个包装类数组时,obj[0] 就不会是 null。
相关问题
43. (1分)假设我们有以下代码:class Student l private String name;private int id; public Student(String name, int id) fthis.name = name; this.id = id; @Override public boolean equals(Object obj) (if (this == obj) ( return true; if (obj == null ll getClass() != obj.getClass())return false; Student other = (Student) obj;returnid == other.id; 以下哪个选项是正确的hashCode()方法实现?
C、@Override public int hashCode() { return Objects.hash(id); }
当重写equals方法时,通常需要同时重写hashCode方法,以保证对象在放入哈希集合中时能够正确地定位。hashCode方法用于返回对象的哈希码,哈希码是一个int类型的值,用于快速比较对象的相等性。如果两个对象的哈希码相等,则它们不一定相等,但如果两个对象不相等,则它们的哈希码一定不相等。
在这段代码中,重写equals方法,只比较了学生对象的id属性。因此,在重写hashCode方法时,也应该只考虑id属性,以保证与equals方法的一致性。
使用Objects.hash方法可以快速生成哈希码,只需要传入需要计算哈希码的属性即可。因此,选项C是正确的答案。
有一个object类对象可能是String类型可能是Long类型如何判断它不为空,写一个java的通用方法
可以使用Java中的instanceof关键字来判断一个对象是否为String或Long类型,然后再判断是否为空。
下面是一个Java的通用方法示例:
```
public static boolean isNotNull(Object obj) {
if (obj == null) {
return false;
}
if (obj instanceof String) {
return !((String) obj).trim().isEmpty();
}
if (obj instanceof Long) {
return ((Long) obj) != 0;
}
return true;
}
```
这个方法接受一个Object类型的参数,首先判断是否为null,如果是则返回false。如果不是null,则通过instanceof关键字判断对象的类型,如果是String类型,则用trim()方法去除空格后再判断是否为空。如果是Long类型,则判断是否等于0。如果对象既不是String也不是Long类型,则默认认为不为空,返回true。
使用方法如下:
```
Object obj1 = null;
Object obj2 = "";
Object obj3 = " ";
Object obj4 = 0L;
Object obj5 = 123L;
System.out.println(isNotNull(obj1)); // false
System.out.println(isNotNull(obj2)); // false
System.out.println(isNotNull(obj3)); // false
System.out.println(isNotNull(obj4)); // false
System.out.println(isNotNull(obj5)); // true
```