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};