Operasi aritmatika
Mari kita mulai dengan hal yang paling sederhana - dengan operasi aritmatika. Ini adalah penjumlahan yang terkenal (+), pengurangan (-), perkalian (*) dan pembagian (/).
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
System.out.println(x+y);
System.out.println(x-y);
System.out.println(x*y);
System.out.println(x/y);
}
}
Keluaran konsol:
1032
966
32967
30
Anda sudah menggunakan semua ini. Anda dapat menambahkan operasi ke dalamnya %
- sisa pembagian.
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 33%2;
System.out.println(y);
}
}
Keluaran konsol:
1
Dalam contoh ini, kita membagi 33 dengan 2. Hasilnya, kita mendapatkan 16 dan masih ada “ekor” tambahan yang tidak habis dibagi 2 - satu. “Ekor” ini adalah hasil operasi “sisa pembagian”. Java (dan juga matematika) mengimplementasikan operator perbandingan . Anda mungkin juga mengenal mereka dari sekolah:
- sama dengan (
==
) - lagi (
>
) - lebih sedikit (
<
) - lebih dari atau sama dengan (
>=
) - kurang dari atau sama dengan (
<=
) - tidak sama (
!=
)
==
, dan tidak dengan satu tanda =
. Tanda unit =
di Java adalah operator penugasan, di mana suatu variabel diberi nomor, string, atau nilai variabel lain.
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x=y);// expect false to be printed to the console
}
}
Keluaran konsol:
999
Ups! Ini jelas bukan hasil yang kami harapkan. Ini adalah jenis data yang benar-benar berbeda: kami mengharapkan untuk melihat boolean
, namun mendapat nomor. Hal ini karena dalam tanda kurung kita mempunyai operasi penugasan, bukan perbandingan. x=y
Nilai y
(999) ditetapkan ke variabel x
, lalu kami mencetaknya x
ke konsol. Pilihan yang benar:
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x==y);
}
}
Keluaran konsol:
false
Sekarang kita telah membandingkan 2 angka tersebut dengan benar! :) Fitur lain dari operasi penugasan ( =
) adalah dapat dilakukan secara “rantai”:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
int z = 256;
x = y = z;
System.out.println(x);
}
}
Keluaran konsol:
256
Ingat: tugas dilakukan dari kanan ke kiri. Ekspresi ini ( x = y = z
) akan dieksekusi dalam langkah-langkah:
- y = z, yaitu y = 256
- x = y, yaitu x = 256
Operasi unary
Mereka disebut "unary" dari kata "uno" - "one". Mereka mendapat nama ini karena, tidak seperti yang sebelumnya, dilakukan pada satu nomor, dan bukan pada beberapa nomor. Ini termasuk:-
Minus unary. Ini membalikkan tanda angka tersebut.
public class Main { public static void main(String[] args) { int x = 999; // change the sign for the first time x = -x; System.out.println(x); // change the sign a second time x= -x; System.out.println(x); } }
Keluaran konsol:
-999 999
Kami menggunakan minus unary dua kali. Hasilnya, angka kami awalnya menjadi negatif, lalu positif lagi!
-
Kenaikan (
++
) dan penurunan (--
)Suatu operasi
++
akan menambah suatu bilangan sebanyak satu, dan suatu operasi--
akan memperkecil bilangan tersebut sebanyak satuan yang sama.public class Main { public static void main(String[] args) { int x = 999; x++; System.out.println(x); x--; System.out.println(x); } }
Keluaran konsol:
1000 999
x++
- notasi postfix ++x
- notasi awalan Apa perbedaan mendasar jika diberi tanda plus dan minus sebelum atau sesudah suatu bilangan? Mari kita lihat dalam sebuah contoh:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
}
}
Keluaran konsol:
999
Apakah ada yang salah! Kami ingin menambah x
1 dan memberikan nilai baru ke variabel y
. Artinya, y harus sama dengan 1000. Tapi kita punya hasil yang berbeda - 999. Ternyata x
tidak bertambah, dan operasi kenaikan tidak berhasil? Bagaimana cara kerjanya. Untuk memverifikasi ini, coba cetak x ke konsol di akhir :)
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
System.out.println(x);
}
}
Keluaran konsol:
999
1000
Faktanya, itulah sebabnya operasi postfix disebut demikian: operasi ini dilakukan setelah ekspresi utama. Artinya, dalam kasus kita: int y = x++;
pertama dieksekusi y = x
(dan variabel y akan diberi nilai awal x
), dan baru kemudian x++
... Bagaimana jika kita tidak puas dengan perilaku ini? Anda perlu menggunakan notasi awalan:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = ++x;
System.out.println(y);
}
}
Dalam hal ini akan berfungsi terlebih dahulu ++x
dan baru setelah itu.Perbedaan y = x;
ini perlu segera diingat agar tidak membuat kesalahan dalam program nyata, di mana semua perilaku dapat menjadi terbalik karenanya :)
Operasi gabungan
Selain itu, di Java ada yang disebut operasi gabungan. Mereka menggunakan kombinasi dua operasi:- Penugasan
- Operasi aritmatika
+=
-=
*=
/=
%=
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
x += y;
System.out.println(x);
}
}
Keluaran konsol:
1032
x += y
cara x = x + y
. Agar singkatnya, dua karakter berturut-turut digunakan. Ini juga berfungsi dengan kombinasi -=
, *=
, /=
dan %=
.
Operasi logis
Selain operasi pada angka, Java juga memiliki operasi pada variabel Boolean -true
dan false
. Operasi ini dilakukan dengan menggunakan operator logika
-
!
— Operator “TIDAK”. Membalikkan nilai variabel booleanpublic class Main { public static void main(String[] args) { boolean x = true; System.out.println(!x); } }
Keluaran konsol:
false
-
&&
— operator “DAN”. Mengembalikan nilaitrue
hanya jika kedua operan adalahtrue
.public class Main { public static void main(String[] args) { System.out.println(100 > 10 && 100 > 200); System.out.println(100 > 50 && 100 >= 100); } }
Keluaran konsol:
false true
Hasil dari operasi pertama adalah
false
, karena salah satu kondisinya salah, yaitu 100 > 200. Operator mengharuskan semua kondisi benar (seperti pada baris kedua misalnya)&&
agar dapat mengembalikan .true
-
||
— Operator “ATAU”. Mengembalikantrue
ketika setidaknya salah satu operan benar.Di sini contoh kita sebelumnya akan bekerja secara berbeda:
public class Main { public static void main(String[] args) { System.out.println(100 > 10 || 100 > 200); } }
Keluaran konsol:
true
Выражение 100 > 200 по-прежнему ложно, но оператору “or” вполне достаточно, что первая часть (100 > 10) является истинной.
GO TO FULL VERSION