为什么可以´;我从Java中的另一个类在方法中创建一个类对象吗?
我在代码中尝试了一些东西,但没有成功(编译时的错误是“永远不会读取局部变量fundo”)。我做了一些改变,它成功了,但我想知道为什么它一开始就不起作用 我有一个名为Setor的类,在我的代码中,我试图从Vendedor类中的该类创建一个对象 这是我的第一个代码:为什么可以´;我从Java中的另一个类在方法中创建一个类对象吗?,java,class,methods,constructor,Java,Class,Methods,Constructor,我在代码中尝试了一些东西,但没有成功(编译时的错误是“永远不会读取局部变量fundo”)。我做了一些改变,它成功了,但我想知道为什么它一开始就不起作用 我有一个名为Setor的类,在我的代码中,我试图从Vendedor类中的该类创建一个对象 这是我的第一个代码: class Vendedor{ void abreTeatro(int codigoCamarote, int capacidadeCamarote, int precoCamarote, int codigoFrente,
class Vendedor{
void abreTeatro(int codigoCamarote, int capacidadeCamarote, int precoCamarote, int codigoFrente,
int capacidadeFrente, int precoFrente, int codigoMeio, int capacidadeMeio, int precoMeio, int codigoFundo,
int capacidadeFundo, int precoFundo)
{
Setor camarote = new Setor(codigoCamarote, capacidadeCamarote, precoCamarote);
Setor frente = new Setor(codigoFrente, capacidadeFrente, precoFrente);
Setor meio = new Setor(codigoMeio, capacidadeMeio, precoMeio);
Setor fundo = new Setor(codigoFundo, capacidadeFundo, precoFundo);
};
}
如果我在方法之外创建对象,它的工作方式如下所示:
class Vendedor{
Setor camarote;
Setor frente;
Setor meio;
Setor fundo;
void abreTeatro(int codigoCamarote, int capacidadeCamarote, int precoCamarote, int codigoFrente,
int capacidadeFrente, int precoFrente, int codigoMeio, int capacidadeMeio, int precoMeio, int codigoFundo,
int capacidadeFundo, int precoFundo)
{
camarote = new Setor(codigoCamarote, capacidadeCamarote, precoCamarote);
frente = new Setor(codigoFrente, capacidadeFrente, precoFrente);
meio = new Setor(codigoMeio, capacidadeMeio, precoMeio);
fundo = new Setor(codigoFundo, capacidadeFundo, precoFundo);
};
}
下面是Setor类:
public class Setor
{
int _codigo;
int _capacidade;
int _preco;
public Setor (int codigo, int capacidade, int preco){
_codigo = codigo;
_capacidade = capacidade;
_preco = preco;
System.out.println(_codigo + " " + _capacidade + " " + _preco);
};
}
我想知道我的第一次尝试有什么问题
另外,我可能用错了一些术语。对此我很抱歉,非常欢迎编辑 不同之处在于所填充的变量的声明位置 您的第一个示例所做的是创建局部变量。当方法完成时,它们将超出范围。没有什么是指他们了,他们最终得到垃圾收集
在第二个示例中,您正在设置实例变量(其中声明位于类名后的大括号内,而不是在方法或构造函数定义内),因此对象在方法调用完成后仍然存在。这是变量的作用域。在第一个示例中,您创建了仅在该方法中可见的局部变量。而在第二个示例中,您创建了对类中所有方法可见的实例变量 局部变量-在堆栈中创建,并在方法退出后消失。
实例变量-在堆中创建,直到不再有对它的引用为止。有一个称为“范围”的东西只是为了让您知道,有。@user3347814为了完整起见,请添加您的Setor类。欢迎使用new@user3347814,您所说的错误是“……它不起作用”。这还不足以让你得到好的答案。你需要能够解释你的意思。你期待什么,你得到了什么。我假设你犯了某种错误。可能是未定义的变量错误或类似的错误。你必须把错误贴在这里,这样我们就可以更好地了解你想要实现的目标。从这里开始,严格来说,第一个错误没有什么“错误”。您的对象实际上正在创建。。。问题是你没有对它们做任何事情(没有人能对它们做任何事情,因为你没有从任何地方引用它们,除了构造函数局部变量,一旦构造函数完成->你的对象未被引用->GC进入并销毁它们,这些变量就会超出范围)@Claudio:没错,这显然不是OP想要的。出于我的学习目的,你能告诉我构造函数在他的代码中的位置吗?@Kick:oops,没有构造函数,我只是在产生幻觉。谢谢你,修复了这个。哈,我分享了你的幻觉!我说的构造函数==方法