小弟初学JAVA,弄不明白 变量的目的是啥,变量到底是干啥的?请大师赐教,真诚学习。希望回答的全面。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小弟初学JAVA,弄不明白 变量的目的是啥,变量到底是干啥的?请大师赐教,真诚学习。希望回答的全面。相关的知识,希望对你有一定的参考价值。

java里面变量就是用于指向一个具体的内存块的量。目的是为了存储数值,以及修改值,或者取得值。因为程序的目的就是为了运算。运算涉及到中间值,最终结果值等。变量就是为这个目的而设计的。 参考技术A 官方点的话就是存储、改变数据的值等等说法,通俗点的一个中转地,用起来方便。比方说一段代码中有100处用到了字符串“aaaa”,现在想把aaaa换成bbbb,怎么办?当然你可以用开发工具中的查找替换,但是下次又换成cccc了,你还查找替换,麻烦不?如果不嫌麻烦,你可以用,但是又有问题了,如果这个字符串现在还无法确定,怎么办,就需要定义一个变量了,比如定义为str,凡是用到这个字符串的地方你都用变量str代替,那么你只需要在定义str的时候给它赋一次值,后面用到的str就都会变成这个值了。 参考技术B 你可以把变量理解为一个存储器,为了满足我们需求而定义的。例如变量a,存储值为1,变量b,存储值为2,而a+b后会产生一个新的变量c,存储值为3。
不同的变量都有初始值,切有生命周期有的是方法级的,有的是类级的,有的是应用级的。根据自己的示例多体会。本回答被提问者采纳
参考技术C 变量就是可以变化的量,区别于常量(不能变化),因为在程序运行过程中,很多量总是在变化着的,故当然需要一个变化着的量(即变量)来表示 参考技术D 通俗的说,变量就是一个可以变的量。
举个例子:
int a; //a是变量
a=1;
a+1;//这个时候a+1就等于2
a=10;
a+1;//这个时候a+1就等于11.
这下你应该明白了吧

Java 类中使用的变量阴影是啥?

【中文标题】Java 类中使用的变量阴影是啥?【英文标题】:What is variable shadowing used for in a Java class?Java 类中使用的变量阴影是什么? 【发布时间】:2010-11-08 16:35:13 【问题描述】:

我正在阅读我的 Deitel,Java How to Program 一书,遇到了 shadowing 一词。如果允许阴影,Java 类中有什么情况或目的?

例子:

public class Foo 

    int x = 5;

    public void useField() 
        System.out.println(this.x);
    
    public void useLocal() 
        int x = 10;
        System.out.println(x);
    

【问题讨论】:

【参考方案1】:

影子的基本目的是将本地代码与周围的类解耦。如果不可用,请考虑以下情况。

API 中的 Foo 类已发布。在您的代码中,您将其子类化,并在您的子类中使用名为 bar 的变量。然后 Foo 发布一个更新并将一个名为 Bar 的受保护变量添加到它的类中。

现在由于您无法预料的冲突,您的课程将无法运行。

但是,不要故意这样做。只有当你真的不关心范围之外发生的事情时才让这种情况发生。

【讨论】:

我喜欢你的最后一点“只有当你真的不关心范围之外发生的事情时才让这种情况发生。” ...当您的实例变量值开始发生奇怪的事情时,您将知道何时开始关心 :))) 无论如何,始终在设置实例值的方法中使用 this.variable_name 是一个好习惯变量...【参考方案2】:

这对于你不想为方法参数创建单独的变量名的设置器很有用,例如:

public void setX(int x) 
    this.x = x;

除此之外,我会避开它们。

【讨论】:

这是隐藏变量的可怕原因。阴影总是让您面临潜在的错误,并且使用范围信息命名变量以及更改参数的名称比包含“this”更容易。每次。 对于一个简单的设置器,就像上面的例子一样,我认为这很好,重命名参数会使事情变得丑陋。比这更复杂的事情,我同意,完全避免。【参考方案3】:

一个主要目的是迷惑人们。这是不好的做法,应该避免。

【讨论】:

你能进一步解释一下 this.x=x 是如何令人困惑的吗?【参考方案4】:

Shadowing 并不是一个真正的 Java 术语。在任何情况下,如果在作用域中声明的变量与在更大作用域中的变量同名,该变量就会被隐藏。

阴影的一些常见用途是当您有内部类和外部类并且想要维护一个具有相同名称的变量时。

如果你可以避免它,你应该避免它,因为它可能会引起混乱。

【讨论】:

【参考方案5】:

两种常见的用法是构造函数和set方法:

public Foo(int x) 
    this.x = x;


public void setX(int x) 
    this.x = x;

如果您希望在单个瞬间获得变量的副本,这非常有用,但变量可能会在方法调用中发生变化。

private void fire() 
    Listener[] listeners = this.listeners;
    int num = listeners.length;
    for (int ct=0; ct<num; ++ct) 
        listeners[ct].stateChanged();
    

(当然,使用豪华的 for 循环不需要一个人为的例子。)

【讨论】:

这两种情况都不需要阴影。 @Rick 没有人谈论它是必要的。不需要阴影。 我是说,一个人永远不应该影子。只是以不同的方式命名变量。 @Rick 这是风格问题。惯例是你应该影子。 不幸的是,这种风格使得像 -Wshadow 这样的工具更难使用。不要选择风格而不是健壮性。

以上是关于小弟初学JAVA,弄不明白 变量的目的是啥,变量到底是干啥的?请大师赐教,真诚学习。希望回答的全面。的主要内容,如果未能解决你的问题,请参考以下文章

Java中String是啥意思?

JAVA:当我可以使用我想使用的对象的全名时,变量“this”的目的是啥? [复制]

java成员变量是啥

java里分的三层到底是哪三层?

Java 类中使用的变量阴影是啥?

Java 类中使用的变量阴影是啥?