Arquivo da tag: System.Property

Java classe System é mto mais que só System.out.prinln

A classe System(pacote java.lang) é uma das classe mais populares(existe deste a versão jdk1.0) do Java em particular os métodos de saída(out): print, println, e de entrada(in): System.in. Tal popularidade deve-se justamente ao fato das facilidades de entrada e saída de dados, mas a classe System não é só isto. Ela prove outros recursos úteis para os desenvolvedores (saída de erro, leitura de variáveis de ambiente, e otras cositas más). Fuçando na API da classe http://docs.oracle.com/javase/7/docs/api/java/lang/System.html dá pra ver que ela tem muitas coisas legais, então decidi montar uma relação com alguns exemplos pra ilustrar o uso. Se alguém tiver mais algo a acrescentar, sinta-se a vontade  🙂

System.in:  entrada padrão input stream  – utiliza a classe InputStream do pacote java.io.

Scanner scan = new Scanner(System.in);
System.out.println ("Digite: ");
String entrada = scan.nextLine();
System.out.println ("Você digitou: " +entrada);

Na primeira linha o objeto System.in provê recurso para leitura do “input stream” dos dados digitados (teclado) pelo usuário, segundo a API é possível inputar dados por outros sources. A classe Scanner auxilia no tratamento deste input stream tornando a maninpulação mais intuitiva ao desenvolvedor. Tem um post bem bacana a repeito da classe Scanner, escrito por Marcio Ballem e pode ser conferido no endereço: http://mballem.wordpress.com/2012/05/01/ler-dados-do-teclado-com-a-classe-scanner/

System.out:   saída padrão output stream – utiliza a classe PrintStream do pacote java.io.

System.out.print():

Imprime na console Java o valor de entrada.

Suporta vários tipos na assinatura do seu método, veja a lista completa http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html#println()

Obs. O suporte é o mesmo que da lista de tipos do println. Imagino que os caras na api reaproveitaram o print e adicionaram o “\n” no final pra ser tão igual rs.

Exemplo:

boolean b = false;
//imprime o valor booelano
System.out.print("booleano:" + b);

int i = -1;        
//imprime o valor do primitivo inteiro e dá um enter (\n") no final 
System.out.print("inteiro:" + i + "\n");
        
Double db = 10d;
float ft = 20f;
BigDecimal bgd = new BigDecimal(30);
//imprime os valores Double(objeto), float(primitivo) e BigDecimal(objeto) 
System.out.print("double: " + db + " float: " + ft + " BigDecimal: " + bgd);

Veja a saída dos três prints ( os dois primeiros numa linha só), a instrução \n dá enter na linha.

booleano:falseinteiro:-1
double: 10.0 float: 20.0 BigDecimal: 30

System.out.println():

Imprime na console java o valor de entrada e dá um ENTER no final da linha.

Este é o clássico que até no Eclipse, se vc digitar “syso” + cltrl espaço ele escreve System.out.println() automáticamente.

Suporta vários tipos na assinatura do seu método, veja a lista completa http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html#println()

Exemplos:

boolean b = false;

//imprime o valor booelano e dá um enter no final
System.out.println("booleano:" + b);

int i = -1;

//imprime o valor do primitivo inteiro e dá um enter no final
System.out.println("inteiro:" + i);

Double db = 10d;
float ft = 20f;
BigDecimal bgd = new BigDecimal(30);

//imprime os valores Double(objeto), float(primitivo) e BigDecimal(objeto) e dá um enter no final
System.out.println("double: " + db + " float: " + ft + " BigDecimal: " + bgd);

saída:

booleano:false
inteiro:-1
double: 10.0 float: 20.0 BigDecimal: 30

System.out.printf:

Imprime na console Java o valor de entrada formatado de acordo com parâmetro especificado.
Exemplo:

char three[] = { 't', 'h', 'r', 'e', 'e' };
System.out.printf("%b %n %c %n %s %n %s %n %d %n" 
+ "%d %n %g %n %g %n %s %n", 
!false, '3'
, new String(three)
, "Three"
,3
, Long.MAX_VALUE
, Math.PI, Double.MAX_VALUE
, new Object());

retirado de: http://www.java2s.com/Code/Java/Development-Class/Systemoutprintfbncnsnsndn.htm

saída:


true

3

three

Three

3

9223372036854775807

3.14159

1.79769e+308

java.lang.Object@61de33

Além do exemplo vale comentar que a formatação fica a gosto do freguês, veja:

String a = "string";
double dbb = 4445.67555;
int c = 60;

