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

网站建设的网络技术网站设计沟通

网站建设的网络技术,网站设计沟通,免费的求职简历模板网站,内乡网站建设部分面试资料链接:https://pan.baidu.com/s/1qDb2YoCopCHoQXH15jiLhA密码:jsam想获得全部面试必看资料#xff0c;关注公众号#xff0c;大家可以在公众号后台回复“知乎”即可。“判断两个事物是否相等”#xff0c;是编程中最常见的操作之一#xff0c;在Java中#xff…部分面试资料链接:https://pan.baidu.com/s/1qDb2YoCopCHoQXH15jiLhA密码:jsam想获得全部面试必看资料关注公众号大家可以在公众号后台回复“知乎”即可。“判断两个事物是否相等”是编程中最常见的操作之一在Java中判断是否相等有两种方法一种是使用“”判断符另一种是使用“equals()”方法你是否曾因混用二者导致不可思议的bug本篇文章将带你深入二者背后的判断原理。相等判断符相等判断符用于比较基本数据类型和引用类型数据。当比较基本数据类型的时候比较的是数值当比较引用类型数据时比较的是引用(指针)。判断基本类型数据基本数据类型指的是Java中的八大数据类型byteshortintlongfloatdoublecharboolean。这八大基本数据类型有个共同的特点是它们在内存中是有具体值的, 比如说一个 int 类型的数据2它在8位数据总线的机器上保存形式为 0000 0010。8位机器是假设的当使用 比较两个基本数据类型的时候, 就是在比较它们各自在内存中的值。为了照顾到要刨根问底的同学再补充一下两个数值是怎么比较的cpu 在比较的时候会将两个值作差然后查看标志寄存器。标志寄存器存放的是运算的结果里面有一个是否为0的标志位如果该位为1证明二者之差为0二者相等。判断引用类型数据引用数据类型在字面上也是很好理解的, 它就是一个引用, 指向堆内存中一个具体的对象。比如说Student stu new Student(); 这里的 stu 就是一个引用它指向的是当前 new 出来的 Student 对象. 当我们想要操作这个 Student 对象时, 只需要操作引用即可, 比如说int age stu.getAge();。所以用判断两个引用数据类型是否相等的时候实际上是在判断两个引用是否指向同一个对象。看下面的示例public static void main(String[] args) {String s1 hello; //s1指向字符串常量池中的hello字符串对象String s2 hello; //s2也指向字符串常量池中的hello字符串对象System.out.println(s1 s2); //trueString s3 new String(hello); //s3指向的是堆内存中的字符串对象 System.out.println(s1 s3); //false }从上面的例子可以看到由于引用s1和s2指向的都是常量池中的hello字符串所以返回true。后面我会发布一篇详细讲述Java字符串的文章涉及字符串初始化和字符串常量池等知识而s3指向的是新创建字符串对象因为只要动用了new关键字, 就会在堆内存创建一个新的对象。也就是说 s1 和 s3 指向的是不同的字符串对象所以返回false。相等判断方法equals()equals()和 有着本质的区别 可以看作是对“操作系统比较数据手段”的封装而equals()则是每个对象自带的比较方法它是Java自定义的比较规则。equals()和 的本质区别更通俗的说法是的比较规则是定死的就是比较两个数据的值。而 equals() 的比较规则是不固定的可以由用户自己定义。看下面的例子:public static void main(String[] args) {String s1 hello;String s3 new String(hello); System.out.println(s1.equals(s3)); //true }回想前面的案例用 比较的时候, 上面 s1 和 s3 比较出的结果为false。而当用 equals() 比较的时候得出的结果为 true。想知道原因我们还得看源码下面是 String 类中的 equals() 方法的源码。public boolean equals(Object anObject) {if (this anObject) { //先比较两个字符串的引用是否相等(是否指向同一个对象), 是直接返回truereturn 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 类型数据的 equals() 方法时首先会判断两个字符串的引用是否相等也就是说两个字符串引用是否指向同一个对象是则返回true。如果不是指向同一个对象则把两个字符串中的字符挨个进行比较。由于 s1 和 s3 字符串都是 hello是可以匹配成功的所以最终返回 true。思考为什么要设计equals()方法?通过上面的讲解相信你已经知道 和 equals() 的区别了一个的比较规则是定死的一个是可以由编程人员自己定义的。可是为什么会有 equals() 方法, 而且还可以被自由定制呢?这个问题要落到Java语言的核心 —— 面向对象思想了。Java 不同于面向过程的C语言Java是一款面向对象的高级语言。如果是面向过程编程直接操作内存上存储的数据的话用 所定义的规则来判断两个数据是否相等已经足够了。而Java中万物皆对象我们经常要面临的问题是这两个对象是否相等而不是这两串二进制数是否相等仅有 是完全不够用的。由于Java程序员们会创建各种满足它们业务需求的对象系统无法提前知道两个对象在什么条件下算相等Java干脆把判断对象是否相等的权力交给编程人员。具体的措施是所有的类都必须继承 Object 类而 Object 类中写有equals()方法。编程人员可以通过重写 equals() 方法来实现自己的比较策略也可以不重写使用Object类的equals()比较策略。//Object类中的equals()方法源码 public boolean equals(Object obj) {return (this obj); }从 Object 类的 equals() 源码可以看到如果编程人员没有显示地重写 equals() 方法则默认比较两个引用是否指向同一个对象。补充: 关于基本数据类型包装类的比较由于 Java 中万物皆对象就连基本数据类型也有其对应的包装类那么它们对应的比较策略是什么呢public static void main(String[] args) {int a 3;Integer b new Integer(3);System.out.println(b.equals(a)); //true, 自动装箱 }从上面的代码可以看到尽管两个引用不同, 但是输出的结果仍为 true, 证明 Integer 包装类重写了 equals() 方法追踪其源码//Integer类中的equals方法 public boolean equals(Object obj) {if (obj instanceof Integer) {return value ((Integer)obj).intValue();}return false; }从源码看到基本类型包装类在重写equals()后比较的还是基本数据类型的值。结束通过探索 和 equals() 的区别我们摸清楚了二者别后的比较策略同时也对 Java 中 equals() 方法的设计进行了思考相信大家在今后的 Java 编程实战中不会再为相等判断而烦恼了。部分面试资料链接:https://pan.baidu.com/s/1qDb2YoCopCHoQXH15jiLhA密码:jsam想获得全部面试必看资料关注公众号大家可以在公众号后台回复“知乎”即可。
http://www.pierceye.com/news/464196/

