(resolvido) duvida com campo long

boa tarde a todos…

observem a classe abaixo:

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package teste0001;

/**
*

  • @author Admin
    */
    public class ClasseCadastro {
    private long codigo;
    private String razao;
    private long cgc;

    public long getCodigo() {
    return codigo;
    }

    public void setCodigo(long codigo) {
    this.codigo = codigo;
    }

    public String getRazao() {
    return razao;
    }

    public void setRazao(String razao) {
    this.razao = razao;
    }

    public long getCgc() {
    return cgc;
    }

    public void setCgc(long cgc) {
    this.cgc = cgc;
    }
    }[/code]

observem esta outra classe:

[quote]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package teste0001;

/**
*

  • @author Admin
    */
    public class ClasseTeste {
    public static void main(String[] args) {
    ClasseCadastro cadastro = new ClasseCadastro();
    cadastro.setCodigo(1);
    cadastro.setRazao(“EMPRESA EXEMPLO S.A”);
    String s=“07380134000124”;
    cadastro.setCgc(Long.parseLong(s));
    System.out.println(cadastro.getCgc());
    cadastro.setCgc(07380134000124); // LINHA COM A DUVIDA
    }
    }[/quote]

observem que na classeteste…

eu tenho uma String s que tem um cgc: 07380134000124
eu pego esta string e consigo guardar ela sem nenhum problema na linha: cadastro.setCgc(Long.parseLong(s));
e logo em seguida dou ate println com o valor: System.out.println(cadastro.getCgc());
ate ai sem problema
porem no netbeans a linha: onde eu estou tentando setar diretamente o cgc me da o erro: “integer long to larger”

como se explica se na aplicacao esta funcionando normalmente… porque o netbeans acusa este erro:
se ao executar a aplicacao sem a linha onde o netbeans esta reclamento o java trata normalmente sem nenhuma excessao?
eu sei que esta mensagem de erro esta me dizendo que um campo long para o valor esta estourado… mas porque na execucao
ele nao da erro: e funciona normalmente:

se alguem poder me tirar esta duvida agradeco desde ja:

cadastro.setCgc(07380134000124); // LINHA COM A DUVIDA 

Você tem 2 problemas aí.

  1. Como a constante começa por zero, ela é entendida pelo Java como sendo um número em octal, portanto os dígitos 8 e 9 são inválidos. Não ponha zeros à esquerda em constantes numéricas dentro do seu programa a menos que você saiba o que está fazendo…

Um exemplo:

System.out.println (010 == 8);

O código acima imprime “true” em vez de “false”. É que o número “010” é entendido como um número octal, e se você aprendeu mudança de base, 010 em octal é 8 em decimal.

  1. Além disso, se você tem uma constante numérica, ela deve ser terminada com “L” para usar com números muito grandes (ou seja, acima de dois bihões e uns quebradinhos).

No seu caso:

cadastro.setCgc(7380134000124L);

resolvido— obrigado