System.out.println();
System.out.printf("%s - %.2f - %.4f - %0,20.3f - %d\n",  a, dbb,  dbb, dbb,c);

saída:

string - 4445,68 - 4445,6756 - 000000000004.445,676 - 60

Note que:
%.2f imprime duas casas após o ponto
%.4f imprime quatro casas após o ponto
%0,20.3f imprime zeros a esquerda até atingir 20 caracteres, leva em consideração ponto e virgulas tbem.
Existe outros formatos “%”, veja uma lista com mais exemplos no link: http://jexp.ru/index.php/Java_by_API/java.lang/System.out.printf

System.err:  saída padrão de erro output stream – utiliza a classe PrintStream do pacote java.io

É similar ao funcionamento de System.out porém é normalmente utilizado para imprimir texto de erro.

Por exemplo, se vc quiser fazer o seu próprio logador de error (tipo looggind da vida) num arquivo .txt, poderia fazer algo do tipo:

File erros = new File("log_de_erros.txt");
FileOutputStrem fout = new FileOutputStream(erros);
System.setErr(fout);

Daí todos os erros enviados a System.err serão registrados no seu arquivo “log_de_erros.txt”

Outro exemplo para demonstrar à diferença:

try {
   InputStream input = new FileInputStream("c:\\aplicacao\\dados.txt");
    System.out.println("Aberto arquivo...");
} catch (IOException e){//ops... deu BO
   System.err.println("Falha ao tentar abrir o arquivo:");
   e.printStackTrace();
}

Tem IDE a exemplo do Eclipse que printa em vermelho mensagens de erro.

Não é só isto meu povo, tem mais métodos bacanas.

System.arraycopy:

Copia um array

char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e', 'i', 'n', 'a', 't', 'e', 'd' };
char[] copyTo = new char[7];

//copyFrom - array de origem
//2 - indice do começo da cópia do array de origem para o array de destino, ou seja, vai copiar a partir desta posição
//copyTo - array que irá receber a cópia
//0 - análogo ao índice do começo da cópia do array de origem, só que aplicado ao array de destino.
//7 - número de elementos copiados do array de origem. siz, lenght, tamanho...
System.arraycopy(copyFrom, 2, copyTo, 0, 7);
System.out.println(new String(copyTo));

System.getProperty(String chave) e getProperties():

Possibilitar pegar as propriedades do sistema. A listar completa pode ser conferida no link http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#getProperties()

Exemplos:

Trazer o usuário logado. Passa a chave “user.name” veja relação de outras chaves no link da lista completa, ok?

//Traz o nome do usuário logado no sistema
System.out.println(System.getProperty ("user.name"));

saída:

ricardo.spinoza

O método getProperties() traz uma relação com todas as propriedades do sistema corrente, veja exemplo:

System.getProperties().list(System.out);

saída:

-- listing properties --
java.runtime.name=Java(TM) SE Runtime Environment
sun.boot.library.path=C:\Program Files\Java\jre7\bin
java.vm.version=21.1-b02
java.vm.vendor=Oracle Corporation
java.vendor.url=http://java.oracle.com/
path.separator=;
java.vm.name=Java HotSpot(TM) 64-Bit Server VM
file.encoding.pkg=sun.io
user.script=
user.country=BR
sun.java.launcher=SUN_STANDARD
sun.os.patch.level=Service Pack 1
java.vm.specification.name=Java Virtual Machine Specification
user.dir=C:\workspace\oca
java.runtime.version=1.7.0_01-b08
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=C:\Program Files\Java\jre7\lib\endorsed
os.arch=amd64
java.io.tmpdir=C:\Users\RICARD~1.PER\AppData\Local\T...
line.separator=
java.vm.specification.vendor=Oracle Corporation
user.variant=
os.name=Windows 7
sun.jnu.encoding=Cp1252
java.library.path=C:\Program Files\Java\jre7\bin;C:\Win...
java.specification.name=Java Platform API Specification
java.class.version=51.0
sun.management.compiler=HotSpot 64-Bit Tiered Compilers
os.version=6.1
user.home=C:\Users\ricardo.spinoza
user.timezone=
java.awt.printerjob=sun.awt.windows.WPrinterJob
file.encoding=Cp1252
java.specification.version=1.7
user.name=ricardo.spinoza
java.class.path=C:\workspace\oca\bin
java.vm.specification.version=1.7
sun.arch.data.model=64
java.home=C:\Program Files\Java\jre7
sun.java.command=Teste
java.specification.vendor=Oracle Corporation
user.language=pt
awt.toolkit=sun.awt.windows.WToolkit
java.vm.info=mixed mode
java.version=1.7.0_01
java.ext.dirs=C:\Program Files\Java\jre7\lib\ext;C:...
sun.boot.class.path=C:\Program Files\Java\jre7\lib\resour...
java.vendor=Oracle Corporation
file.separator=\
java.vendor.url.bug=http://bugreport.sun.com/bugreport/
sun.cpu.endian=little
sun.io.unicode.encoding=UnicodeLittle
sun.desktop=windows
sun.cpu.isalist=amd64

