Principal
public class Main { public static void main(String[] args) { Integer a = 127; Integer b = 127; Integer c = 128; Integer d = 128; System.out.println(a == b); System.out.println(c == d); } } package main import "fmt" func main() { x := 1 defer func() { fmt.Println("defer:", x) }() x = 2 fmt.Println("now:", x) }
sobes.tech AI
AIdan javob
Java'da:
Integer a = 127;
Integer b = 127;
Integer c = 128;
Integer d = 128;
System.out.println(a == b); // true
System.out.println(c == d); // false
Tafsilot:
Java - Integer obyektlarini -128 dan 127 gacha bo'lgan diapazonda keshga oladi. Shuning uchun, a va b bir xil obyektga murojaat qiladi va == taqqoslash true ni qaytaradi. Bu diapazondan tashqaridagi qiymatlar uchun yangi obyektlar yaratiladi, shuning uchun c == d false bo'ladi.
Go tilida:
package main
import "fmt"
func main() {
x := 1
defer func() { fmt.Println("defer:", x) }()
x = 2
fmt.Println("hozir:", x)
}
Chiqish quyidagicha bo'ladi:
hozir: 2
defer: 2
Tafsilot:
Go'da, defer bilan kechiktirilgan funksiyalar o'zgaruvchilarni referens bilan tutib oladi, qiymat bilan emas. Shuning uchun, kechiktirilgan funksiya bajarilganda, x ning qiymati allaqachon 2 bo'ladi.