Sự khác biệt giữa i++ và ++i trong java

Lúc mới học lập trình mình cứ nghe phong phanh dùng ++i cho nó nhanh hơn, ++i nhìn chuyên nghiệp hơn, code đẹp hơn bla bla. Mà thiệt ngày xưa mình quen máy đứa code ++i là auto code giỏi vcl. Mình cũng đã thử đổi theo style xem có code ghê hơn không =) ai ngờ cũng vậy các bạn ạ!

Sự khác biệt giữa i++ và ++i

Ở trên mình nói vui vậy chứ thế éo nào code ++i lại giỏi lên được cơ chứ. Xem ví dụ bên dưới

int a=0, b=0;
a++; // a = 1
++b; // b = 1
b = ++a; // b = a = 2
a = b++; // a = 2, b = 3

++i: tăng giá trị i lên 1 và trả về giá trị mới i + 1.
i++: Tăng giá trị i lên 1 nhưng trả về giá trị cũ i.

Một điểm đáng lưu ý ở đây, không nên nhầm lẫn là i++ sẽ trả về giá trị i cho phép gán trước khi nó được tăng lên. Phép gán luôn thực hiện sau cùng, nên điều đó là không thể nhé.

Về bản chất chương trình sẽ tạo ra một biến tạm (temp) để lưu giá trị ban đầu của i và trả về giá trị đó cho phép gán sau khi phép toán i++ thực hiện xong.

int plus(int i) {
    int temp = i;
    i = i + 1;
    return temp;
}

Hiệu năng giữa ++i và i++

Điểm khác nhau duy nhất giữa ++ii++i++ phải tạo thêm một biến tạm để lưu giá trị cũ trong khi ++i thì không cần. Nên đâu đó ++i có thể sẽ nhanh hơn một tí mà thật ra cũng không đáng kể nên các bạn có thể bỏ qua. Dùng i++ hay ++i là do sở thích của máy bạn thôi =))). Ngầu lol gì tầm này!

Sử dụng i++ hay ++i trong vòng for

Cái nào cũng được =))) miễn là bạn thích nó không khác biệt gì máy đâu. Mình bây giờ còn chả cần vòng for, cứ foreach, stream đồ cho nó nhanh gọn.

Một số ví dụ i++ và ++i

Ví dụ 1:

class Example {

    public static void main(String args[]) {
        int x = 5;
        int y = 5;
        System.out.println("X : " + plus(x, x++));
        System.out.println("Y : " +plus(y, ++y));

    }

    static int plus(int x, int y) {
        return x + y;
    }
}

Output:

X : 10
Y : 11

Ví dụ 2:

class Example {

    public static void main(String args[]) {
        int x = 5;
        int y = 5;
        System.out.println("X : " + plus(x++, x++));
        System.out.println("Y : " +plus(++y, ++y));

    }

    static int plus(int x, int y) {
        return x + y;
    }
}

Nguồn tham khảo 

https://techtalk.vn/i-va-i.html

0 0 votes
Article Rating
Subscribe
Notify of
guest
4 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
4
0
Would love your thoughts, please comment.x
()
x