System.getenv(String name) e System.getenv():

Retorna o valor de uma variavel de ambiente. Se houver esquema de segurança o metodo checkPermission é acionado pra validar permissão de acesso.
 
Exemplo:

String javaHome = System.getenv("JAVA_HOME");

//no windows similar ao comando echo %JAVA_HOME%
System.out.println("JAVA_HOME: "  + javaHome);

//no windows similar ao comando echo %USERNAME%

String userWindows = System.getenv("USERNAME");
System.out.println("USERNAME: "  + userWindows);

Há também o método Map<String,String> getenv() retorna um Map com todas as variávies de ambiente, veja exemplo:

Map<String, String> env = System.getenv();
for (String nomeVariavel : env.keySet()) {
  System.out.format("%s=%s\n", nomeVariavel, env.get(nomeVariavel));
}

System.exit(int valor):

Termina a execução corrente do programa. Por convenção valor diferente de ZERO é considerado termino anormal do programa.

//termino de execução normal
System.exit(0);

//termino de execução Anormal
System.exit(-1);

Outro exemplo que achei no stackoverflow http://stackoverflow.com/questions/6937660/difference-between-system-exit0-and-system-exit-1

public class Test {
  public static void main(String[] args) throws Exception {
    System.exit(args.length);
  }
}

Na linha de comando a execução do programa Java Test no primeiro caso length é zero “exit(0)“, pois não tem parametro, o programa termina com êxito e exibe a mensagem de sucesso, já no segundo caso é informado um parametro e valor de lenght passa a valer 1 “exit(1)” e o programa termina em estado anormal, note que a mensagem de sucesso não é exibida conforme visto logo abaixo.

~ $ java Test && echo Success!
Success!//retorno na console por causa do System.exit(0)

~ $ java Test boom && echo Success!
//SEM retorno na console por causa do System.exit(1)
//qqr coisa diferente se zero é terminação anormal

Finalizando, tentei expor neste post a importância desta API e o quanto é bem útil na vida do desenvolvedor. Espero que tenha sido útil pra alguém 🙂

Flw

Anúncios

Deixe um comentário

Arquivado em Java, Utilidades

Java – Obtenha informações do sistema operacional, usuário e do Java do cliente facilmente com a API System Properties.

As informações do sistema operacional, usuário e particulariedades do Java do cliente podem ser acessadas com uso da API System Properties, mas especificamente o método System.getProperty(String chave) o qual trabalha com o conceito de chave-valor. Basta informar a chave (veja relação abaixo) na assinatura do método e obter o valor correspondente.  No final do post disponibilizei uma implementação dos uso das propriedades para ilustrar o uso da API :-).

Chave Significado
file.separator Character that separates components of a file path. This is “/” on UNIX and “\” on Windows.
java.io.tmpdir Default temp file path
java.home Installation directory for Java Runtime Environment (JRE)
java.class.version Java class format version number
java.class.path Path used to find directories and JAR archives containing class files. Elements of the class path are separated by a platform-specific character specified in the path.separator property.
java.home Java installation directory
java.specification.name Java Runtime Environment specification name
java.specification.vendor Java Runtime Environment specification vendor
java.specification.version Java Runtime Environment specification version
java.vendor Java Runtime Environment vendor
java.version Java Runtime Environment version
java.vendor.url Java vendor URL
java.vm.name Java Virtual Machine implementation name
java.vm.vendor Java Virtual Machine implementation vendor
java.vm.version Java Virtual Machine implementation version
java.vm.specification.name Java Virtual Machine specification name
java.vm.specification.vendor Java Virtual Machine specification vendor
java.vm.specification.version Java Virtual Machine specification version
java.vendor JRE vendor name
java.vendor.url JRE vendor URL
java.version JRE version number
line.separator Line separator (“\n” on UNIX)
java.library.path List of paths to search when loading libraries
java.compiler Name of JIT compiler to use
os.arch Operating system architecture
os.name Operating system name
os.version Operating system version
java.ext.dirs Path of extension directory or directories
path.separator Path separator character used in java.class.path
line.separator Sequence used by operating system to separate lines in text files
user.name User account name
user.dir User’s current working directory
user.home User’s home directory
public class ExemploProperties {

