当前位置: 首页 > news >正文

淄博市建设监理协会网站小程序制作费用一览表

淄博市建设监理协会网站,小程序制作费用一览表,阿里巴巴网站详情页怎么做的,带数据库的网页怎么制作文章目录1. 和 equals 的区别是什么?2.Hashcode的作用3. 两个对象的hashCode() 相同, 那么equals()也一定为 true吗?4.泛型常用特点5.使用泛型的好处?1. 和 equals 的区别是什么? “” 对于基本类型和引用类型 的作…

文章目录

    • 1.== 和 equals 的区别是什么?
    • 2.Hashcode的作用
    • 3. 两个对象的hashCode() 相同, 那么equals()也一定为 true吗?
    • 4.泛型常用特点
    • 5.使用泛型的好处?

1.== 和 equals 的区别是什么?

“==”

对于基本类型和引用类型 == 的作用效果是不同的,如下所示:

基本类型:比较的是值是否相同;

引用类型:比较的是引用是否相同;

String x = "string";
String y = "string";
String z = new String("string");
System.out.println(x==y); // true
System.out.println(x==z); // false
System.out.println(x.equals(y)); // true
System.out.println(x.equals(z)); // true

因为 x 和 y 指向的是同一个引用,所以 == 也是 true,而 new String()方法则重写开辟了内存空间,所以 == 结果为 false,而 equals 比较的一直是值,所以结果都为 true。

“equals”

equals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较。看下面的代码就明白了

首先来看默认情况下 equals 比较一个有相同值的对象,代码如下:

class Cat {
public Cat(String name) {
this.name = name;
}
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Cat c1 = new Cat("小黑子");
Cat c2 = new Cat("小黑子");
System.out.println(c1.equals(c2)); // false

输出结果出乎我们的意料,竟然是 false?这是怎么回事,看了 equals 源码就知道了,源码如下:

public boolean equals(Object obj) {
return (this == obj);
}

原来 equals 本质上就是 ==。

那问题来了,两个相同值的 String 对象,为什么返回的是 true?代码如下:

String s1 = new String("叶子");
String s2 = new String("叶子");
System.out.println(s1.equals(s2)); // true

同样的,当我们进入 String 的 equals 方法,找到了答案,代码如下:

public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}

原来是 String 重写了 Object 的 equals 方法,把引用比较改成了值比较。

总结

== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而 equals 默认情况下是引用比

较,只是很多类重新了 equals 方法,比如 String**、**Integer 等把它变成了值比较,所以一般情况下

equals 比较的是值是否相等。

2.Hashcode的作用

java的集合有两类,一类是List,还有一类是Set。前者有序可重复,后者无序不重复。当我们在set中插入的时候怎么判断是否已经存在该元素呢,可以通过equals方法。但是如果元素太多,用这样的方法就会比较慢。

于是有人发明了哈希算法来提高集合中查找元素的效率。 这种方式将集合分成若干个存储区域,每个对象可以计算出一个哈希码,可以将哈希码分组,每组分别对应某个存储区域,根据一个对象的哈希码就可以确定该对象应该存储的哪个区域

hashCode方法可以这样理解:它返回的就是根据对象的内存地址换算出的一个值。这样一来,当集合要添加新的元素时,先调用这个元素的hashCode方法,就一下子能定位到它应该放置的物理位置上。如果这个位置上没有元素,它就可以直接存储在这个位置上,不用再进行任何比较了;如果这个位置上已经有元素了,就调用它equal方法与新元素进行比较,相同的话就不存了,不相同就散列其它的地址。这样一来实际调用equals方法的次数就大大降低了,几乎只需要一两次。

3. 两个对象的hashCode() 相同, 那么equals()也一定为 true吗?

不对,两个对象的 hashCode() 相同,equals() 不一定 true。

代码示例:

String str1 = "keep";
String str2 = "brother";
System. out. println(String. format("str1:%d | str2:%d", str1.
hashCode(),str2. hashCode()));
System. out. println(str1. equals(str2));

执行结果:

str1:1179395 | str2:1179395
false

代码解读:很显然“keep”和“brother”的 hashCode() 相同,然而 equals() 则为 false,因为在散列表中,hashCode() 相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等

4.泛型常用特点

泛型是Java SE 1.5之后的特性, 《Java 核心技术》中对泛型的定义是:

“泛型” 意味着编写的代码可以被不同类型的对象所重用。

“泛型”,顾名思义,“泛指的类型”。我们提供了泛指的概念,但具体执行的时候却可以有具体的规则来约束,比如我们用的非常多的ArrayList就是个泛型类,ArrayList作为集合可以存放各种元素,如Integer,String,自定义的各种类型等,但在我们使用的时候通过具体的规则来约束,如我们可以约束集合中只存放Integer类型的元素,如

List<Integer> iniData = new ArrayList<>()

5.使用泛型的好处?

以集合来举例,使用泛型的好处是我们不必因为添加元素类型的不同而定义不同类型的集合,如整型集合类,浮点型集合类,字符串集合类,我们可以定义一个集合来存放整型、浮点型,字符串型数据,而这并不是最重要的,因为我们只要把底层存储设置了Object即可,添加的数据全部都可向上转型为Object。 更重要的是我们可以通过规则按照自己的想法控制存储的数据类型。

附上一篇博客介绍泛型

http://www.khdw.cn/news/12728.html

相关文章:

  • 织梦做网站简单吗百度推广好做吗
  • 网页设计师 培训珠海百度搜索排名优化
  • 阿里巴巴外贸平台中文东莞网站推广及优化
  • 网站建设后的团队总结今日新闻头条新闻最新
  • 分销商城管理系统搜索引擎关键词排名优化
  • 河南做网站网络测试
  • 长春餐饮网站建设优化seo
  • 网络公司给我们做的网站_但是我们不知道域名是否属于我们怎么制作网站详细流程
  • 网站模版网百度上传自己个人简介
  • 好的优化网站推广公司提升网页优化排名
  • 建设集团网站的作用seo提高网站排名
  • 怎么用阿里云做网站公司搜索seo
  • 常用网站如何在桌面做快捷方式短视频seo推广
  • 网站毕业设计怎么做优化推广seo
  • wordpress文章站seo课程培训中心
  • oa系统定制seo手机优化软件哪个好用
  • 做任务推广网站百度点击工具
  • 做网站怎样赚卖流量外贸推广公司
  • 申请永久网站空间今天的新闻 最新消息摘抄
  • 做问卷哪个网站好培训机构管理系统
  • 免费制作网站的基本流程免费制作链接
  • 网站每个月8g流量宣传广告怎么做吸引人
  • 做网站前端和平面配合拼多多怎么查商品排名
  • 做电影网站合法吗郑州百度公司地址
  • wordpress外贸网站建设长沙关键词优化平台
  • 江苏建设管理中心网站网络营销代运营外包公司
  • 做国际黄金的网站广州seo网站开发
  • 好看开源企业网站模板seo sem是什么职位
  • 网站建设首选易网宣百度广告竞价排名
  • wordpress表格左右滚动怎么做好网站搜索引擎优化