Membros estáticos,passagem de
parâmetros e arrays
Membros estáticos
Uma classe possui dois tipos de membros:
campos e métodos.
Um membro estático é um membro que é
apenas um por classe.
Um método estático é usado fora do
contexto de qualquer instância.
Declara-se esses métodos como static.
Membros estáticos
Exemplos de métodos estáticos:
public static void main(String args[ ]){
Math.pow(b, 2.0)
Math.sqrt(delta - 4*a*c)
System.out.println(“x1=“ + x)
Membros estáticos
Variáveis estáticas levam a uma
declaração de variáveis globais.
Variáveis estáticas de uma classe são
inicializadas antes de qualquer variável
estática ser utilizada ou qualquer método
ser executado.
Blocos de inicialização estática
Necessário para configurar campos estáticos ou
outros estados necessários.
Um bloco estático é executado exatamente
uma vez, quando a classe é carregada pela
primeira vez.
A ordem da inicialização estática é da esquerda
para a direita e de cima para baixo.
Exemplo
class Estatica{
static int a = 3;
static int b;
static void metodo(int x){
System.out.println(“x = “ + x);
System.out.println(“a = “ + a);
System.out.println(“b = “ + b);
}
static {
System.out.println(“bloco estatico inicializado”);
b = a * 4;
}
public static void main(String args[ ]) {
metodo(42);
}
}
Métodos estáticos
Um método estático é chamado em nome de
uma classe inteira, e não de um objeto
específico.
Também conhecidos como métodos de classe.
Um método estático pode ter acesso apenas a
variáveis estáticas.
Um membro estático é geralmente acessado
usando-se o nome da classe, em vez da
referência a um objeto.
Exemplo
class ClasseEstatica {
static int a = 42;
static int b = 99;
static void chameme( ) {
System.out.printl(“a = “ + a);
}
}
class EstaticaPorNome {
public static void main (String args[ ]) {
ClasseEstatica.chameme( );
System.out.println(“b = “ + ClasseEstatica.b);
}
}
Valores de parâmetros
Todos os parâmetros a métodos Java são
passados por valor.
Os valores de parâmetros variáveis em
um método são cópias de valores
especificados por quem os chamou.
Um método poderá alterá-lo sem afetar
os valores no código que chama tal
método.
Valores de parâmetros
class PassagemPorValor{
public static void main(String[ ] args){
double um = 1.0;
System.out.println(um);
metade(um);
System.out.println(um);
}
public static void metade(double arg){
arg /= 2.0;
System.out.println(arg);
}
}
Valores de parâmetros
Em caso de objeto, é a referência que é
passada por valor e não o objeto
propriamente dito.
Pode-se alterar o objeto que o parâmetro
se refere dentro de um método sem
afetar a referência que foi passada.
Arrays
Um array (vetor ou matriz) é um grupo de
variáveis de mesmo tipo que são referidas
por um nome comum.
Os arrays podem ser declarados para
conter quaquer tipo.
Os colchetes, [], são usados para declarar
um tipo de array.
int dias_mês[];
Arrays
O valor de dias_mês é definido como um
valor padrão zerado.
Um operador new é usado para alocar o
espaço de um array.
dias_mês = new int[12];
Arrays
Class Array {
public static void main(String args[ ]){
int dias_mês[ ];
dias_mês = new int [12];
dias_mês[0] = 31;
dias_mês[1] = 28;
dias_mês[2] = 31;
dias_mês[3] = 30;
dias_mês[4] = 31;
dias_mês[5] = 30;
dias_mês[6] = 31;
dias_mês[7] = 31;
dias_mês[8] = 30;
dias_mês[9] = 31;
dias_mês[10] = 30;
dias_mês[11] = 31;
System.out.println(“Abril tem “ + dias_mês[3] + “dias.”);
}
}
Arrays
Pode-se inicializar os arrays
automaticamente, da mesma forma como
a inicialização dos tipos simples.
int dias_mês[ ] = {31, 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31};
O array será criado com tamanho
suficiente para conter o número de
elementos especificados na inicialização.
Arrays multidimensionais
Em Java existem arrays de arrays, que se
parecem com os arrays
multidimensionais.
Os arrays multidimensionais tradicionais
são alocados em blocos.
Em Java, declara-se uma variável com
tendo mais de uma dimensão.
Arrays multidimensionais
double matrix [ ] [ ] = new double [4][4];
double matrix [ ] [ ] = new double [4] [ ];
matrix[0] = new double [4];
matrix[1] = new double [4];
matrix[2] = new double [4];
matrix[3] = {0, 1, 2, 3};