相关文章:

  • 餐饮手机微网站怎么做wordpress 多语言建站
  • 企业信息系统案例东昌府聊城网站优化
  • 做美食直播哪个网站好php网站开发数据列表排重
  • 网站建设 职责网站分站加盟
  • 单页网站产品手机网站免费生成
  • 无锡电子商务网站建设公司德国网站的后缀名
  • 服务器做视频网站赣州企业做网站
  • 如何看出网站用dede做的网站百度快照
  • 做网站很难吗五种新型营销方式
  • 个人网站搭建模拟感想江西企业网站建设哪家好
  • 长春企业网站建设网站制作公司相关工作
  • 免费课程网站有哪些兼职网站项目建设报告
  • 建立网站免费dedecms网站地图制作
  • 网页设计公司网站制作做网站最主要是那个一类商标
  • 卫生局网站建设方案网站架构设计英文翻译
  • 学做衣服网站有哪些智能开发平台软件
  • wordpress 下载站插件wordpress清楚所有评论
  • 公司网站建设工作计划网站设置受信任
  • 网站如何做实名验证码深圳企业网站推广
  • 傻瓜式大型网站开发工具餐饮业手机php网站
  • 网站建设小细节图片东阳网站建设yw126
  • 为什么找不到做网站的软件怎么做音乐mp3下载网站
  • 做一个网站需要什么网络营销方式分析论文
  • 可以做3d电影网站企业网站优化应该怎么做
  • 中山做网站联系电话app客户端开发公司
  • 秦皇岛网站推广价钱南京建设网站制作
  • 2018钓鱼网站建设邢台seo公司
  • 深圳建设交易中心网站域名网站建设
  • 做网站色弱可以吗一个网址多少钱
  • 如何查询网站接入信息产品营销网站