java中非静态变量的非静态初始化块和常规初始化有什么区别

时间:2021-05-29 09:02:24

标签: java static

初始化的区别是什么: 1) int i = 47 ; 要么 2) 内部我; {我= 47; } 在哪些情况下我们需要第一个或第二个?

rate(node_network_receive_bytes_total{instance="$node",job="$job"}[$__rate_interval])*8

2 个答案:

答案 0 :(得分:0)

实例初始化允许您在最终为实例变量赋值之前进行一些预先计算。例如:

public class Bath {
  private String // Initializing at point of definition:
    s1 = "Happy",
    s2 = "Happy",
    s3, s4;
  private Soap castile;
  int i;
  private float toy;

  public Bath() {
    System.out.println("Inside Bath()");
    s3 = "Joy";
    toy = 3.14f;
    castile = new Soap();
  }

  // Instance initialization:
  { 
    // some pre-calculations
    int sum = 2*3 + 5*5 + 5;
    int sum2 = 2*4 + 3;
    for(int i=0; i<5; i++) {
      sum2 += i;
    }

    // assign
    i = sum + sum2; 
  }
 }

答案 1 :(得分:-1)

int i = 47; 表示您同时声明和初始化,但是 int i;{ i = 47;} 表示您分别声明和实例初始化。 每当创建其类对象时都会使用实例初始化,并在最终初始化之前进行一些预定义的计算和操作。