当前位置: 首页 > 网络应用技术

在Java编程中忽略这些细节,错误必须找到您

时间:2023-03-08 18:18:21 网络应用技术

  Java语言构建的各种应用在人类日常生活中占有非常重要的地位。所有主要的IT制造商都将使用它来构建自己的产品来为客户提供服务。作为企业级别的应用程序开发语言,稳定且高效的操作至关重要。在Java语言的日常编程中,还有一些细节很容易被忽略。这些详细信息可能会导致程序中的各种错误。以下细节总结了以下详细信息:

  在许多情况下,我们需要确定两个对象是否相等。一般来说,这两个对象是否相等,它们是基于它们的值是否相等的。,但两者是不同的,不能混合。下面给出了示例:

  字符串A和B的文字值是“ Java”。如果您用a == b进行判断,则输出false,即,不相等,A.Equals(b)输出true,哪个是相等的。这是什么?在Java中,字符串是不变的类型。一般而言,如果两个字符串的值相等,则默认情况下将指定相同的内存地址,但是此处的字符串字符串B此处使用新的字符串方法强制生成一个新的新的Onestring对象,因此两个是不一致的。bave ==对象的内存地址是否需要一致,返回false和等于默认值(不一定是不一定是覆盖),根据字面价值(即平等)进行判断。

  下面给出了另一个示例:

  这是因为Java中整数值的范围为-128至127,因此该范围内对象的内存地址是一致的,并且超过此范围的值对象的内存地址是不一致的。因此,=返回false,但在比较下返回真实。

  在许多情况下,我们需要根据输入参数的范围单独处理它们。除了使用if ... else ...语句之外,我们还可以使用Switch语句。在Switch语句中,将分别列出和处理多个分支条件,但是如果您不注意,则可能会丢失关键字中断语句,使得预期价值超出期望值。该示例如下:

  如果我们使用以下语句来调用:

  我们希望返回“ 0”,但我们返回“ 0”“ 1”。这是因为Case 0分支下的断路关键字缺少。尽管该程序与分支匹配,但它可以穿透下一个分支,即情况1分支,然后在遇到休息后返回值。

  字符串的缝线操作是非常高的频率操作,但是如果涉及的缝线量非常大,如果 +符号直接用于缝线,则效率非常低,并且程序运行缓慢。示例以下给出:

  上面的示例分别在周期中用 +和StringBuilder剪接,并计算运行时间(毫秒)。仿真计算机的结果如下:

  可以看出,使用StringBuilder构建字符串速度远高于 +剪接。原因是因为Java语言中的字符串类型是不变的。因此,在+操作后,将创建一个新的字符串,这将涉及大量对象创建工作和垃圾回收机构的干预。因此,时间 - 耗费。

  在某些情况下,我们需要从集合对象删除特定元素。如果Java语言是从编程语言列表中删除的,则将涉及此类场景,但是如果未正确处理,则将抛出ConturrentModification Exception异常。

  运行上述方法,您将出现错误。目前,您可以使用以下方法来求解它,即迭代器迭代器,该迭代仪特定于下面:

  在该方法中,应首先验证参数的合法性。首先,有必要验证参数是否为null,然后确定参数是否为预期范围的值。如果您不先判断null,并直接调用参数比较或方法,而是直接调用NULL的异常可能发生的示例如下:

  如果我们目前调用以下方法,请引发一个例外:

  这是因为假设单词不是null,您可以调用字符串对象的等值方法。可以稍微修改以下内容,如下所示:

  目前,它可以正确运行:

  如前所述,等价方法可以确定两个对象是否与文字值相等。从类似地说,如果两个对象相等,则哈希代码是相等的,但是如果哈希代码相等,则两个对象可能是平等的或不同。这是由于替代被覆盖的替代所致。该示例如下:

  执行上述代码之后,因为哈希码方法被覆盖并每次返回随机哈希代码,这意味着两个对象的哈希代码不一致,因此等于判断的判断返回false,尽管两个对象的文字值是“”cumt”。

  我们知道计算机的内存受到限制。如果Java创建的对象无法释放,新创建的对象将继续占据剩余的内存空间,最终将导致内存空间不足并抛出异常的内存溢出。具有异常存储器的基本单元测试并不容易找到,并且经常在运行一定时期后发现。该示例如下:

  在此示例中,有一个无限循环,它将始终创建一个对象并将其添加到属性容器中。如果MemoryLeakDemo类不提供自己的等值方法和HashCode方法,则将将此对象添加到属性容器中。最终内存泄漏。新创建的MemoryLeakDemo实例,因为密钥值是一致的,因此可以确定其存在,并且不会重复添加。目前,将没有内存溢出。

  本文分享了华为云社区的诚意,作者:Jackwangcumt。