Hello World!
main方法
从第一个方法,到连接数据库,再走到Spring,风风雨雨我都经历过
这是我的第一篇博客,这是一个main方法,main方法里不会写太多东西
public static void main(String[] args){
/**
* main是入口
* 在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,
* 第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,
* 方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等。
*/
}
static代码块与println方法
思维清晰,话要少一些
static{
/**
* 这是一条打印输出语句
* System是一个类,继承自根类Object
* out是类PrintStream类实例化的一个对象,且是System类的静态成员变量
* println()是类PrintStream的成员方法,被对象out调用
*
* 这条打印输出语句的外层,是一个静态代码块,静态代码块在类被加载的时候就运行了
* 它只会执行一次,并且优先与各种代码块已经构造函数
* 如果有多个静态代码块呢?它们会按照书写顺序依次执行
*/
System.out.println("Hello World!");
}
equals与hashCode
少些攀比,做好自己
@Override
public boolean equals(Object o) {
/**
* equals方法
* 它用来比较两个对象的内容是否相等,它是Object的方法
* 所有类都继承于Object,所以它适用于所有对象
* 如果我们没有重写equals会怎么样?
* 它会调用父类的equals,而父类Object的equals方法返回的是==判断
*
* ==可以干嘛?
* 如果是基本数据类型,==会比较它们的值,但如果是对象呢?
* ==会比较的变量(栈)内存中存放的对象的(堆)内存地址,用来判断它们是否相等
* 它会取出那串地址值,妄想用它来对两个对象做比较,用来做第一层判断还行
* 但如果只比较地址值,就不能满足我们的需求,我们要的是它公平正确的比较两个对象的属性值
* 如何办到?
*
* 我们重写了equals方法与hashcode方法
* 突然出现了一个陌生的行为,它说它叫hashCode
* 它可以用一套算法算出一个值,这个值对于这个对象唯一,它还有一个协定
* 在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,
* 必须一致地返回相同的整数,它能大大降低对象比较次数,提高效率
* 那我们就可以使用它(hashCode)来帮助我们比较(equals)对象
*
* equals和hashCode也有一个规定
* 1:相等(相同)对象必须具有相等(相同)的哈希码(散列码)
* 2:如果两个对象的hashCode相同,它们并不一定相同
*
* 首先我们看第一个条件,相等(相同)的对象必须具有相等的哈希码(或者散列码),这是为什么?
* 假如两个Java对象A和B,A和B相等(eqauls结果为true),但A和B的哈希码不同,
* 则A和B存入HashMap时的哈希码计算得到的HashMap内部数组位置索引可能不同,
* 那么A和B很有可能允许同时存入HashMap,显然相等/相同的元素是不允许同时存入HashMap,
* HashMap不允许存放重复元素。
*
* 然后我们看向了第二点,两个对象的hashCode相同,它们却并不一定相同
* 这个很好理解,你和另一个人的体重(hashCode)可能一样,但是你们不是同一个人(equals)
* hash是通过一个方式转化成一组数字,有N分之一的机会会造成数字相同的巧合
*
* 现在我们的equals已经健全起来了
* (方法内代码无参考价值)
* 我返回了一个super.equals()
* 它会调用父类(object)中的equals,然后比较地址值,在上面见过,底层是个==
*/
return super.equals(o);
}
一只对编程兴致勃勃的JavaWeb开发,喜欢我,就关注我吧~

在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候
浙公网安备 33010602011771号