# \[java-guia-certificacao\] Passando Key "-D"

**URL:** https://forum.casadocodigo.com.br/t/java-guia-certificacao-passando-key-d/196
**Category:** Livros
**Tags:** certificacao-java
**Created:** [Maio 20, 2016, 5:14pm UTC](https://forum.casadocodigo.com.br/t/java-guia-certificacao-passando-key-d/196 "2016-05-20T17:14:31Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![mateusduraes](https://avatars.discourse-cdn.com/v4/letter/m/8baadc/32.png) [@mateusduraes](https://forum.casadocodigo.com.br/u/mateusduraes)
#### Post date: [Maio 20, 2016, 5:14pm UTC](https://forum.casadocodigo.com.br/t/java-guia-certificacao-passando-key-d/196/1 "2016-05-20T17:14:31Z")

</div>

Olá, estou estudando através do livro ‘java-se-8-programmer-i-o-guia-para-sua-certificacao-oracle-certified-associate’ e estou com uma dúvida quanto a passagem de argumentos / parâmetros para o método main através do terminal

ao executar comandos como  
`java nomedoarquivo parametro1 parametro2`  
tudo fluiu bem, porém não entendi a diferença entre parâmetro / propriedade e argumento, onde o valor é passado através do seguinte código

`java -Dkey1=abc -Dkey2=def Foo xpto bar`

O que seriam essas keys ? qual a diferença desse tipo de dado para os argumentos ‘foo, xpto, bar’ ?  
Ao executar o seguinte código abaixo

java HelloWorldVarArgs -Dkey1=abc -Dkey2=def Foo xpto bar

```
class HelloWorldVarArgs {
	public static void main (String... args){
		for (String value : args) {
			System.out.println("Hello "+value);
		}
	}
}

```

A saída é  
Hello -Dkey1=abc  
Hello -Dkey2=def  
Hello Foo  
Hello xpto  
Hello bar

Com isso não entendi qual a diferença dessa key e como ela é manipulada, aproveito a oportunidade para elogiar o livro, excelente !  
Aguardo !

---

<div class="post-metadata">

### Author: ![edyllelandy](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.casadocodigo.com.br/edyllelandy/32/10442_2.png) [@edyllelandy](https://forum.casadocodigo.com.br/u/edyllelandy)
#### Post date: [Junho 16, 2016, 6:16pm UTC](https://forum.casadocodigo.com.br/t/java-guia-certificacao-passando-key-d/196/2 "2016-06-16T18:16:40Z")

</div>

No exemplo do livro, o nome da classe é Foo. No seu comando, você está chamando a execução da sua classe HelloWorldVarArgs e passando todas as outras palavras após o nome da classe como argumentos.  
Se você quiser exibir os argumentos, você deve fazer parecido com o seguinte:

public class HelloWorldVarArgs {

```
public static void main(String args[]) {
	
	System.out.println("Primeiro argumento: " + System.getProperty("key1"));
	System.out.println("Segundo argumento: " + System.getProperty("key2"));
	
	for (String value : args) {
		System.out.println("Hello " + value);
	}
}

```

}

Executando esta classe com o comando “java -Dkey1=abc -Dkey2=def HelloWorldVarArgs xpto bar”, a saída será:

Primeiro argumento: abc  
Segundo argumento: def  
Hello xpto  
Hello bar

---

<div class="post-metadata">

### Author: ![david11590](https://avatars.discourse-cdn.com/v4/letter/d/ea5d25/32.png) [@david11590](https://forum.casadocodigo.com.br/u/david11590)
#### Post date: [Novembro 28, 2016, 1:43am UTC](https://forum.casadocodigo.com.br/t/java-guia-certificacao-passando-key-d/196/3 "2016-11-28T01:43:27Z")

</div>

Obrigado,

Estava com essa mesma duvida.
