Qual é a diferença entre uma variável local, um campo de instância, um parâmetro de input e um campo de class?

Qual é a diferença entre uma variável local, um campo de instância, um parâmetro de input e um campo de class em relação a um programa Java simples?

Uma variável local é definida dentro do escopo de um bloco. Não pode ser usado fora desse bloco.

Exemplo:

if(x > 10) { String local = "Local value"; } 

Eu não posso usar local fora desse bloco if .

Um campo ou campo de instância é uma variável vinculada ao próprio object. Eu posso usá-lo no object sem a necessidade de usar assessores, e qualquer método contido no object pode usá-lo.

Se eu quisesse usá-lo fora do object, e não fosse public , eu teria que usar getters e / ou setters.

Exemplo:

 public class Point { private int xValue; // xValue is a field public void showX() { System.out.println("X is: " + xValue); } } 

Um parâmetro de input , ou parâmetro ou mesmo argumento , é algo que passamos para um método ou construtor. Ele tem escopo com relação ao método ou construtor no qual o transmitimos.

Exemplo:

 public class Point { private int xValue; public Point(int x) { xValue = x; } public void setX(int x) { xValue = x; } } 

Ambos os parâmetros x estão vinculados a diferentes escopos.

Um campo de class , ou campo estático , é semelhante a um campo, mas a diferença é que você não precisa ter uma instância do object contido para usá-lo.

Exemplo:

 System.out.println(Integer.MAX_VALUE); 

Eu não preciso de uma instância de Integer para recuperar o valor máximo globalmente conhecido de todos os ints.

Não é bem assim.

Um campo de class é o que você acha que é uma variável local, mas geralmente é um campo estático e, portanto, é o mesmo em todas as instâncias.

Um campo de instância é o mesmo que um campo de class, mas não é estático e pode ser diferente para cada instância do object.

http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html

E uma variável local é uma variável dentro de um método ou bloco, que só pode ser usada por esse método ou bloco.

Ah, e sua definição de parâmetro de input está correta, um parâmetro de input é um campo que é passado para um método como um parâmetro.

Um campo de class é freqüentemente chamado de variável de class, e você pode encontrar essa informação aqui

Comece por ter lido através de Classes e Objetos

Eu sei que a variável local é uma variável que está disponível para a class em que está, correto?

Não, geralmente uma variável local refere-se a uma variável que tem apenas contexto dentro da área que foi declarada. Isso normalmente se refere a variables ​​declaradas dentro de methods e {...} blocos (como instruções if )

Um campo de instância é um object criado no construtor …?

Na verdade, um campo de instância é qualquer campo, declarado no nível de class que não é estático, portanto, seu valor tem significado apenas para uma instância individual da class.

Um parâmetro de input é o que é passado para um método.

sim

Mas eu não tenho idéia sobre um campo de class!

Um campo de class e um campo de instância são (geralmente) a mesma coisa. A única diferença seria se o campo fosse declarado static , então não poderia ser um campo de instância …

Uma variável local é local para um método.

Um campo de instância é o campo de uma instância de uma class, ou seja, um object.

Um parâmetro é passado para um método

Um campo de class, suponho que seja um campo estático associado à class. Por exemplo, se você usar vários carregadores de classs, poderá ter várias classs com o mesmo nome e seus próprios campos estáticos.

Uma variável local é uma variável em um método. Seu escopo é limitado ao escopo dos dois parênteses em torno dele. {}

Exemplo:

 public void someMethod () { int localVariable1 = 5; if (...) { int localVariable2 = 7; } } 

Com um campo de instância , acho que você quer dizer um membro de uma instância de class. Se você pegar, por exemplo, a Dimension da class, isso seria height ou width . . Um parâmetro de input é um parâmetro em um método, como você adivinhou.

Um campo de class é um campo em um método estático.