01/10/2018, 00:46

Toán tử = trong java

Mọi người giải thích giúp em cái này với ạ.

                boolean bool = true;
		if (bool = false) {
		   System.out.println("a");
		} else if (bool) {
		   System.out.println("b");
		} else if (!bool) {
		   System.out.println("c");
		} else {
		   System.out.println("d");
		}

theo em nghĩ thì chỗ if (bool = false) này chỉ là so sánh bit vì bool = true nên là 0000 và false là 0001 vì 2 bit không bằng nhau nên ko vào if đó tiếp tục đi xuống, theo như kết quả ra c thì em nghĩ là do chỗ đó đã bị gán bằng luôn đúng ko ạ, vậy khi nào biết so sanh bit khi nào gán bằng ạ. Cảm ơn ạ

anon52681320 viết 02:56 ngày 01/10/2018

bool = true nên là 0000 và false là 0001

Học hành vậy có chết không cơ chứ, haiz. True luôn là 0001 và false luôn là 0000. Kiến thức nền tảng không vững chắc rồi ngồi suy ra những cái không logic chút nào.

if(bool = false)
=> chỗ này là phép gán, sau khi gán bool = false, thì nó sẽ thực hiện condition statement, do nó false, nó sẽ bỏ qua a và b, dẫn ra kết quả c (phủ định của phủ định là true)

mmmm viết 02:58 ngày 01/10/2018

|| && == là thuộc về logic vậy
|
&

là phép toán về bit vậy chỗ đó không phải là bool =false thì là so sánh về bit thôi ạ

Nguyen Ca viết 03:02 ngày 01/10/2018

= là phép toàn về bit hả em @@


ref
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html
Bên dưới là code của em được compile ra file class

 boolean bool = true;
    if ((bool = 0) != 0) {
      System.out.println("a");
    } else if (bool) {
      System.out.println("b");
    } else if (!bool) {
      System.out.println("c");
    } else {
      System.out.println("d");
    }

Đi download Java decompile về em sẽ xem được và hiểu

Lương Quang Mạnh viết 02:50 ngày 01/10/2018

Bạn suy luận kiểu đấy thì tốt nhất về học lại đi

mmmm viết 02:47 ngày 01/10/2018

Dạ, đã hiểu ạ, cảm ơn nhiều ạ

Bài liên quan
0