Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中再次使用同一变量之前将变量设为null_Java_Null_Variable Assignment - Fatal编程技术网

在Java中再次使用同一变量之前将变量设为null

在Java中再次使用同一变量之前将变量设为null,java,null,variable-assignment,Java,Null,Variable Assignment,我只是检查regex中的一些表达式,在方法中,我一次又一次地重用变量 Pattern pattern = Pattern.compile("([^test])"); Matcher matcher = pattern.matcher("SS"); if (matcher.find()) { return false; } //Making it 'null' before re-use pat

我只是检查regex中的一些表达式,在方法中,我一次又一次地重用变量

Pattern pattern = Pattern.compile("([^test])");
        Matcher matcher = pattern.matcher("SS");
        if (matcher.find()) {
            return false;
        }
        //Making it 'null' before re-use
        pattern = null;
        matcher = null;
        pattern = Pattern.compile("([newtest]){4,}");
        matcher = pattern.matcher("test");
        if (matcher.find()) {
            return false;
        }
        pattern = null;
        matcher = null;
        pattern = Pattern.compile("[stack]{2,}");
        matcher = pattern.matcher("overflow");
        if (matcher.find()) {
            return false;
        }
在设置其他新值之前,将变量设置为
null
是否好

它有意义吗

注意:这可能是非标准的标志,再次使用同一个变量,但我只想知道在重新赋值之前是否可以先取消该变量

在设置其他新值之前,将变量设为null是否好

不-这是毫无意义的,并且使代码更难阅读

在我看来,无论如何,你应该想出一些循环的方法——目前你已经一次又一次地得到了相同类型的代码,这是一个坏主意。所有的变化都是数据,所以参数化。我假设在您的实际代码中,您不会同时对模式和输入数据进行硬编码,但是您可以很容易地得到一个模式列表来进行测试,例如

我个人发现,如果我在一个方法中为了不同的目的重用一个变量(而不是,比方说,根据它的当前值修改它),这表明我无论如何都应该重构

在设置其他新值之前,将变量设为null是否好

不-这是毫无意义的,并且使代码更难阅读

在我看来,无论如何,你应该想出一些循环的方法——目前你已经一次又一次地得到了相同类型的代码,这是一个坏主意。所有的变化都是数据,所以参数化。我假设在您的实际代码中,您不会同时对模式和输入数据进行硬编码,但是您可以很容易地得到一个模式列表来进行测试,例如


我个人发现,如果我在一个方法中为了不同的目的重用一个变量(而不是,比方说,根据它的当前值修改它),这表明我无论如何都应该重构。

这不会有什么区别,因为当你将一个对象分配给不同的引用时,旧对象将丢失其引用,并有资格进行垃圾回收。赋值给null也会使引用丢失到当前对象的链接

这不会有什么区别,因为当您将一个对象分配给另一个引用时,旧对象将丢失其引用,并有资格进行垃圾收集。赋值给null也会使引用丢失到当前对象的链接

不,没有任何意义


当一个新对象被分配给一个非空变量时,现有对象将丢失其引用,并且它将有资格进行垃圾收集。当您将变量设置为null时,也会发生同样的情况。

不,它没有任何意义


当一个新对象被分配给一个非空变量时,现有对象将丢失其引用,并且它将有资格进行垃圾收集。当您将变量设置为null时,也会发生同样的情况。

这没有什么区别


如果将
null
赋值给一个变量并在其后立即赋值,则只需在代码上再添加一行。当您分配另一个值而不是null时,旧值就可以进行垃圾收集了。

这没有什么区别


如果将
null
赋值给一个变量并在其后立即赋值,则只需在代码上再添加一行。当您分配另一个值而不是null时,旧值就可以进行垃圾收集。

有时它可以防止
内存泄漏
,这在
有效Java
中有详细描述
并使未使用的对象为
垃圾收集做好准备

有时它可以防止
内存泄漏
有效Java
“过时引用”
中有很好的描述,并使未使用的对象为
垃圾收集做好准备,将变量设置为null似乎有助于垃圾收集过程。显然,JVM对设置为null的变量的响应比对分配给新对象的变量的响应要快,从而使前一个对象挂起。我的代码演示了这一点,可以在这里找到:


我执行了一些测试,将变量设置为null似乎有助于垃圾收集过程。显然,JVM对设置为null的变量的响应比对分配给新对象的变量的响应要快,从而使前一个对象挂起。我的代码演示了这一点,可以在这里找到:


谢谢你的帮助Jon:)谢谢你的帮助Jon:)谢谢你的意见JunedHank谢谢你的意见Juned