您现在的位置是:主页 > news > 网站发布之后上传文件路径变了/网站更换服务器对seo的影响

网站发布之后上传文件路径变了/网站更换服务器对seo的影响

admin2025/5/3 14:58:52news

简介网站发布之后上传文件路径变了,网站更换服务器对seo的影响,wordpress theme 开发,怎么做网站vip并且收费文章目录1. 正确使用 equals 方法1.1 说明1.2 注意2. 整型包装类值的比较2.1 说明2.2 P3C插件3. BigDecimal3.1 BigDecimal 的用处3.2 BigDecimal 的大小比较3.3 BigDecimal 保留几位小数3.4 BigDecimal 的使用注意事项3.5 BigDecimal的使用总结4. 基本数据类型与包装数据类型的…

网站发布之后上传文件路径变了,网站更换服务器对seo的影响,wordpress theme 开发,怎么做网站vip并且收费文章目录1. 正确使用 equals 方法1.1 说明1.2 注意2. 整型包装类值的比较2.1 说明2.2 P3C插件3. BigDecimal3.1 BigDecimal 的用处3.2 BigDecimal 的大小比较3.3 BigDecimal 保留几位小数3.4 BigDecimal 的使用注意事项3.5 BigDecimal的使用总结4. 基本数据类型与包装数据类型的…

文章目录

  • 1. 正确使用 equals 方法
    • 1.1 说明
    • 1.2 注意
  • 2. 整型包装类值的比较
    • 2.1 说明
    • 2.2 P3C插件
  • 3. BigDecimal
    • 3.1 BigDecimal 的用处
    • 3.2 BigDecimal 的大小比较
    • 3.3 BigDecimal 保留几位小数
    • 3.4 BigDecimal 的使用注意事项
    • 3.5 BigDecimal的使用总结
  • 4. 基本数据类型与包装数据类型的使用标准

1. 正确使用 equals 方法


1.1 说明

Objectequals方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals

示例代码:

// 不能使用一个值为null的引用类型变量来调用非静态方法,否则会抛出异常String str = null;System.out.println(str.equals("hello world"));

结果:
在这里插入图片描述

运行上面的程序会抛出空指针异常,但是我们把代码下面这样的话,就不会抛出空指针异常:

// 不能使用一个值为null的引用类型变量来调用非静态方法,否则会抛出异常String str = null;System.out.println("hello world".equals(str));

结果:
在这里插入图片描述

不过更推荐使用 java.util.Objects.equals (JDK7 引入的工具类)。我们看一下java.util.Objects.equals的源码就知道原因了。
在这里插入图片描述

public static boolean equals(Object a, Object b) { 
// 可以避免空指针异常。如果a==null的话此时a.equals(b)就不会得到执行
return (a == b) || (a != null && a.equals(b)); }

示例代码:

        String str = null;System.out.println(java.util.Objects.equals(str, "hello world"));

结果:
在这里插入图片描述


1.2 注意

在这里插入图片描述

示例:

public class TestNull {// 设置test为nullstatic TestNull test = null;public static void main(String[] args) {// null 调用静态方法不会报错System.out.println(test.returnLove());// null 调用非静态方法会报错System.out.println(test.returnYear());}// 静态方法public static int returnLove() {return 520;}// 非静态方法public int returnYear() {return 1314;}
}

结果:
在这里插入图片描述


2. 整型包装类值的比较

关于包装类可以查看这篇文章


2.1 说明

所有整型包装类对象值的比较必须使用equals方法。

先看下面这个例子:
在这里插入图片描述

当使用自动装箱方式创建一个Integer对象时,当数值在-128 ~127时,会将创建的 Integer 对象缓存起来,当下次再出现该数值时,直接从缓存中取出对应的Integer对象。所以上述代码中,xy引用的是相同的Integer对象。


2.2 P3C插件

在这里插入图片描述

如果你的IDE上安装了阿里巴巴的Alibaba Java Coding Guidelines(XenoAmess TPM)插件,这个插件如果检测到你用 == 的话会报错提示,推荐安装一个这个插件,很不错。
在这里插入图片描述


3. BigDecimal


3.1 BigDecimal 的用处

《阿里巴巴Java开发手册》中提到:

浮点数之间的等值判断,对于基本数据类型(floatdouble)不能用==来比较,包装数据类型(FloatDouble)不能用 equals 来判断。 具体原理和浮点数的编码方式有关,这里就不多提了,我们下面直接上实例:

        Float a = 1.0f - 0.9f;Float b = 0.9f - 0.8f;System.out.println(a);// 0.100000024System.out.println(b);// 0.099999964System.out.println(a.equals(b));// falsefloat a1 = 1.0f - 0.9f;float b1 = 0.9f - 0.8f;System.out.println(a1);// 0.100000024System.out.println(b1);// 0.099999964System.out.println(a1 == b1);// false

结果:
在这里插入图片描述

具有基本数学知识的我们很清楚的知道输出并不是我们想要的结果(由于计算机底层精度丢失),我们如何解决这个问题呢?一种很常用的方法是:使用使用 BigDecimal 来定义浮点数的值,再进行浮点数的运算操作。

示例:

        BigDecimal a = new BigDecimal("1.0");BigDecimal b = new BigDecimal("0.9");BigDecimal c = new BigDecimal("0.8");BigDecimal x = a.subtract(b);// 0.1BigDecimal y = b.subtract(c);// 0.1System.out.println(x.equals(y));// true

结果:

在这里插入图片描述


3.2 BigDecimal 的大小比较

a.compareTo(b) : 返回 -1 表示小于,0 表示 等于, 1表示 大于。

示例:

        BigDecimal a = new BigDecimal("1.0");BigDecimal b = new BigDecimal("0.9");BigDecimal c = new BigDecimal("0.1");System.out.println(a.compareTo(b));// 1System.out.println(a.subtract(b).compareTo(c));// 0

结果:
在这里插入图片描述


3.3 BigDecimal 保留几位小数

通过 setScale方法设置保留几位小数以及保留规则。保留规则有挺多种(我这里采用的是四舍五入),不需要记,IDEA会提示。
在这里插入图片描述

    public static void main(String[] args) {BigDecimal m = new BigDecimal("1.255433");BigDecimal n = m.setScale(3, BigDecimal.ROUND_HALF_UP);System.out.println(n);// 1.255BigDecimal m1 = new BigDecimal("1.255533");BigDecimal n1 = m1.setScale(3, BigDecimal.ROUND_HALF_UP);System.out.println(n1);// 1.255}

结果:
在这里插入图片描述


3.4 BigDecimal 的使用注意事项

注意:我们在使用BigDecimal时,为了防止精度丢失,推荐使用它的 BigDecimal(String) 构造方法来创建对象。《阿里巴巴Java开发手册》对这部分内容也有提到如下图所示。
在这里插入图片描述


3.5 BigDecimal的使用总结

  • BigDecimal 主要用来操作(大)浮点数,BigInteger 主要用来操作大整数(超过 long 类型)。
  • BigDecimal 的实现利用到了 BigInteger, 所不同的是 BigDecimal 加入了小数位的概念。

4. 基本数据类型与包装数据类型的使用标准

在这里插入图片描述

比如我们如果自定义了一个Student类,其中有一个属性是成绩score,如果用Integer而不用0定义。一次考试,学生可能没考,值是null,也可能考了,但考了0分,值是0,这两个表达的状态明显不一样。

如果我们使用int去定义score属性,不管是考了0分还是没考,返回的结果都是0