Если не учитывать стилистические, то технических три:
- Нельзя использовать зарезервированные в Java слова;
- Первый используемый символ обязан соответствовать Charactr.isJavaIdentiferStart();
- Все символы, начиная со второго, обязаны соответствовать Charactr.isJavaIdentiferPart().
В общем случае имя может состоять из:
- букв разных алфавитом и языков;
- специальных символов, например, $;
- цифры.
В качестве первого символа нельзя использовать цифры.
Для определения типа символа рекомендуется использовать Character.getType().
Слово var является особенным, так как оно зарезервировано исключительно в контексте используемого типа, а брать его имя для переменной не запрещено.
class Никогда {}
class _делай extends Никогда
Никогда $так = new _делай();
var var = "var";