	/**
	 * @param args
	 * @author Ricardo Spinoza
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("awt.toolkit="+System.getProperty("awt.toolkit"));
		System.out.println("file.encoding="+System.getProperty("file.encoding"));
		System.out.println("file.encoding.pkg="+System.getProperty("file.encoding.pkg"));
		System.out.println("file.separator="+System.getProperty("file.separator"));
		System.out.println("file.separator="+System.getProperty("file.separator"));
		System.out.println("java.awt.graphicsenv="+System.getProperty("java.awt.graphicsenv"));
		System.out.println("java.awt.printerjob="+System.getProperty("java.awt.printerjob"));
		System.out.println("java.class.path="+System.getProperty("java.class.path"));
		System.out.println("java.class.version="+System.getProperty("java.class.version"));
		System.out.println("java.endorsed.dirs="+System.getProperty("java.endorsed.dirs"));
		System.out.println("java.ext.dirs="+System.getProperty("java.ext.dirs"));
		System.out.println("java.home="+System.getProperty("java.home"));
		System.out.println("java.io.tmpdir="+System.getProperty("java.io.tmpdir"));
		System.out.println("java.library.path="+System.getProperty("java.library.path"));
		System.out.println("java.runtime.name="+System.getProperty("java.runtime.name"));
		System.out.println("java.runtime.version="+System.getProperty("java.runtime.version"));
		System.out.println("java.specification.name="+System.getProperty("java.specification.name"));
		System.out.println("java.specification.vendor="+System.getProperty("java.specification.vendor"));
		System.out.println("java.specification.version="+System.getProperty("java.specification.version"));
		System.out.println("java.vendor="+System.getProperty("java.vendor"));
		System.out.println("java.vendor="+System.getProperty("java.vendor"));
		System.out.println("java.vendor.url="+System.getProperty("java.vendor.url"));
		System.out.println("java.vendor.url="+System.getProperty("java.vendor.url"));
		System.out.println("java.vendor.url.bug="+System.getProperty("java.vendor.url.bug"));
		System.out.println("java.version="+System.getProperty("java.version"));
		System.out.println("java.version="+System.getProperty("java.version"));
		System.out.println("java.vm.info="+System.getProperty("java.vm.info"));
		System.out.println("java.vm.name="+System.getProperty("java.vm.name"));
		System.out.println("java.vm.specification.name="+System.getProperty("java.vm.specification.name"));
		System.out.println("java.vm.specification.vendor="+System.getProperty("java.vm.specification.vendor"));
		System.out.println("java.vm.specification.version="+System.getProperty("java.vm.specification.version"));
		System.out.println("java.vm.vendor="+System.getProperty("java.vm.vendor"));
		System.out.println("java.vm.version="+System.getProperty("java.vm.version"));
		System.out.println("line.separator="+System.getProperty("line.separator"));
		System.out.println("os.arch="+System.getProperty("os.arch"));
		System.out.println("os.arch="+System.getProperty("os.arch"));
		System.out.println("os.name="+System.getProperty("os.name"));
		System.out.println("os.version="+System.getProperty("os.version"));
		System.out.println("path.separator="+System.getProperty("path.separator"));
		System.out.println("path.separator="+System.getProperty("path.separator"));
		System.out.println("sun.arch.data.model="+System.getProperty("sun.arch.data.model"));
		System.out.println("sun.boot.class.path="+System.getProperty("sun.boot.class.path"));
		System.out.println("sun.boot.library.path="+System.getProperty("sun.boot.library.path"));
		System.out.println("sun.cpu.endian="+System.getProperty("sun.cpu.endian"));
		System.out.println("sun.cpu.isalist="+System.getProperty("sun.cpu.isalist"));
		System.out.println("sun.desktop="+System.getProperty("sun.desktop"));
		System.out.println("sun.io.unicode.encoding="+System.getProperty("sun.io.unicode.encoding"));
		System.out.println("sun.jnu.encoding="+System.getProperty("sun.jnu.encoding"));
		System.out.println("sun.management.compiler="+System.getProperty("sun.management.compiler"));
		System.out.println("sun.os.patch.level="+System.getProperty("sun.os.patch.level"));
		System.out.println("user.country="+System.getProperty("user.country"));
		System.out.println("user.dir="+System.getProperty("user.dir"));
		System.out.println("user.home="+System.getProperty("user.home"));
		System.out.println("user.language="+System.getProperty("user.language"));
		System.out.println("user.name="+System.getProperty("user.name"));
		System.out.println("user.timezone="+System.getProperty("user.timezone"));
		System.out.println("user.variant="+System.getProperty("user.variant"));
	}
}

O resultado do programa no meu ambiente:

awt.toolkit=sun.awt.windows.WToolkit
file.encoding=Cp1252
file.encoding.pkg=sun.io
file.separator=\
file.separator=\
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.awt.printerjob=sun.awt.windows.WPrinterJob
java.class.path=C:\Area51\projetosEclipse\workspace\test\bin;C:\Area51\projetosEclipse\workspace\test\jai_codec.jar;C:\Area51\projetosEclipse\workspace\test\jai_core.jar
java.class.version=50.0
java.endorsed.dirs=C:\Arquivos de programas\Java\jre6\lib\endorsed
java.ext.dirs=C:\Arquivos de programas\Java\jre6\lib\ext;C:\Windows\Sun\Java\lib\ext
java.home=C:\Arquivos de programas\Java\jre6
java.io.tmpdir=C:\Users\RICARD~1\AppData\Local\Temp\
java.library.path=C:\Arquivos de programas\Java\jre6\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre6/bin/client;C:/Program Files/Java/jre6/bin;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;c:\Program Files\WIDCOMM\Bluetooth Software\;C:\Program Files\Dell\DW WLAN Card;C:\Program Files\Common Files\Roxio Shared\OEM\DLLShared\;C:\Program Files\Common Files\Roxio Shared\OEM\DLLShared\;C:\Program Files\Common Files\Roxio Shared\OEM\12.0\DLLShared\;C:\Program Files\Roxio\OEM\AudioCore\;C:\Program Files\Windows Live\Shared;C:\Program Files\Common Files\Roxio Shared\DLLShared\;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Java\jdk1.6.0_23\bin;C:\apache-maven-2.2.1\bin;C:\apache-tomcat\bin;C:\Program Files\MySQL\MySQL Server 5.1\bin;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\OpenVPNTech\bin
java.runtime.name=Java(TM) SE Runtime Environment
java.runtime.version=1.6.0_23-b05
java.specification.name=Java Platform API Specification
java.specification.vendor=Sun Microsystems Inc.
java.specification.version=1.6
java.vendor=Sun Microsystems Inc.
java.vendor=Sun Microsystems Inc.
java.vendor.url=http://java.sun.com/
java.vendor.url=http://java.sun.com/
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi
java.version=1.6.0_23
java.version=1.6.0_23
java.vm.info=mixed mode, sharing
java.vm.name=Java HotSpot(TM) Client VM
java.vm.specification.name=Java Virtual Machine Specification
java.vm.specification.vendor=Sun Microsystems Inc.
java.vm.specification.version=1.0
java.vm.vendor=Sun Microsystems Inc.
java.vm.version=19.0-b09
line.separator=
os.arch=x86
os.arch=x86
os.name=Windows 7
os.version=6.1
path.separator=;
path.separator=;
sun.arch.data.model=32
sun.boot.class.path=C:\Arquivos de programas\Java\jre6\lib\resources.jar;C:\Arquivos de programas\Java\jre6\lib\rt.jar;C:\Arquivos de programas\Java\jre6\lib\sunrsasign.jar;C:\Arquivos de programas\Java\jre6\lib\jsse.jar;C:\Arquivos de programas\Java\jre6\lib\jce.jar;C:\Arquivos de programas\Java\jre6\lib\charsets.jar;C:\Arquivos de programas\Java\jre6\lib\modules\jdk.boot.jar;C:\Arquivos de programas\Java\jre6\classes
sun.boot.library.path=C:\Arquivos de programas\Java\jre6\bin
sun.cpu.endian=little
sun.cpu.isalist=pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86
sun.desktop=windows
sun.io.unicode.encoding=UnicodeLittle
sun.jnu.encoding=Cp1252
sun.management.compiler=HotSpot Client Compiler
sun.os.patch.level=
user.country=BR
user.dir=C:\Area51\projetosEclipse\workspace\test
user.home=C:\Users\ricardospinoza
user.language=pt
user.name=ricardospinoza
user.timezone=
user.variant=

Referências:

Deixe um comentário

Arquivado em Java