Número, String e Array

JavaBeginner
Pratique Agora

Introdução

Em Java e outras linguagens orientadas a objetos, os objetos são coleções de dados relacionados que vêm com um conjunto de métodos. Esses métodos operam nos objetos, realizando cálculos e, às vezes, modificando os dados do objeto. Aqui, apresentamos três tipos de objetos embutidos em Java simples, mas importantes: Number, String e Array.

Número

Basicamente, usamos tipos de números primitivos como byte, int, double, etc. No entanto, às vezes precisamos usar objetos em vez de tipos de dados primitivos. Java fornece classes wrapper (classes empacotadoras) para tipos de dados primitivos. Elas são Byte, Short, Long, Integer, Double, Float, etc. Um objeto wrapper pode ser convertido de volta para um tipo de dado primitivo. Esse processo é chamado de unboxing (desempacotamento). A classe Number faz parte do pacote java.lang. Falaremos sobre pacotes mais tarde.

A seguir, uma lista de alguns dos métodos de classe comuns que as subclasses da classe Number implementam:

  • xxxValue(): Converte o valor deste objeto Number para o tipo de dado xxx e o retorna.
  • compareTo(): Compara este objeto Number com o argumento.
  • equals(): Determina se este objeto Number é igual ao argumento.
  • valueOf(): Retorna um objeto Integer contendo o valor do primitivo especificado.
  • toString(): Retorna um objeto String representando o valor de um int ou Integer especificado.
  • parseInt(): Este método é usado para obter o tipo int primitivo a partir de um determinado valor String.
  • abs(): Retorna o valor absoluto do argumento.
  • ceil(): Retorna o menor inteiro que é maior ou igual ao argumento. Retornado como um double.
  • floor(): Retorna o maior inteiro que é menor ou igual ao argumento. Retornado como um double.
  • pow(): Retorna o valor do primeiro argumento elevado à potência do segundo argumento.
  • round(): Retorna o long ou int mais próximo, conforme indicado pelo tipo de retorno do método, ao argumento.

Exemplo:

Escreva o seguinte código no arquivo /home/labex/project/numberTest.java:

public class numberTest
{
    public static void main(String[] args){
        Integer x = 1;    // boxes int to an Integer object
        x = x + 1;        // unboxes the Integer to an int
        System.out.println(Integer.parseInt("10"));  // parse int from a string
        System.out.println( "x = " + x);
    }
}

Saída:

Execute o arquivo numberTest.java usando o seguinte comando:

javac /home/labex/project/numberTest.java
java numberTest

Veja a saída:

10
x = 2

String

Strings são objetos, então você pode perguntar: “Quais são os dados contidos em um objeto String?” e “Quais são os métodos que podemos invocar em objetos String?” Os componentes de um objeto String são caracteres. Nem todos os caracteres são letras; alguns são números, outros são símbolos especiais e o restante são outras classes de caracteres. Para simplificar, chamamos todos eles de caracteres. Existem muitos métodos de string na classe String, mas usaremos apenas alguns deles. O restante pode ser consultado na documentação no site oficial.

Nota: A classe String é imutável, então, uma vez criado, um objeto String não pode ser modificado. Se houver necessidade de fazer muitas modificações em Strings de caracteres, então você deve usar as classes StringBuffer e StringBuilder.

A seguir, uma lista de alguns dos métodos comuns das classes String, StringBuffer e StringBuilder:

  • char charAt(int index): O caractere especificado da sequência atualmente representada pelo buffer de string, conforme indicado pelo argumento index, é retornado.
  • void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin): Os caracteres são copiados deste buffer de string para o array de caracteres de destino dst.
  • int indexOf(String str): Retorna o índice dentro desta string da primeira ocorrência da substring especificada.
  • int indexOf(String str, int fromIndex): Retorna o índice dentro desta string da primeira ocorrência da substring especificada, começando no índice especificado.
  • int lastIndexOf(String str): Retorna o índice dentro desta string da ocorrência mais à direita da substring especificada.
  • int lastIndexOf(String str, int fromIndex): Retorna o índice dentro desta string da última ocorrência da substring especificada, pesquisando para trás a partir do índice especificado.
  • int length(): Retorna o comprimento (contagem de caracteres) deste buffer de string.
  • String substring(int start): Retorna uma nova String que contém uma subsequência de caracteres atualmente contidos neste StringBuffer. A substring começa no índice especificado e se estende até o final do StringBuffer.
  • String substring(int start, int end): Retorna uma nova String que contém uma subsequência de caracteres atualmente contidos neste StringBuffer.

