局部变量
“你好,我亲爱的学生!是时候认真对待变量了。但是这次我们不会讨论它们的内部结构。相反,我们将关注变量如何与它们所在的代码交互。
“在方法内部声明的所有变量都称为局部变量。局部变量仅存在于声明它的代码块中。或者更准确地说,它从声明的那一刻起一直存在到块的末尾声明它的代码。”
“显然,我需要一个例子。”
“没问题。给你:
代码 | 变量可用性 |
---|---|
|
|
“让我们再复习一次访问局部变量的规则。这是一段代码。它的开始和结束标记是什么?”
“大括号?”
“正确。这可能是一个方法体,一个循环体,或者只是一个条件语句的代码块。在代码块中声明的变量一直存在到该代码块的末尾。告诉我,将在哪里如果在循环体中声明变量,则该变量存在?”
“它将只存在于循环体中。”
“没错,而且每次循环都会创建和销毁它。”
“这意味着你不能在一个方法中声明两个同名的局部变量——程序将无法编译。但如果声明变量的代码块不重叠,你就可以这样做。 ”
“你是我的最爱是有原因的,阿米戈。再举一个例子来巩固你的大脑。
代码 | 可变可见性 |
---|---|
|
|
“我们能够声明第二个局部变量,b
仅因为第一个变量在声明b
第二个变量的代码块中不可见。b
参数
“正如我们之前所说,每个方法都可以有我们称之为参数的变量。它们的可见性和生命周期呢?”
“嗯……我难住了……”
“这里的一切都很简单。参数是在执行进入方法时创建的(即当方法的代码开始执行时)。当方法结束时它们被消除。”
“也就是说,它们在整个法体中都是可见的,而且只存在于那里?”
“是的。例子:
代码 | 可变可见性 |
---|---|
|
|
“正如我们之前所说,args
它只是一个类型为字符串数组的变量。和所有参数一样,它在方法体内的任何地方都可用。也就是说,我们通常在示例中忽略它。
类中的变量
“请记住第 1 级的课程,我们说一个类可以有方法和变量。方法有时称为实例方法,而变量 — 实例变量或字段。
“类的变量(或字段)是什么?
它们是不是在方法中而是在类中声明的变量。”
“他们在那里干什么?”
“对于初学者来说,可以从一个类的任何(非静态)方法访问它们。粗略地说,实例变量是一个类的所有方法共享的变量。
例子:
代码 | 可变可见性 |
---|---|
|
|
“在这个例子中,我们有两个方法——add()
和remove()
。add()
方法增加sum
和count
实例变量,remove()
方法减少sum
和count
变量。这两种方法都适用于共享实例变量。”
“我都明白了!局部变量在方法执行时存在。只要对象存在,类的实例变量就存在于类的对象中。”
“干得好,阿米戈。我们已经奠定了一些基础,你将在下一个级别了解有关某个类对象的详细信息。
静态变量
“和方法一样,类中的变量可以是静态的,也可以是非静态的。静态方法只能访问静态变量。
“我对静态变量还没有很清楚的认识。”
“哦,我知道,但别担心。现在,先适应它们。熟悉它们。在第 11 关中,我们将分析静态变量和方法的结构,您将了解这些的原因限制。
“要创建静态变量(类变量),必须static
在其声明中写入关键字。
“静态变量不绑定到声明它们的类的对象或实例。相反,它们属于类本身。这就是为什么即使没有创建类的单个对象它们也存在的原因。你可以参考他们来自其他类,使用如下结构:
ClassName.variableName
例子:
代码 | 可变可见性 |
---|---|
|
|
“在上面的示例中,我们创建了一个单独的Storage
类,将count
和sum
变量移入其中,并将它们声明为static。公共静态变量可以从程序中的任何方法访问(而不仅仅是从方法中访问)。”
“我不是很明白,但这对我来说似乎很方便。”
“确实如此。有时这是必要的。如果没有静态变量和方法,我们就会陷入困境。”
“希望,我能慢慢弄明白。”
“是的,你当然会。”
GO TO FULL VERSION