Я поделился в блоге статьей, включающей комментарии на Java, я написал предложение по обету: «Комментарий не будет выполнен!» В результате появляется небольшое партнерское сообщение «Учитель, вы уверены? "
У меня всегда было преимущество в том, что я мог слушать голоса других людей.Неважно, хвалите вы или критикуете, я всегда принимаю это непредвзято. Потому что я считаю, что большинство маленьких друзей служат благим целям.
Кроме того, технически я никогда не думал о том, чтобы стать великим боссом, я просто хотел поделиться своим чувством, вот и все. Я оставляю многие ошибки в статьях как есть, потому что если их исправить, те, кто укажут на ошибки в комментариях, сочтут это неуместным в глазах последующих читателей.
Эти диссы, мои маленькие друзья, не волнуйтесь, я не буду возражать.
Тем не менее, я действительно не могу комментировать этот вопрос! Комментарий точно не будет выполнен, я думаю, что этот маленький друг должен быть сарказмом меня. Поэтому я в частном порядке спросил его, почему, и он выдал мне следующий код:
public class Test {
public static void main(String[] args) {
String name = "沉默王二";
// \u000dname="沉默王三";
System.out.println(name);
}
}
Я скопировал его в IDEA и запустил, и вывод программы оказался неожиданным:
沉默王三
Оказалось, что Ван Сан, не Ван. Когда я увидел этот результат, я был полностью ошеломлен.
В этот момент я чувствую, что десятилетие Java будет белой школой. Университет, который был бы, учитель сказал, что комментарий не был выполнен, даже "программные идеи" также сказал, что комментарии не будут реализованы. Итак, теперь кто может сказать мне, в конце концов, почему?
Разве это не означает, что мир программирования очень прост? Либо 0, либо 1? Когда дело дошло до этого момента, я мог только внимательно изучить его.
С чисто кодовой точки зрения проблема должна заключаться в строке специальных символов——\u000d
, если бы не он, изменив значение названия с "Silent King II" на "Silent King III", другой причины бы не было - больше ничего, с многолетним стажем работы, я до сих пор очень на корень проблемы.
\u000d
Хотя это выглядит незнакомо, я знаю, что это символ Unicode. Спросив поисковую систему, я понял, что это символ новой строки — внезапное осознание. Я знаю, что компилятор Java не только компилирует код, но и разбирает символы Юникода.
Я взглянул на скомпилированный байт-код кода выше, и он выглядит так:
// class version 58.65535 (-65478)
// access flags 0x21
public class com/cmower/dzone/secret/Test {
// compiled from: Test.java
// access flags 0x1
public <init>()V
L0
LINENUMBER 3 L0
ALOAD 0
INVOKESPECIAL java/lang/Object.<init> ()V
RETURN
L1
LOCALVARIABLE this Lcom/cmower/dzone/secret/Test; L0 L1 0
MAXSTACK = 1
MAXLOCALS = 1
// access flags 0x9
public static main([Ljava/lang/String;)V
L0
LINENUMBER 5 L0
LDC "\u6c89\u9ed8\u738b\u4e8c"
ASTORE 1
L1
LINENUMBER 6 L1
LDC "\u6c89\u9ed8\u738b\u4e09"
ASTORE 1
L2
LINENUMBER 7 L2
GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
ALOAD 1
INVOKEVIRTUAL java/io/PrintStream.println (Ljava/lang/String;)V
L3
LINENUMBER 8 L3
RETURN
L4
LOCALVARIABLE args [Ljava/lang/String; L0 L4 0
LOCALVARIABLE name Ljava/lang/String; L1 L4 1
MAXSTACK = 2
MAXLOCALS = 2
}
Хм, я не понимаю. Но это не беда, просто декомпилируйте его, поэтому я вижу следующий код:
public class Test {
public Test() {
}
public static void main(String[] args) {
String name = "沉默王二";
name = "沉默王三";
System.out.println(name);
}
}
Эй, два обратной коса//
Его действительно нет, и это точно — аннотации действительно выполняться не будут. Только\u000d
Пучокname="沉默王三";
сжатый//
Прокомментируйте следующую строку, как в следующем коде:
public class Test {
public static void main(String[] args) {
String name = "沉默王二";
//
name="沉默王三";
System.out.println(name);
}
}
Так это ошибка Java? Это даже не считается.
Поскольку, позволяя исходному коду Java содержать символы Unicode, вы можете гарантировать, что код, написанный в любой части мира, будет выполняться в другом месте.
Честно говоря, этот абзац найден в Интернете, вроде и понятно, и не понятно. Это требует другого кода:
double π = Math.PI;
System.out.println(\u03C0);
Предположим, что программист Сяо Ван не знал, когда создавал переменную частоту циклов.π
Как набрать этого персонажа, то он может выбрать для использования\u03C0
вместо этого - компилятор знает\u03C0
этоπ
Эта переменная (компилятор будет анализировать символы Юникода перед компиляцией другого кода).
могу только сказать\u000d
Это исключение.
Конечно, за исключением особых случаев, не включайте символы Unicode в исходный код, чтобы не изменить первоначальное значение исходного кода.
Эта статья не имеет другого смысла, и я не хочу исследовать слишком эзотерические вещи, просто чтобы привлечь внимание моих друзей: комментарии могут выполняться компилятором. Это похоже на то, что если Лу Синь не знал, что есть 4 способа написать слово «фенхель» для обозначения бобов укропа, то он не может заставить Конга Иджи действовать в чайхане в Лючжэне.
Конечно, если маленький партнер хочет испытать чувство притворства, вы можете сохранить следующий код в файле с именем Ugly.java:
\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020\u0020
\u0063\u006c\u0061\u0073\u0073\u0020\u0055\u0067\u006c\u0079
\u007b\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020
\u0020\u0020\u0020\u0020\u0073\u0074\u0061\u0074\u0069\u0063
\u0076\u006f\u0069\u0064\u0020\u006d\u0061\u0069\u006e\u0028
\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0020\u0020
\u0020\u0020\u0020\u0020\u0061\u0072\u0067\u0073\u0029\u007b
\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074
\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0020
\u0022\u0048\u0065\u006c\u006c\u006f\u0020\u0077\u0022\u002b
\u0022\u006f\u0072\u006c\u0064\u0022\u0029\u003b\u007d\u007d
Выполнить сначала в командной строкеjavac Ugly.java
, а затем выполнитьjava Ugly
Посмотреть результат работы программы можно командой:
Hello world
Испытав, буду тянуть. Да и вообще писать такой код никто не может, кроме машины. Хорошо, мой дорогой друг-читатель, все вышеизложенное — это статья. Ощущение, что когнитивная граница расширилась?
Я был молчаливым королем, одним интересным программистом. Если вы считаете, что ваша статья немного поможет, поищите в WeChat »Тихий король 2"Прочтите это в первый раз, ответьте [666] Есть также обучающие видео высокой четкости 500G (по категориям), которые я тщательно подготовил для вас.
эта статьяGitHubОн был включен, и есть полные тестовые площадки для интервью на крупных заводах Добро пожаловать в Star.
Оригинальность непроста, не просите пустой билет, пожалуйста, поставьте лайк этой статье, что будет моей сильнейшей мотивацией писать больше качественных статей.