Exemplo:

Escreva o seguinte código no arquivo /home/labex/project/stringTest.java:

public class stringTest
{
    public static void main(String[] args){
        String greeting = "Hello world!";
        String hello = new String("Hello !");
        System.out.println("greeting is: "+ greeting);
        System.out.println("hello is: "+ hello);
        System.out.println("length of greeting: " + greeting.length());
        System.out.println("first char of greeting: " + greeting.charAt(0));
        System.out.println("index of 'e' in hello: "+ hello.indexOf('e'));
        System.out.println("substring of greeting: "+ greeting.substring(6));  //substr: world

    }
}

Saída:

Execute o arquivo stringTest.java usando o seguinte comando:

javac /home/labex/project/stringTest.java
java stringTest

Veja a saída:

greeting is: Hello world!
hello is: Hello !
length of greeting: 12
first char of greeting: H
index of 'e' in hello: 1
substring of greeting: world!

Array

Uma estrutura de array é usada para armazenar uma coleção de dados, mas é frequentemente mais útil pensar em um array como uma coleção de variáveis de um único tipo. Em vez de declarar variáveis individuais, como number0, number1,..., number99, você declara uma variável de array numbers e usa numbers[0], numbers[1], ..., numbers[99] para representar variáveis individuais. O primeiro elemento do array está no índice 0.

A seguir, uma lista de alguns dos métodos comuns que os arrays possuem:

  • public static int binarySearch(Object[] a, Object key): Pesquisa o array especificado pelo valor especificado usando o algoritmo de busca binária. O array deve ser classificado antes de chamar este método. Isso retorna o índice da chave de busca, se ela estiver contida no array; caso contrário, retorna (–(ponto de inserção + 1)).
  • public static boolean equals(long[] a, long[] a2): Retorna true se os dois arrays especificados de longs forem iguais um ao outro. Dois arrays são considerados iguais se ambos os arrays contiverem o mesmo número de elementos e todos os pares correspondentes de elementos nos dois arrays forem iguais. Isso retorna true se os dois arrays forem iguais. O mesmo método pode ser usado por outros tipos de dados primitivos (byte, short, int, etc.) também.
  • public static void fill(int[] a, int val): Atribui o valor int especificado a cada elemento do array especificado de ints. O mesmo método pode ser usado por outros tipos de dados primitivos (byte, short, etc.) também.
  • public static void sort(Object[] a): Classifica o array especificado de objetos em ordem crescente de acordo com a ordenação natural de seus elementos. O mesmo método pode ser usado por tipos de dados primitivos (byte, short, int, etc.) também.

Exemplo:

Escreva o seguinte código no arquivo /home/labex/project/arrayTest.java:

public class arrayTest
{
    public static void main(String[] args){
        // you can use new to initialize an empty array.
        String[] nameArray1 = new String[5];
        // fill the empty nameArray1 items with same name "abc"
        java.util.Arrays.fill(nameArray1,"abc");
        // the for loop can also be used to iterate an Array
        for (String name:nameArray1){
            System.out.println(name);
        }
        // you can use some value to initialize the array.
        String[] nameArray2 = {"Candy", "Fancy", "Ann", "Ella", "Bob"};
        // you can get the length of the array
        System.out.println("Length of nameArray2: " + nameArray2.length);
        // you can get value by index
        System.out.println("The last item of nameArray2 is " + nameArray2[4]);
        // sort an array object
        java.util.Arrays.sort(nameArray2);
        System.out.println("Sorted nameArray2 by alphabet:");
        for(String name:nameArray2){
            System.out.println(name);
        }
    }
}

Saída:

Execute o arquivo arrayTest.java usando o seguinte comando:

javac /home/labex/project/arrayTest.java
java arrayTest

Veja a saída:

abc
abc
abc
abc
abc
Length of nameArray2: 5
The last item of nameArray2 is Bob
Sorted nameArray2 by alphabet:
Ann
Bob
Candy
Ella
Fancy

Resumo

A maioria das tarefas envolve a manipulação de dados como números e strings, portanto, usar as classes embutidas do Java para realizar as tarefas é fácil e eficiente. Para uso avançado, você pode consultar a documentação oficial.