首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以在Java的类中初始化变量吗?静态变量呢?如果是,那么静态块的用途是什么?

可以在Java的类中初始化变量吗?静态变量呢?如果是,那么静态块的用途是什么?
EN

Stack Overflow用户
提问于 2017-01-25 08:36:50
回答 4查看 101关注 0票数 2

在C++中(在C-11之前),我们需要通过构造函数或一些方法初始化类之外的变量。在Java中发生了什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-01-25 08:41:32

可以在Java的类中初始化变量吗?

是的,像这样:

代码语言:javascript
复制
public class MyClass {
    private int myVariable = 10;
}

静态变量呢?如果是,那么静态块的用途是什么?

是的,静态变量也可以在类中初始化:

代码语言:javascript
复制
public class MyClass {
    private static int myVariable = 10;
}

当您想初始化一个静态变量时,会使用静态块,但是一行是不够的。例如:

代码语言:javascript
复制
public class MyClass {
    private static HashMap<Integer, Integer> myMap;

    static {
        myMap = new HashMap<>();
        myMap.put(10, 20);
        myMap.put(20, 40);
    }
}
票数 1
EN

Stack Overflow用户

发布于 2017-01-25 09:01:33

c++ v/s Java:

c++不是纯面向对象的语言,而是纯面向对象的语言。

是蓝图(类似于一般映射),它定义了该类对象的一些属性/属性(成员变量)和行为(成员函数)。

只是在创建对象之前的一种想象。

对象是实时实体,它在现实世界中或简单地说是类的实现中具有物理存在。

java中的类:

代码语言:javascript
复制
class class_name
{
  member variables;
  member functions;
};

例如。

代码语言:javascript
复制
class A
{
int a;
void funct()
{
//body
}
};                     //defination is closed with semicolon

但,

java中的类:

回答你的问题:

代码语言:javascript
复制
class class_name
{
  member variables;       //still we define the attributes in class that may be static or non-static
  member functions;
};

静态变量的意义:静态变量在ram中为该类的所有对象分配公共内存,而在静态成员上由任何对象执行的操作由于相同的内存而被反映到所有其他对象的静态成员中。

静态方法的意义(函数在java中称为方法):类的静态方法是在不创建该类对象的情况下调用的方法。在java中,main()方法被声明为静态方法,因为在执行程序main()方法后,不需要创建类的对象。

OS的内核调用main()方法。

票数 1
EN

Stack Overflow用户

发布于 2017-01-25 08:45:10

可以在Java的类中初始化变量吗?

是。

代码语言:javascript
复制
class TestClass {
    int abc = 0;
    static int def = 1;
}

静态变量呢?

可以,停那儿吧。与上面的例子相同。

但是,这并不是每次创建类的对象时都初始化的。

代码语言:javascript
复制
TestClass ob1 = new TestClass();
ob1.def = 2; // Always use the class name to access static variables. This is just an example.

TestClass ob2 = new TestClass();
System.out.println(ob2.def); // Output : 2

PS :始终使用类名访问静态变量。这只是一个例子。

静态块的用途是什么?

如果静态变量的初始化很复杂,那么可以创建一个静态块并在那里初始化这些变量。这里也是一个很好的参考。

代码语言:javascript
复制
class TestClass {
    int abc = 0;
    static int def = 1;

    static {
         int x = 100;
         int y = 20;
         def = x - y + 10;
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41846805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档