Avatar ·

لماذا ينفذ Java كودًا مخفيًا في التعليقات عبر Unicode؟

مرحبًا بالجميع! بدأت تعلم Java مؤخرًا وواجهت سلوكًا غريبًا. أكتب كودًا بسيطًا: ```java public class Test { public static void main(String[] args) { // \u000d System.out.println("Hello from comment!"); System.out.println("Hello world"); } } ``` توقعت أن هذا الكود سيطبع فقط "Hello world"، لأن السطر الثاني هو تعليق. ولكن عند التشغيل أحصل على: ``` Hello from comment! Hello world ``` كيف ذلك؟ ظننت أن التعليقات يتم تجاهلها تمامًا من قبل المترجم. لماذا يتم تنفيذ الكود داخل التعليق؟ هل هذا خطأ في المترجم أم مقصود؟ بحثت في Google لكني لم أجد شرحًا واضحًا للمبتدئين. اشرحوا لي من فضلكم كيف تعمل هذه السحرية مع Unicode. وهل يمكنني الحماية من مثل هذه "المفاجآت" في الكود؟ شكرًا مقدمًا! <<>>

إجابة مختصرة

تقوم Java بمعالجة تسلسلات Unicode-escape (مثل \u000d) في أقدم مرحلة من التجميع — قبل