Değişmez 127, int türünde bir değeri belirtir. 1 de öyle. Bu ikisinin toplamı 128 tamsayısıdır. İkinci durumda sorun, bunu bayt türündeki bir değişkene atıyor olmanızdır. İfadelerin gerçek değeri ile ilgisi yoktur. Java'nın zorlamaları (*) desteklememesi ile ilgisi var. Bir typecast eklemelisiniz
byte b = (byte)(127 + 1);
ve sonra derler.
(*) en azından String-to-integer, float-to-Time türünde değil, ... Java bir anlamda kayıpsız iseler zorlamaları destekler (Java bunu "genişletme" olarak adlandırır).
Ve hayır, "baskı" kelimesinin düzeltilmesi gerekmiyordu. Bunda çok bilinçli ve doğru seçildi. En yakın kaynaktan ele (Wikipedia): "Çoğu dilde, zorlama kelimesi ya derleme sırasında ya da çalıştırma sırasında örtük bir dönüşümü belirtmek için kullanılır ." ve "Bilgisayar biliminde, tür dönüştürme, tipleme ve zorlama, bir veri türündeki bir varlığı diğerine değiştirmenin örtük veya açık bir şekilde farklı yollarıdır."
byte
veri türü neden bu kadar acı verici ?!