【问题标题】:Deference between Parameters, Arguments & Local Variables in JAVAJAVA中参数、参数和局部变量之间的区别
【发布时间】:2017-12-14 21:22:07
【问题描述】:

我想了解JAVAParameters, Arguments & Local Variables之间的区别。谁能很好地解释一下他们?

对我来说,以下代码中有一个不清楚的地方。这是 Java 代码的一部分。

Language(String t) {
    name = t;
}

还有.....

Language() {
    String t;
    name = t;
}

我想知道以上两种类型的区别。有什么区别? 运行代码时有什么区别

【问题讨论】:

  • 一个编译,另一个不编译。
  • 你能解释一下吗?
  • 第二个sn-p中的t是一个未初始化的局部变量,因此不能赋值给name
  • 在您的情况下,变量是字符串 t 中的 t;在该行中:语言(字符串 t){ 名称 = t; } ; name - 公共变量,t - 参数

标签: java


【解决方案1】:

除了评论者在上面指出您的第二个代码 sn-p 无法编译这一事实之外,参数和参数本质上是相同的(在您的第一个示例中为 t)。它们是传递给方法的变量。

局部变量是在方法中声明的变量,所以在固定的sn-p中:

public void myMethod(string t) {

    int x = 6;
    String y = t;
}

这里的 t 是一个参数(或参数)。 y 是一个局部变量。

【讨论】:

    【解决方案2】:

    您的两个示例之间的区别在于第一个示例:

    Language(String t) {
        name = t;
    }
    
    • 此示例在构造函数中接受一个参数(假设 Language() 是通用命名约定的构造函数。参数也称为参数。它是在调用此方法/构造函数时从外部传入的值。'此示例中的任何地方都没有定义 name',因此,此代码不会编译。

    在你的第二个例子中:

    Language() {
        String t;
        name = t;
    }
    
    • 没有定义参数/参数
    • 't' 是一个局部变量。本地意味着它在此块 { } 范围内是本地的,因此仅在此块内可见
    • name又没有在任何地方定义,所以不会编译
    • 't' 永远不会被赋值,null 也是如此
    • 如果在某处定义了名称,则该名称将被分配为空

    因此,主要区别在于第一个示例采用参数并尝试将其分配给未定义的“名称”,而第二个示例不采用参数。

    【讨论】:

    • 't' 从未被赋值,因此为 null。不正确。局部变量没有默认值。
    猜你喜欢
    • 2012-09-24
    • 1970-01-01
    • 2020-11-03
    • 2019-02-17
    • 2013-01-04
    • 2022-06-16
    • 2011-03-11
    • 1970-01-01
    相关资源
    最近更新 更多