泉州制作网页的网站,新主题 老版本 wordpress,广州网站建设 全包,建设项目公示网站往期回顾#xff1a;
【前端学java】JAVA开发的依赖安装与环境配置 #xff08;0#xff09;【前端学 java】java的基础语法#xff08;1#xff09;【前端学java】JAVA中的packge与import#xff08;2#xff09;【前端学java】面向对象编程基础-类的使用 #xff08…往期回顾
【前端学java】JAVA开发的依赖安装与环境配置 0【前端学 java】java的基础语法1【前端学java】JAVA中的packge与import2【前端学java】面向对象编程基础-类的使用 3【前端学java】类中的访问权限详解通俗易懂4【前端学java】java中final修饰符5【前端学java】全网最通俗易懂的JAVA抽象概念6【前端学java】Java中的接口和枚举概念7【前端学java】java中的Object类8【前端学java】java 中的数组9【前端学java】java中的字符串操作10【前端学java】java中的包装类11【前端学java】java中的日期操作12【前端学java】语法练习-工具类的封装 13
集美们冲啊这个系列马上完结了接下来就是java高级篇、JDBC篇、框架篇了
基础知识巩固
在代码开发中经常涉及两个数值的比较问题。在前端中最简单的比较就是使用“”运算符
1 1 // false
1 1 // true在java中对象的比较和前端是存在差异的我们通过本节内容详细巩固一下。开始之前我们先复习一下差异项
java中的 单引号 表示字符一般是char类型的java中的 双引号 是字符串是String类型的。在Java中 符号并 不存在 、也 没有undefined 这个概念Java使用 操作符来比较两个值是否相等当比较两个基本数据类型如 int、char、double 等时 操作符的效果是相同的在比较 两个对象 的内容是否相等时 不能使用 操作符 在Java中对象比较的是它们的引用而不是它们的值。在这种情况下你应该使用 *******.equals() *******方法来比较两个对象的内容java中数据类型主要分为基本数据类型和引用数据类型
基本数据类型引用数据类型整形整数byte、short、int、longString表示字符串浮点型数据类型小数float、doubleArray表示数组字符型数据类型charClass表示类类型布尔型数据类型booleanInterface、Enum表示接口类型及表示枚举类
“” 比较符
基本数据类型比较 public static void main(String[] args) {int a 1;int b 1;System.out.println(ab); // true}基本数据类型中“”比较的是数值大小 public static void main(String[] args) {int a 10;double b 10.0;System.out.println(ab); // 10和10.0数值相等所以结果为true}引用数据类型的比较
在Java中对于引用数据类型如对象、数组等操作符比较的是它们的引用是否相等也就是说比较它们是否指向内存中的同一个位置。
String a 123;
String b new String(123);
System.out.println(a b); // false*上述代码中 *String a 123会创建一个字符串对象new String(“123”) 也会创建一个新的字符串对象两个字符串内存地址不同因此ab结果为false
如果想比较值是否相同我们使用.equals()方法。
String a 123;
String b new String(123);
System.out.println(a.equals(b)); // true字符串的比较是一个比较常见的操作因此String类存在一些优化
String a 123;
String b 123;
System.out.println(a b); // true如上述代码的字符声明方式在字符比较时比较的就是他们的值内容而不是引用地址。
类的比较
public class My_Utils {public static void main(String[] args) {Compare compare1 new Compare();Compare compare2 new Compare();System.out.println(compare1 compare2);}
}class Compare {}观察上述代码根据之前的知识我们能很快知道compare1 compare2的比较结果为fasle。
因为new 会创建一个新对象比较的就是内存地址。
那我们使用equals是否能比较其内容呢
Compare compare1 new Compare();
Compare compare2 new Compare();
System.out.println(compare1.equals(compare2)); // false结果为fasle这是为什么呢?我们进入compare1对象上的的 equals内部看看就明白了 通过代码我们可以知道其内部实际就是还是调用了运算符自然结果还是fasle
包装类的比较
我们来复习下Java中的包装类有哪些
Integer对应intDouble对应doubleFloat对应floatLong对应longShort对应shortByte对应byteCharacter对应charBoolean对应boolean
我们来看一个demo public static void main(String[] args) {Integer a 200;Integer b 200;System.out.println(a b); }上述代码中Integer a 200实际上是Integer numObj Integer.valueOf(10); 的简写形式我们称之为为自动装箱 这个过程是一个new的过程创建了新对象。因此根据 “”在类中只比较引用地址的特性我们可以知道上面的比较结果是fasle。
事实也的确如此
我们看另外一个例子 public static void main(String[] args) {Integer a 200;Integer b 200;System.out.println(a b); // falseInteger c 100;Integer d 100;System.out.println(c d); // true}结果似乎和我们想想的不一样这是为什么呢
原来对于Integer类Java会自动缓存-128到127之间的值也就是说如果创建的Integer对象的值在这个范围内那么它们会被自动缓存为同一个对象。所以当a和b的值都在这个范围内时a b的结果为true。
然而当c和d的值超过这个范围时Java不会为这些对象进行缓存。所以尽管它们的值相同但是因为它们不是同一个对象所以c d的结果为false。