Armazenar CPF em campo númerico

Pessoal,

Tenho a seguinte classe -> Cliente.java

public class Cliente {

  private String clienteNome;
  private long clienteCpf;
  .
  . 
  .    

}

e a seguinte classe para teste da classe -> TestaCliente.java

public class TestaCliente {

      public static void main(String[] args) {

          Cliente cliente1 = new Cliente("João Alfredo",15025030050 ); // não importa se o CPF eh valido

      }
      .
      . 
      .
} 
           

Quando tento instanciar o objeto da classe cliente usando a linha acima, aparece o seguinte erro :

 "The literal  15025030050 of type int is out of range".

 Enfim, qual o tipo de dado em Java me permitiria armazenar o CPF apenas como número sem estourar a capacidade ?
 Tentei usar o tipo LOGN, que salvo engano meu comporta até 64 bits, mas ainda não foi suficiente.

 Agradece,

 Max Carvalho

Errata : leia-se tipo LONG

Queria pergutar algo…

E se o cpf fosse o seguinte: 00536556398.

Como saber diferenciar que os ZEROS não serão conciderados?

Quanto a sua questão acredito que Long resolva, pios o seu valor maxio é 9223372036854775807.

Tenta colocar assim a chamada de seu construtor:

new Cliente("João Alfredo",15025030050L );

Veja se funciona…

71C4700 ( que nick !!! ),

Funcionou.
Modifiquei o código acima para:


new Cliente(“João Alfredo”,15025030050L );

E deu certo, só que ainda fiquei com a seguinte dúvida :

Uma variáve inteira normal comportaria o valor -> 15025030050 ?

Agradece,

Max Carvalho

[quote=maxcarvalho]71C4700 ( que nick !!! ),

Funcionou.
Modifiquei o código acima para:


new Cliente(“João Alfredo”,15025030050L );

E deu certo, só que ainda fiquei com a seguinte dúvida :

Uma variáve inteira normal comportaria o valor -> 15025030050 ?

Agradece,

Max Carvalho [/quote]

um long sim, um int não

quando vc escreve valores literias esta escrevendo um int e por isso que

new Cliente(“João Alfredo”,15025030050 );

sem o L não complia, pq ele ve aquilo como um inteiro, e esse valor não cabe em um inteiro

quando vc escreve

new Cliente(“João Alfredo”,15025030050L );

esta avisando, que o valor que esta escrevendo é um long, e ai ele cabe dentro

[quote=71C4700]Queria pergutar algo…

E se o cpf fosse o seguinte: 00536556398.

Como saber diferenciar que os ZEROS não serão conciderados?

Veja se funciona…[/quote]

se um long hora, então não há zeros a esqueda, e um cpf tem 11 digitos, sempre, portanto se menor que 11, é so colocar os zeros a esquerda…

zeros a esqueda são conciderados pelo compilador com onumeros binarios ou octais (não me lembro exatamente agora)

um exemplo de exebição

long teste = 5639812L; long teste2 = 12345678900L; System.out.printf("%1$011d\n",teste); System.out.printf("%1$011d\n",teste2);
resultado

00005639812 12345678900