什么是C'S&QUOT相当于静态的QUOT;关键字在Java中? [英] What's the equivalent of C's "static" keyword in Java?

查看:144
本文介绍了什么是C'S&QUOT相当于静态的QUOT;关键字在Java中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道这可能是Java中的相同的关键字可能执行的用C Static关键字..我想要做递归在java中,执行在C静态关键字做同样的功能相同功能...

I want to know what could be the equivalent keyword in java which could perform same function as "Static keyword in C".. I want to do recursion in java, performing same function that a static keyword in C does...

请帮助..

推荐答案

C有两个完全不同的静态关键字的使用和C ++增加了第三个用途:

C has two entirely different uses of the static keyword, and C++ adds a third use:

// Use 1: declare a variable or function to be local to a given module
// At global scope:
static int global_var;
static void func();

在这种情况下,全局变量 global_var 和功能无效FUNC()只能内部访问它们所声明的文件;它们不能被任何其他文件进行访问。

In this case, the global variable global_var and the function void func() can only be accessed inside the file in which they are declared; they cannot be accessed by any other file.

// Use 2: declare a variable inside a function with global scope
void func(void)
{
    static int x;
}

在这种情况下,变量 X 有效的全局变量,因为有它的只有一个实例 - 多次调用 FUNC ()(包括递归调用)总是会访问相同的变量。

In this case, the variable x is effectively a global variable, in that there is only one instance of it -- multiple calls to func() (including recursive calls) will always access the same variable.

// Use 3 (C++ only): declare a global variable with class scope
class Widget
{
public:
    static int var;
};

在此情况下,该声明变量的Widget :: VAR 作为一个全局变量,但它的范围是不同的。的类成员函数以外,它必须被命名为的Widget :: VAR ;内部类的成员函数,它可以被命名为刚 VAR 。它也可以做保护私人来限制其范围甚至更多。

In this case, this declares the variable Widget::var as a global variable, but its scope is different. Outside of class member functions, it has to be named as Widget::var; inside class member functions, it can be named as just var. It can also be made protected or private to limit its scope even more.

现在,这些是什么3用途在Java中类似物?

Now, what are the analogs of these 3 uses in Java?

第1种情况没有直接的模拟;最接近的是,宣布与包的范围,这是通过省略公共保护或<$ C $完成对象C>私人:

Case 1 has no direct analog; the closest is declaring objects with package scope, which is done by omitting a public, protected, or private:

class Widget  // Declare a class with package scope
{
    int x;  // Declare a member variable with package scope
    void func() {}  // Declare a member function with package scope
}

在这种情况下,声明的对象仅由同一包内的类访问;他们不是其他包访问。

In this case, the declared objects are only accessible by classes within the same package; they are not accessible to other packages.

第2种情况也没有在Java中模拟。你可以得到最接近的是通过声明一个全局变量(即静态类变量,因为Java没有严格意义上真正的全局变量):

Case 2 also does not have an analog in Java. The closest you can get is by declaring a global variable (that is, a static class variable, since Java doesn't have true global variables in the strictest sense):

class Widget
{
    private int func_x;
    public static void func()
    {
        // use func_x here in place of 'static int x' in the C example
    }
}

案例三是具有的直接的在Java中模拟的唯一案例。在这种情况下,静态关键字提供完全相同的目的。

Case 3 is the only case that has a direct analog in Java. In this case, the static keyword serves exactly the same purpose.

这篇关于什么是C'S&QUOT相当于静态的QUOT;关键字在Java中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