SORU
31 Aralık 2011, CUMARTESİ


Java, iki karakter bir int veya char ilavesi sonucu mu?

'a' 'b' eklerken 195 üretir. Çıkış char int veri türü var mı?

CEVAP
31 Aralık 2011, CUMARTESİ


Java karakter, şort ya da baytlar ekleyerek sonucudurint:

23**:

  • Eğer işlenen herhangi bir başvuru türü, dönüştürme kutulama ise (§5.1.8) gerçekleştirilir. Sonra:
  • Eğer ya da işlenen tip çift ise diğer çift dönüştürülür.
  • Eğer ya da işlenen türü ise aksi takdirde, şamandıra, diğer şamandıra dönüştürülür.
  • Ya da işlenen aksi takdirde, yazın uzun, diğeri uzun dönüştürülür.
  • Aksi takdirde, hem işlenen de int dönüştürülür.

But note what it says about compound assignment operators (like =):

İkili işleminin sonucu sol değişken türüne dönüştürülür ve dönüşüm sonucu değişkenin içine saklanır.

Örneğin:

char x = 1, y = 2;
x = x   y; // compile error: "possible loss of precision (found int, required char)"
x = (char)(x   y); // explicit cast back to char; OK
x  = y; // compound operation-assignment; also OK

Sonuç tipini öğrenmenin tek yolu, genel olarak, bir Nesne koyun ve ise, sormak

System.out.println(((Object)('a'   'b')).getClass());
// outputs: class java.lang.Integer

Eğer performans ilgileniyorsanız eğer, Java bytecode daha da küçük veri türleri ile aritmetik için özel talimatlar yoktur unutmayın. Örneğin, ekleme, orada talimatları iadd (in), ladd (özlemini), fadd (yüzen), dadd (çiftler için), ve bu kadar. Simülasyonu x = y ile küçük türleri, derleyici kullanır iadd ve sonra sıfır üst bayt int kullanma talimatı gibi i2c ("int char"). Eğer yerel CPU 1-byte veya 2 baytlık veri için özel talimatlar varsa, Java sanal makinesi için zamanında bunun için optimize etmek için.

Eğer sayısal bir tip olarak yorumlamak yerine bir Dize olarak karakterleri bağlamak istiyorsanız, bunu yapmak için birçok yolu vardır. Kolay bir char ekleme çünkü ifade etmek için boş bir Dize ekleme, ve bir Dize bir Dize olur. Bu ifadeler her dizesinde "ab" sonuç:

  • 'a' "" 'b'
  • 16* *(Bu "" 'a' ilk değerlendirmeye çalışıyor çünkü; "" sonunda olsaydı yerine "195" alacağı)
  • new String(new char[] { 'a', 'b' })
  • new StringBuilder().append('a').append('b').toString()
  • String.format("%c%c", 'a', 'b')

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ColdfusTion

    ColdfusTion

    3 Aralık 2007
  • Jaclyn W

    Jaclyn W

    5 Mayıs 2006
  • Slave Boy Films - Fandom from a Galaxy Far Far Away

    Slave Boy Fi

    12 HAZİRAN 2009