Mantiqiy amallar
Java dasturlash tilida to’rtta mantiqiy amal mavjud:
Inkor(NOT) ― !
Konyuksiya(AND) ― &
Dizyunksiya(OR) ― |
XOR ― ^
Bu amallar mantiqiy (boolean) tipdagi malumotlar ustida bajariladi, hattokiy uning natijalari ham mantiqiy tipda bo’ladi true yoki false. Bu amallarni quyudagi jadvalda yaxshiroq tushunishingiz mumkin.
b1
|
b2
|
!b1
|
b1 & b2
|
b1 | b2
|
b1 ^ b2
|
true
|
true
|
false
|
true
|
true
|
false
|
true
|
false
|
false
|
false
|
true
|
true
|
false
|
true
|
true
|
false
|
true
|
true
|
false
|
false
|
true
|
false
|
false
|
false
|
Yuqorida aytib o’tilgan to’rtta mantiqiy amaldan tashqari yana ikkita qisqartma ko’rinishdagi mantiqiy amal mavjud:
Qisqartirilgan konyuksiya(conditional-AND) ― &&
Qisqartirilgan dizyunksiya(conditional-OR) ― ||
Ikkita belgi ampersanda va vertikal chiziqlar ketma-ket probelsiz yoziladi. Bu ikkita amal dasturlovchilar foydalanuvchilar juda qulay va samaralidir. Misol tariqasida: (n != 0) && (m/n > 0.001) yoki (n == 0) || (m/n > 0.001) . Javada har doim qisqartirilgan mantiqiy amallardan foidalaniladi. Quyidagi misolda yanada yaxshiroq tushinib olasiz:
public class MainClass {
public static void main(String[] args) {
boolean f1=true,f2,f3;
f2=false;
f3=true;
boolean g1,g2,g3,g4;
g1=f1==f2;
g2=f1!=f2;
g3=f1 && f3;
g4=f1 || f2;
System.out.println(g1);
System.out.println(g2);
System.out.println(g3);
System.out.println(g4);
}
}
Natija :
false
true
true
true
Butun tiplar.
Java tili har bir tiplarni razryadini (baytlar soni, operativ xotirada tiplarning qanday saqlanishini) aniqlaydi. Butun tiplar uchun quyudagi jadvalda tiplar diapazoni va razryadlari ko’rsatilgan (Pentium prosessorlari uchun).
Tip
|
Bayt
|
Diapazoni
|
Byte
|
1
|
-128 dan 127 gacha
|
Short
|
2
|
-32768 dan 32767 gacha
|
Int
|
4
|
-2147483648 dan -2147483647 gacha
|
Long
|
8
|
-9223372036854775808 dan -9223372036854775807
|
Char
|
2
|
‘\u0000’ dan ‘\uFFFF’ gacha,16 sanoq sistemasida 0 dan 65535 gacha
|
Garchi char tipiga ikki bayt ajratilgan bo’lsada, lekin arifmetik amallarda huddi int tipidek ishtirok qiladi, unga to’rt bayt ajratilgan, ikki bayti no’l bilan to’ldirilgan.
Quyudagi misolda o’zgaruvchilar tiplari bilan ko’rsatilgan:
public class MainClass {
public static void main(String[] args) {
int a=5,b;
byte d;
long i,j=6;
short k=32767;
char newLine='\n';
char c='B';
System.out.println(a);
System.out.println(j);
System.out.println(k);
System.out.print(newLine);//etibor bering;
System.out.println(c);
}
}
Natija:
5
6
32767
B
Char tipidan tashqari butun tiplar qo’shimcha kodlar bilan ikkilik sanoq sistemasi ko’rinishda saqlanadi. Qarama qarshi sonlar ikkilik sanoq sistemasi ko’rinishda saqlanmaydi, lekin qo’shimcha kod orqali ikkilik sanoq sistemasi ko’rinishda saqlash mumkin. Masalan b1 o’zgaruvchining qiymadi 50, b1 o’zgaruvchi bir baytga 00110010 ikkilik sanoq sistemasi bilan saqlanadi. -50 misol qilib yozish kerak.
Butun tiplar ustuda amallar.
Butun tiplar ustuda amallar quyida ko’rsatilgan.
Arifmetik amallar:
Qo’shish amali ― +(pilus)
Ayirish amali ― -(menus)
Ko’paytirish ― *(yulduzcha)
Bo’lish amali ― /(slesh)
Bo’linmaning qoldiq qismi ― % (prosent)
Increment (oshirish) amali ― ++
Dekriment (kamaytirish) amali ― --
Bu amallarni faqat butun tiplar ustuda bajarsangiz natija ham butun tipda bo’ladi. Misol uchun 5/2 bo’lish amali natijasi 2 (2.5 emas), 5/(-3) bo’lish natijasi -1 (faqat butun tip) va hakoza. Bu matematika uchun noodatiy bo’lsa ham lekin dasturlash uchu tabiy xoldir. Agar ikkala operanda xam bir xil tipga ega bo’lsa natija ham shu tipda bo’ladi. Misol uchun 5.0/2 yokli 5.0/2.0 qilib yozsak natija 2.5 bo’ladi.
public class MainClass {
public static void main(String[] args) {
int a = 5, b = 15, c;
c = a + b;
System.out.println("c="+c);
byte b1 = 15, b2 = 3, b3;
b3 = (byte) (b1 - b2);
System.out.println("b3="+b3);
int q = a % 2;
System.out.println("q="+q);
}
}
Natija:
c=20
b3=12
q=1
Inkrement va decrement amallari oshirish va kamayish manolarini anglatadi. Bu amallar constantalar ustuda emas, balki o’zgaruvchilar ustida bajariladi , 5++ yoki (a+b)++ yozish mumkin emas.
Misol uchun i o’zgaruvchining qiymati 99 bo’lsin , i++ amalidan so’ng i ning qiymati 100 bo’ladi, j o’zgaruvchining qiymati 99 bo’lsin, j-- amalidan so’ng j ning qiymati 98 bo’ladi.
Bu amallarning qiziq tarafi shundaki ++i va ++j qilib yozsa ham bo’ladi. Farqi shundan iboratki birinchi shaklda avval o’zgaruvchi qiymati saqlanib keyin o’zgaradi(postfikis),ikkinchi shaklda avval qiymat o’zgarib keyin amal bajariladi(perefikist).Quyudagi misoldan yanada yaxshiroq tushunish mumkin: k o’zgaruvchining dastlabki qiymati 5 bo’lsin, k+++3 bunda natija 8 bo’ladi,++k+3 bo’lsa 9 bo’ladi.
Misol:
public class MainClass {
public static void main(String[] args) {
int k=1;
++k;
System.out.println(k);
int j=15;
System.out.println(j++);
System.out.println(j);
j=++j+(++j);
System.out.println(j);
}
}
Natija:
2
15
16
35
Haqiqiy tiplar.
Java dasturlash tilida haqiqiy tip ikki xil bo’ladi. Ular float va double. Haqiqiy tiplar xarakteristikasini quyudagi jadvalda ko’rishingiz mumkin:
Eslatma
Butun tiplar ustudagi barcha amallar haqiqiy tiplar ustuda ham bajariladi.
Do'stlaringiz bilan baham: |