【问题标题】:What is [Android] Java's equivalent of VB.NET's Static Keyword?[Android] Java 相当于 VB.NET 的静态关键字是什么?
【发布时间】:2012-01-25 06:45:10
【问题描述】:

对于 VB.NET 的 Static 关键字,是否有 Java 等效项(特别是在 Android 上)?对VB.NET不熟悉的,就拿下面的代码sn-p...

Sub MyFunc() 
    Static myvar As Integer = 0
    myvar += 1
End Sub 

Static 关键字使得 myvar 在对 MyFunc 的后续调用之间保持其值。

因此,在对 MyFunc 的每一次调用之后,myvar 的值将是:123

如何在 Java 的方法中创建一个交叉调用的持久变量?可以吗?

【问题讨论】:

  • java 也有 'static' 关键字,它的作用相同
  • 据我所知,Java 的 static 更类似于 VB.NET 的 Shared... 表示类成员不需要特定的类实例;不?或者,Java 的 static 是否实际上是 VB.NET 的 Shared 和它的 Static 的双重用途?
  • 在 java/c# 中声明为静态的成员可以在不实例化实例的情况下使用,并且它还可以在不同实例之间共享,从而在后续调用之间保留它的值。
  • 但是您不能像在 eidylon 的 VB 示例中那样在 Java 中使用 static。你不能在 Java 中创建局部变量 static

标签: java android vb.net syntax equivalent


【解决方案1】:

没有。在一个方法中,Java 没有可以在各种调用中记住的东西。

如果你想在一个方法的多次调用中持久化一个值,你应该将它存储为实例变量或类变量。

每个对象/实例的实例变量都不同,而类变量(或静态变量)对于其类的所有对象都是相同的。

例如:

class ABC
{
    int instance_var; // instance variable
    static int static_var; // class variable
}

class ABC_Invoker
{
    public static void main(string[] args)
    {
        ABC obj1 = new ABC();
        ABC obj2 = new ABC();

        obj1.instance_var = 10;
        obj2.instance_var = 20;

        ABC.static_var = 50; // See, you access static member by it's class name

        System.out.prinln(obj1.instance_var);
        System.out.prinln(obj2.instance_var);
        System.out.prinln(ABC.static_var);
        System.out.prinln(obj1.static_var); // Wrong way, but try it
        System.out.prinln(obj2.static_var); // Wrong way, but try it
    }
}

【讨论】:

  • 所以我需要将我的变量移出方法并将其放在类级别,是吗?然后我可以将我的方法和我的变量都声明为static,那么它会产生大致相同的效果吗?那会是最接近的吗?
  • 是的,您应该在班级级别移动变量。但是方法不必是static。非静态方法可以访问static 变量。但请记住,其他方法也可以看到由一种方法更改的值。
【解决方案2】:

Java 中的静态关键字

public static String mVar = "Some Value";

【讨论】:

  • 不,不是。问题是关于在局部变量上使用static
  • 我认为 Java 中没有这种功能
  • 没错,所以你的答案是错误的,而 Azodius 的答案是正确的。如果我是你,我会删除这个答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 2017-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多