java中声明两个变量_Java实例变量在两个语句中声明和初始化

本文介绍了在Java中声明和初始化变量的几种方法,包括声明时初始化、构造函数、实例初始化块等。针对代码示例中出现的编译错误,提出了解决方案,即在声明时或使用初始化块进行变量赋值。
摘要由CSDN通过智能技术生成

嗨,我在使用Java进行初始化时遇到问题,以下代码给了我一个编译错误,叫做:Expected instanceInt = 100; 但我已经宣布了 如果这些东西与堆栈和堆的东西有关,请用简单的术语进行解释,我是Java的新手,并且我对这些领域不了解。

public class Init {

int instanceInt;

instanceInt = 100;

public static void main(String[] args) {

int localInt;

u = 9000;

}

}

您不能在课程中间使用语句。它必须与声明位于同一块或同一行中。

做您想要的事情的通常方法是:

声明期间的初始化

public class MyClass{

private int i = 0;

}

通常,如果要为字段定义默认值,则是一个好主意。

构造函数块中的初始化

public class MyClass{

private int i;

public MyClass(){

this.i = 0;

}

}

如果您希望在字段初始化期间具有一些逻辑(如果/循环),则可以使用此块。问题在于,要么您的构造函数将彼此调用,要么它们将具有基本相同的内容。

以您的情况,我认为这是最好的方法。

方法块中的初始化

public class MyClass{

private int i;

public void setI(int i){

this.i = i;

}

}

这并不是真正的初始化,但是您可以随时设置值。

实例初始化程序块中的初始化

public class MyClass{

private int i;

{

i = 0;

}

}

当构造函数不够用时使用这种方法(请参阅构造函数块的注释),但通常开发人员倾向于避免这种形式。

资源:

JLS-实例初始化器

在同一主题上:

在Java中使用初始化程序与构造函数

实例初始化器与构造函数有何不同?

奖励:

这是什么代码?

public class MyClass {

public MyClass() {

System.out.println("1 - Constructor with no parameters");

}

{

System.out.println("2 - Initializer block");

}

public MyClass(int i) {

this();

System.out.println("3 - Constructor with parameters");

}

static {

System.out.println("4 - Static initalizer block");

}

public static void main(String... args) {

System.out.println("5 - Main method");

new MyClass(0);

}

}

答案

您的答案链接已过期。 您能否在实际帖子中包含这些信息?

将其放在初始化程序块中。

public class Init {

int instanceInt;

{

instanceInt = 100;

}

public static void main(String[] args) {

int localInt;

int u = 9000;

}

}

或者只是在声明时初始化:

public class Init {

int instanceInt = 100;

public static void main(String[] args) {

int localInt;

int u = 9000;

}

}

参考文献:

Java教程-初始化字段

Java-初始化程序块

您需要做:

int instanceInt = 100;

如果它是static,则可以在static块中初始化。

您不能在声明区域中使用单独的语句将值分配给类成员。您必须从函数(通常是类方法)执行此操作。

对于您的情况,请考虑在声明后立即进行分配。

根据Java语言规范:

A class body may contain declarations

of members of the class, that is,

fields (§8.3), classes (§8.5),

interfaces (§8.5) and methods (§8.4).

A class body may also contain instance

initializers (§8.6), static

initializers (§8.7), and declarations

of constructors (§8.8) for the class.

但是,声明

instanceInt = 100;

这些都不是,因此不允许作为类主体的一部分。您需要做的是:

int instanceInt = 100;

这是允许的,因为它是包含变量初始值设定项的字段声明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值