首页 > 编程语言 >java语法

java语法

时间:2023-01-30 09:56:13浏览次数:58  
标签:运算符 java 对象 equals hashCode 语法 方法 比较

自增自减运算符

自增运算符(++)和自减运算符(--)。

当运算符放在操作数之前时,先自增/减,再赋值;当运算符放在操作数之后时,先赋值,再自增/减。

例如,当“b=++a”时,先自增(自己增加 1),再赋值(赋值给 b);当“b=a++”时,先赋值(赋值给 b),再自增(自己增加 1)。

也就是,++a 输 出的是 a+1 的值,a++输出的是 a 值。用一句口诀就是:“符号在前就先加/减,符号在后就后加/减”。

a = 1     b = ++a  ——> a=2  b=2

a = 1     b = a++  ——> a=2  b=1

a = 1     b = a--    ——> a=0  b=1

a = 1     b = --a    ——> a=0  b=0

 

continue、break、和return的区别是什么?

1. continue :指跳出当前的这一次循环,继续下一次循环。

2. break :指跳出整个循环体,继续执行循环下面的语句。

3. return 用于跳出所在方法,结束该方法的运行。return 一般有两种用法:

return;:直接使用 return 结束方法执行,用于没有返回值函数的方法

return value: return一个特定值,用于有返回值函数的方法

 

“==”和equals的区别

“==”和equals 最大的区别是

  • “==”是运算符,如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所指向对象的地址值。
  • equals是Object的方法,比较的是所指向的对象的地址值,一般情况下,重写之后比较的是对象的值。

“==”是运算符

1. 如果比较的对象是基本数据类型,则比较的是其存储的值是否相等;
2. 如果比较的是引用数据类型,则比较的是所指向对象的地址值是否相等(是否是同一个对象)。

equals是Object的方法,用来比较两个对象的内容是否相等。

1. equals 方法不能用于比较基本数据类型,如果没有对 equals 方法进行重写,则相当于“==”,比较的是引用类型的变量所指向的对象的地址值。

2. 一般情况下,类会重写equals方法用来比较两个对象的内容是否相等。比如String类中的equals()是被重写了,比较的是对象的值。

 

HashCode和equal方法

https://blog.csdn.net/WinnerBear/article/details/126068645     这篇比较详细明了

在java中有一个共同的父类 Object ,所有对象均隐性继承了此类,其中 equals() 与 hashCode() 就是继承过来的方法。

equals()反映的是对象或变量具体的值,即两个对象里面包含的值,可能是对象的引用,也可能是值类型的值。

而hashCode()是对象或变量通过哈希算法计算出的哈希值。

之所以有hashCode方法,是因为在批量的对象比较中,hashCode要比equals来得快,很多集合都用到了hashCode,比如HashTable。

1、为什么要重写equals、hashCode方法?

答案:

(1)如果类中不重写方法:

hashCode():属于本地方法,返回的是对象的哈希码值,也称为散列码,实际返回的是一个int的整数。

(根据一定的规则与对象相关信息(例如对象的存储地址,对象的字段等)映射成一个数组,这个数值就被称为散列值。)

equals():用来比较两个对象的地址值是否相等

(2)如果类中重写方法:

hashCode():返回的是根据对象的成员变量,计算出的一个整数。

equals():比较的是两个对象中成员信息是否相同

 

3、为什么equals()相等,hashCode就一定要相等,而hashCode相等,却不要求equals相等?

答案:1、因为是按照hashCode来访问小内存块,所以hashCode必须相等。

2、HashMap获取一个对象是比较key的hashCode相等和equal为true。

之所以hashCode相等,却可以equal不等,就比如ObjectA和ObjectB他们都有属性name,那么hashCode都以name计算,所以hashCode一样,但是两个对象属于不同类型,所以equal为false。

4、为什么需要hashCode?

通过hashCode可以很快的查到小内存块。

通过hashCode比较比equal方法快,当get时先比较hashCode,如果hashCode不同,直接返回false。

 

标签:运算符,java,对象,equals,hashCode,语法,方法,比较
From: https://www.cnblogs.com/lzh7513/p/17037175.html

相关文章

  • javascript基础
    一。JavaScript使用场景1.改变内容getElementById()是多个JavaScriptHTML方法之一,使用该方法查找元素ID,并且可以使用(innerHTML)属性改变元素的内容2.改变HTML属性......
  • Javafinal关键字
    final关键字的使用要求final关键字final在java中表示的意思是最终的意思。也可以称为完结器。可以使用final关键字声明类、属性、方法。使用final声明的类不能有子类......
  • Java抽象类
    抽象类抽象类的概念:包含一个抽象方法的类就称为抽象类。抽象方法:只声明而未实现的方法称为抽象方法,抽象方法必须使用abstract关键字声明          ......
  • 读Java8函数式编程笔记05_数据并行化
    1. 并发1.1. 两个任务共享时间段1.2. 一个程序要运行两个任务,并且只有一个CPU给它们分配了不同的时间片,那么这就是并发,而不是并行2. 并行2.1. 两个任务在同一时......
  • Learning JavaScript Async Await In Depth All In One
    LearningJavaScriptAsyncAwaitInDepthAllInOne深入学习AsyncAwaitconsturl=`https://cdn.xgqfrms.xyz/json/cats.json`;constgetJSON=async(url)......
  • 《深入理解Java虚拟机》第三章读书笔记(一)——垃圾回收算法
    参考书籍《深入理解java虚拟机》周志明著系列文章目录和关于我本文主要介绍垃圾回收理论知识1.jvm哪些区域需要进行垃圾回收虚拟机栈,本地方法栈,程序计数器都是线......
  • 第11届蓝桥杯JavaB组省赛
    第11届蓝桥杯JavaB组省赛其他链接第12届蓝桥杯JavaB组省赛-Cattle_Horse第13届蓝桥杯javaB组省赛-Cattle_Horse前言用时及分数视频链接:11届蓝桥杯JavaB组省赛实......
  • 学习java第三天
    安装和卸载java8卸载:卸载:我的电脑右键+属性+高级系统设置+环境变量+java8gome+进入地址+java文件连包删除+删除环境变量+path+javahome删除+打开运行cmd输入java-versio......
  • Python 基础语法介绍(一)
    目录一、概述二、变量1)变量定义2)定义变量的规则3)变量命名规范4)变量类型转换三、注释1)单行注释2)多行注释1、单引号(''')注释2、双引号(""")注释四、运算符1)算术运算符2)关系运算......
  • JavaScript速成笔记
    JavaScript 不推荐内联第一段JavaScript:<!DOCTYPEhtml><html><body><h2>我的第一段JavaScript</h2><buttontype="button"onclick="document.getElementByI......