Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida na criação de um abjeto

public class Conta {

    // private indica que outra classe não pode acessar diretamente o atributo
    // somente a própria classe
    private double saldo;
    private int agencia;
    private int numero;
    private Cliente titular;
    // total de contas abertas deve ser static para que seja uma varável da classe e não
    // de cada objeto
    private static int total;

    // o public Conta() é um construtor que basicamente exige que os atributos agencia e numero
    // devam ser inicializados com valores que não possam ser default, evitando inconsistencias
    // sem esse construtor, a agencia e numero ficariam com zero como default
    public Conta(int agencia, int numero) {
        total++;
        System.out.println("total de contas abertas: " + total);
        this.agencia = agencia;
        this.numero = numero;
        System.out.println("Estou criando a agencia: " + this.agencia + " e a conta: " + this.numero);
    }





public class TestaValores {

    public static void main(String[] args) {

        Conta conta = new Conta(1337, 24226);
        Conta conta2 = new Conta(7380, 07731);
        Conta conta3 = new Conta(7381, 07732);
    }

}

Olá amigos. Alguém sabe me dizer por que quando eu crio uma conta que começa com zero o Java me da o print (codificado no Conta(int agencia, int numero) de um outro número que não foi o número criado? Caí nessa situação por acaso. Se eu tirar o zero a esquerda vai funcionar corretamente. Obrigado!

Segue resultado do print: total de contas abertas: 1 Estou criando a agencia: 1337 e a conta: 24226 total de contas abertas: 2 Estou criando a agencia: 7380 e a conta: 4057 total de contas abertas: 3 Estou criando a agencia: 7381 e a conta: 4058

2 respostas
solução!

Olá Ricardo,

quando colocamos um zero no começo de um número, o java passa a interpretá-lo como um octal. Por exemplo, o número 07731 ele vai fazer a seguinte conta para obter um inteiro:

7 * 8³ + 7 * 8² + 3 * 8¹ + 1 * 8° = 4057

Mas que beleza. Obrigado pela força e a excelente explicação Lucas. Só não sei o porque do Java fazer isso hehehe. Abraços.