1. Karakterlerden kaçma nedenleri
Bir zamanlar, kodda bir karakter dizisi yazmak için onları çift tırnak içine almanız gerektiğini öğrendiniz. Sonuç, bir dize sabit değeridir .
Ancak, bir dize hazır bilgisi içinde tırnak işaretlerine ihtiyacımız olursa ne yaparız? Tırnak içeren bir dize — daha kolay ne olabilir?
Metni görüntülemek istediğimizi varsayalım "Friends" was nominated for an "Oscar"
. Bunu nasıl yaptın?
kod | notlar |
---|---|
|
Bu seçenek çalışmayacak! |
Sorun şu ki, derleyici tamamen beklenmedik bir kod yazdığınızı düşünüyor:
kod | notlar |
---|---|
|
Bu seçenek çalışmayacak! |
Derleyici, kodda çift tırnakla karşılaştıktan sonra, aşağıdakileri bir dizgi hazır bilgisinin başlangıcı olarak ele alır. Bir sonraki çift tırnak işareti, dize hazır bilgisinin sonunu gösterir.
Peki, bir değişmezin içine nasıl çift tırnak yazarsınız?
2. Kaçan karakterler
Bir yol var. Kaçan karakterler denir . Metin dizesinin içindeki tırnak işaretlerini yazmanız yeterlidir. Ve tırnaklardan önce \
( ters eğik çizgi ) sembolünü eklersiniz.
Bu, düzgün yazıldığında dize hazır bilgisinin nasıl göründüğüdür:
kod | notlar |
---|---|
|
Bu çalışacak! |
Derleyici her şeyi doğru yorumlayacak ve ters eğik çizgiden sonraki tırnak işaretini normal bir tırnak işareti olarak kabul etmeyecektir.
Ayrıca bu stringi ekrana yazdırırsanız ters eğik çizgili tırnaklar doğru işlenecek ve metin ters eğik çizgi olmadan görüntülenecektir:"Friends" was nominated for an "Oscar"
Bir başka önemli nokta. Başında ters eğik çizgi bulunan bir tırnak işareti, tek bir karakteri temsil eder: biz yalnızca, derleyicinin kodumuzdaki dize değişmezlerini tanıma becerisine müdahale etmeyen düzgün notasyon kullanıyoruz. Bir değişkene tırnak işaretleri atayabilirsiniz char
:
kod | notlar |
---|---|
|
\" bir karakter, iki değil |
|
Bu da mümkündür: tek tırnak içinde çift tırnak işareti |
3. Karakterlerden kaçarken ortaya çıkan yaygın durumlar
Çift tırnaklara ek olarak, derleyicinin özel bir şekilde işlediği başka birçok karakter vardır. Örneğin, bir satır sonu.
Bir değişmeze nasıl satır sonu ekleriz? Bunun için özel bir kombinasyon da var:
\n
Bir dize sabit değerine bir satır sonu eklemeniz gerekirse, yalnızca birkaç karakter eklemeniz gerekir: \n
.
Örnek:
kod | Konsol çıkışı |
---|---|
|
|
Bunun gibi kaçış dizileri olarak da adlandırılan toplam 8 özel kombinasyon vardır . İşte buradalar:
kod | Tanım |
---|---|
\t |
Sekme karakteri ekle |
\b |
Geri alma karakteri ekleme |
\n |
Yeni satır karakteri ekle |
\r |
Satır başı karakteri ekleme |
\f |
Sayfa besleme karakteri ekleme |
\' |
Tek bir tırnak işareti ekleyin |
\" |
çift tırnak işareti ekleyin |
\\ |
ters eğik çizgi ekle |
Bunlardan ikisini biliyorsunuz, peki diğer 6'sı ne anlama geliyor?
\t
bir sekme karakteridir
Tab
Bu metin metin içinde göründüğünde, yazarken tuşa basmakla eşdeğerdir . Onu takip eden metni kaydırır ve metni hizalamayı mümkün kılar.
Örnek:
kod | Konsol çıkışı |
---|---|
|
|
\b
'bir karakter geri git' anlamına gelir
Backspace
Bir dizideki bu sıra, klavyedeki tuşa basmaya eşdeğerdir . Kendisinden önce gelen karakteri kaldırır:
kod | Konsol çıkışı |
---|---|
|
|
\r
satır başı karakteridir
Bu karakter, metni değiştirmeden imleci geçerli satırın başına taşır. Bundan sonra ne görüntülenirse mevcut dizenin üzerine yazılacaktır.
Örnek:
kod | Konsol çıkışı |
---|---|
|
|
\f
bir sayfa besleme karakteridir
Bu sembol bize ilk nokta vuruşlu yazıcıların olduğu günlerden geliyor. Bu dizinin çıktısını bir yazıcıya vermek, yazıcının yeni bir sayfa başlayana kadar herhangi bir metin yazdırmadan geçerli sayfayı beslemesine neden olur.
Şimdi buna sayfa sonu veya yeni sayfa diyeceğiz .
\\
bir ters eğik çizgidir
Burada her şey açık. Metnimizde karakterlerden kaçmak için ters eğik çizgi kullanırsak, dizgede ters eğik çizgi karakterinin kendisini nasıl yazarız?
Çok basit: metne bir ters eğik çizgi ekleyin - arka arkaya iki tane yazmanız gerekir.
Örnek:
kod | Konsol çıkışı |
---|---|
|
Derleyici, kaçan bilinmeyen karakterler için size bağırır. |
|
İşte böyle doğru yapılır! |
4. Unicode kodlama
Bildiğiniz gibi, ekranda görüntülenen her karakter belirli bir sayısal koda karşılık gelir. Bu kodların standartlaştırılmış bir kümesine kodlama denir .
Bir zamanlar, bilgisayarlar yeni icat edildiğinde, her karakteri kodlamak için yedi bit (bir bayttan az) yeterliydi. İlk kodlama yalnızca 128 karakter içeriyordu. Bu kodlamaya ASCII adı verildi .
ASCII, American Standard Code for Information Interchange anlamına gelir - yazdırılabilir karakterler ve bazı özel kodlar için standart bir Amerikan kod tablosu.
33 yazdırılamayan kontrol karakterinden (metin ve boşlukların nasıl işlendiğini etkiler) ve sayılar, büyük ve küçük Latin harfleri ve çeşitli noktalama işaretleri dahil olmak üzere 95 yazdırılabilir karakterden oluşur.
Bilgisayarların popülaritesi arttıkça, her ülke kendi kodlamasını yayınlamaya başladı. Genellikle ASCII'yi başlangıç noktası olarak aldılar ve nadiren kullanılan ASCII karakterlerini ilgili alfabelerinden sembollerle değiştirdiler.
Zamanla bir fikir ortaya çıktı: dünyadaki her kodlamanın tüm karakterlerini içeren tek bir kodlama oluşturun.
Böylece, 1993 yılında Unicode kodlaması oluşturuldu ve Java dili, bu kodlamayı metin depolama standardı olarak kullanan ilk programlama dili oldu. Artık Unicode, tüm BT endüstrisi için standarttır.
Unicode'un kendisi standart olmasına rağmen, birkaç temsili veya Unicode dönüştürme formatı (UTF) vardır: UTF-8, UTF-16 ve UTF-32, vb.
Java, Unicode kodlamanın gelişmiş bir sürümünü kullanır — UTF-16: her karakter 16 bit (2 bayt) olarak kodlanmıştır. 65.536 karaktere kadar barındırabilir!
Bu kodlamada dünyadaki her alfabenin hemen hemen her karakterini bulabilirsiniz. Doğal olarak, kimse her şeyi ezberlemiyor. Her şeyi bilemezsiniz, ancak her şeyi Google'da arayabilirsiniz.
Programınıza kodunu kullanarak bir Unicode karakteri yazmak için, kodu\u
+ onaltılık olarak yazmanız gerekir . Örneğin,\u00A9
kod | Konsol çıkışı |
---|---|
|
|
5. Unicode: kod noktası
"640 kilobayt herkes için yeterli olmalı! Ya da değil". (Bill Gates'e atfedilen alıntı)
Hayat zor ve zamanla UTF-16 kodlaması yetersiz kalmaya başladı. Görünüşe göre pek çok Asya dili var ve bunlarda çok fazla glif var. Ve tüm bu glifler, 2 bayta sıkıştırılamaz.
Ne yapılabilir? Daha fazla bayt kullanın !
Ancak char türü yalnızca 2 bayttır ve onu 4'e değiştirmek o kadar kolay değildir: tüm dünyada milyarlarca satır Java kodu yazılmıştır ve bu, char türü aniden bir Java makinesinde 4 bayt olursa bozulur. Yani karakter tipini değiştiremiyoruz!
Başka bir yaklaşım var. Önlerine ters eğik çizgi koyarak karakterlerden nasıl kaçtığımızı hatırlayın. Temel olarak, birden fazla karakter kullanarak tek bir karakteri kodladık.
Java'nın yaratıcıları da aynı yaklaşımı kullanmaya karar verdiler.
char
Görsel olarak tek bir karakter olarak görünen bazı karakterler, bir dizide iki s olarak kodlanır :
kod | Konsol çıkışı |
---|---|
|
|
Artık Java programınız emojileri bile konsola gönderebilir 😎
GO TO FULL VERSION