class Echo {
int count = 0;
void hello() {
System.out.println("hellooo... ");
}
}
public class EchoTestDrive {
public static void main(String[] args) {
Echo e1 = new Echo();
Echo e2 = e1;
int x = 0;
while (x < 4) {
e1.hello();
e1.count = e1.count + 1;
if (x == 3) {
e2.count = e2.count + 1;
}
if (x > 0) {
e2.count = e2.count + e1.count;
}
x = x +1;
}
System.out.println(e2.count);
}
}
a saída é 4x “hellooo…”
E no final printa 24.
Não consigo entender esse 24 na saída. Alguém tem como explicar?
1 curtida
Primeiro:
Coloque seu código nas normas que Java exige, exemplo:
public class Echo
{
public Echo()
{
count = 0;
}
private int count;
public int getCount()
{
return count;
}
public void setCount(int count)
{
this.count = count;
}
public void hello()
{
System.out.println("hellooo... ");
}
}
Segundo
No caso especifico você criou um classe Echo
e1 e criou outra classe pegando a cópia para a instância de e2, ou seja, tudo que muda em e1 reflete em e2 e vice-versa (referencia
).
Código refatorado e padrão.
Echo e1 = new Echo();
Echo e2 = e1;
int x = 0;
while (x < 4)
{
e1.hello();
e1.setCount(e1.getCount() + 1);
if (x == 3)
{
e2.setCount(e2.getCount() + 1);
}
if (x > 0)
{
e2.setCount(e2.getCount() + e1.getCount());
}
x = x +1;
}
System.out.println(e2.getCount());
Isso que acontece é que dentro desse While os dados acabam somando e somando e no final dá esse valor 24 se você pudar valores dentro em rodar novamente vai mudar o valor para cima ou para baixo.
Use o breakpoint
e debug
seu código, verá passo a passo as mudanças dos valores das duas variáveis e1 e e2
1 curtida
Só uma pequena dúvida Moderator_Cia, o Java exige que a chave seja aberta depois dos paranteses de paramentros?
void go()
{
//codigo
}
Achei que fosse caso de preferencia pessoal. No NetBeans por exemplo, todas as classes nativas, a chave é aberta logo na mesma linha do paranteses:
void go() {
//codigo
}
Aprendi assim, acho sem jeito essa outra forma.
2 curtidas
Olá,
Onde podemos encontrar as normas que a Java exige, por favor ?
Pois Code Conventions for the Java TM Programming Language está desatualizado desde 20 de abril de 1999.
Atenciosamente.
Caro @Jonas_B_a_r_r_o_s, você tem razão quando diz que o NETBEANS
coloca um padrão de abertura de chaves na mesma linha. Eu particularmente não gosto, eu gosto de linha abre e a linha fecha, eu não sou desenvolvedor JAVA, eu sou desenvolvedor PHP
e C# (arquitetura .NET)
e fazemos nesse estilo, mas, queria dizer a pessoa que perguntou sobre os encapsulamentos dos campos, não deixar sem o tipo de acesso, que ao meu entender são mais uteis para ele começar com JAVA.
Exite nesse caso especifico de abertura de chaves várias nomenclaturas e vários padrões criados, mas, o importante disso tudo é:
Siga um padrão:
Exemplo: se você utiliza nomenclatura da ferramenta, utilize todo código na mesma nomenclatura, se você abre a chave na próxima linha faça isso em todo seu código. O que presenciamos em código de terceiro, é a falta de padrão, edentação falha etc …
Essa é a minha visão. Obrigado.
1 curtida
Links:
Todos esses links tem referencia a sua pergunta, estude, pesquise mais … !!!