SORU
9 HAZİRAN 2015, Salı


Neden belirli Unicode karakterler içeren yorumlara izin Java kod yürütülüyor?

Aşağıdaki kodu çıktı "Merhaba Dünya!" üretir (gerçekten, denemek yok).

public static void main(String... args) {

   // The comment below is not a typo.
   // \u000d System.out.println("Hello World!");
}

Bunun nedeni, Java derleyici yeni bir satır olarak Unicode karakter \u000d ayrıştırır ve dönüşür:

public static void main(String... args) {

   // The comment below is not a typo.
   //
   System.out.println("Hello World!");
}

Böylece yorum bir varlık haline gelir.". idam

Bu "kötü bir programcı gebe olabilir ne olursa olsun." zararlı kod ya da gizlemek için kullanılan bu yana, ^strong>neden yorumlara izin verilir?

Neden bu Java belirtimi tarafından izin verilir?

CEVAP
9 HAZİRAN 2015, Salı


Unicode kod çözme başka sözlü çeviri önce yer alır. Bu ana faydası önemsiz bir ileri bir geri ASCII ve diğer herhangi bir kodlama arasında çok daha kolay. Hatta yorum başlayıp nerede anlamaya gerek yok!

Bu herhangi bir ASCII tabanlı bir araç olan dosyalar: kaynak işlemi sağlar JLS Section 3.3 belirtilen

[...] Java programlama dili ASCII tabanlı araçlar tarafından işlenebilir bir forma bir program değiştiren bir program ASCII Unicode yazılmış dönüştürme standart bir şekilde belirtir. [...]

Bu her zaman Java platformu için önemli bir hedef olmuştur, hangi platform bağımsızlık (desteklenen karakter kümeleri bağımsızlığı için temel bir garanti verir.

Dosyada herhangi bir yere, herhangi bir Unicode karakter yazmak için güçlü olmak güzel bir özellik, ve latin olmayan dillerde kod belgeleme açıklamaları, özellikle önemlidir. Böyle kurnazca yollarla semantiği ile karışabilir aslında sadece (talihsiz) yan etkisi.

Bu tema ve aşağıdaki varyant dahil Gafter Joshua Bloch ve Neal tarafından Java Puzzlers birçok ayrıntılar var:

Bu yasal bir Java program var mı? Eğer öyleyse, bu baskı nedir?

\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

(Bu program sade bir "Merhaba" programı.) Dünya için çıkıyor

Bu bilinmez çözümü, aşağıdaki gibi gösteriyorlar.

Daha ciddi, bu bulmaca önceki üç derslerini pekiştirmek için hizmet vermektedir:Unicode kaçar programına herhangi bir şekilde temsil edilebilir mi bu karakter eklemek için ihtiyacınız olduğunda gereklidir. Tüm diğer durumlarda bunları önlemek.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kanaal van Dj0fifty

    Kanaal van D

    28 EKİM 2011
  • Gan Eden Productions

    Gan Eden Pro

    11 HAZİRAN 2011
  • SuperPrincessjo

    SuperPrinces

    1 EKİM 2010