Рассмотрим следующую программу:

import java.io.*;
class GFG
{
    public static void main (String[] args)
    {
        int x = 012;
        System.out.print(x);
    }
}

Вывод: 10

Причина этого вывод заключается в том что когда значение с префиксом 0, то значение считается восьмеричным, 12 в восьмеричной системе является числом 10 в десятичной системе. Таким образом, если задать значение переменной i = 0112, то результатом будет 74 (в десятичной системе).

Так же,

import java.io.*;
class GFG
{
    public static void main (String[] args)
    {
        String s = 3 + 2 + "hello" + 6 + 4;
        System.out.print(s);
    }
}

Вывод: 5hello64

Java сначала складывает первые 2 цифры, и конвертирует их в тип int, затем, как только встречаются строки, то все следующие значения так же конвертируются в строки.

Эта статья является переводом этой статьи.