1.关于java中对象调用方法内存里a和b指向的不是同一个对象,不是同一块内存 。代码hh a=new hh();是表示在栈内存里分配一块区域给a,同时在堆内存里创建一个hh类的对象,然后让a指向这个对象 。代码hh b=new hh();是表示在栈内存里分配一块区域给b,同时在堆内存里创建一个hh类的对象,然后让b指向这个对象 。看你的hh里没有重写toString(),直接打印a和b应该是调用Object里面的toString(),打印出来的是类名和此对象的十六位哈希码,应该是不同的 。然后我把你的代码自己运行了一下,打印出来的哈希码也是不一样的,不论是直接打印a和b由toString()方法默认返回的,还是调用两个对象中的hashCode()方法出来哈希码都是不相同的 。a.equals(b)返回的是false说明a和b不相等,我查了一下API,根据API里面写的hashCode 的常规协定是:在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改 。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致 。如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果 。如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么对这两个对象中的任一对象上调用hashCode 方法不 要求一定生成不同的整数结果 。但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能 。说明相同的对象,哈希码必须相同 。不同的对象,哈希码不一定不同 。我查了下资料,哈希码的生成函数不能保证不同对象生成的哈希码一定相同,有很小很小的几率会相同,不会被你装上了吧?还是其他class的干扰呢?你把重新建一个文件夹,把java文件复制进去,然后编译运行看下还是不是一样 。我也是刚学java的,工作比较无聊我就学了下java,刚学了1个半月吧 。能力有限,我把我懂得都写出来,希望能帮到楼主 。
请采纳答案,支持我一下 。
2.java写一个类并创建对象,然后调用方法// Car.java
public class Car {
public void start() {
System.out.println("car start 。");
}
public void speed() {
System.out.println("car speed 。");
}
}
//CarApp.java
public class CarApp {
public static void main(String[] args) {
Car car = new Car();
car.start();
car.speed();
}
}
3.关于java中对象调用方法内存里a和b指向的不是同一个对象,不是同一块内存 。代码hh a=new hh();是表示在栈内存里分配一块区域给a,同时在堆内存里创建一个hh类的对象,然后让a指向这个对象 。代码hh b=new hh();是表示在栈内存里分配一块区域给b,同时在堆内存里创建一个hh类的对象,然后让b指向这个对象 。看你的hh里没有重写toString(),直接打印a和b应该是调用Object里面的toString(),打印出来的是类名和此对象的十六位哈希码,应该是不同的 。然后我把你的代码自己运行了一下,打印出来的哈希码也是不一样的,不论是直接打印a和b由toString()方法默认返回的,还是调用两个对象中的hashCode()方法出来哈希码都是不相同的 。a.equals(b)返回的是false说明a和b不相等,我查了一下API,根据API里面写的hashCode 的常规协定是:在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改 。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致 。如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果 。如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么对这两个对象中的任一对象上调用hashCode 方法不 要求一定生成不同的整数结果 。但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能 。说明相同的对象,哈希码必须相同 。不同的对象,哈希码不一定不同 。我查了下资料,哈希码的生成函数不能保证不同对象生成的哈希码一定相同,有很小很小的几率会相同,不会被你装上了吧?还是其他class的干扰呢?你把重新建一个文件夹,把java文件复制进去,然后编译运行看下还是不是一样 。我也是刚学java的,工作比较无聊我就学了下java,刚学了1个半月吧 。能力有限,我把我懂得都写出来,希望能帮到楼主 。
- java两个类之间的耦合关系怎么写
- 1加到1000的js怎么写
- java工作总结怎么写
- 七夕是什么日子 七夕是什么日子没对象
- javaeeb简历中项目业绩怎么写
- java访问html文件路径怎么写
- 调查问卷js怎么写
- json数组格式怎么写
- 邮箱用模式怎么写java
- 用代码怎么写高斯模糊