Ո՞րն է Java- ում «++ x» և «x = x + 1» արտահայտությունների տեխնիկական տարբերությունը:


պատասխանել 1:

Հարգելի բարեկամ, խնդրում եմ ասեք ձեր ուսուցչին, որ նա ինքն է պատասխանել այս տեսակի հարցերին, այնպես որ նրանք մասնագետներ են:

Համենայն դեպս, մենք գալիս ենք հարցի.

Եկեք ասենք x = 9. Եթե մենք հիմա օգտագործում ենք ++ x – ը արտահայտություններից մեկում, նշանակում է, որ նախ X – ի արժեքն ավելացվում է, այնուհետև օգտագործվում է, այսինքն ՝ որտեղ էլ որ օգտագործեք ++ x, 10 – ի արժեքն օգտագործվում է 9 – ի փոխարեն: իսկ արժեքը մնում է 10-ը մինչև մեկ այլ փոփոխություն տեղի ունենա:

Եթե ​​մենք այժմ օգտագործում ենք (x = x + 1 կամ x + = 1 կամ x ++), ապա արժեքը նախ օգտագործվում է, այնուհետև `ավելացված: Արտահայտությունը, որտեղ x = x + 1 առաջին համար օգտագործվում է 9-րդ արժեքը, այնուհետև 10 արժեքը պահվում է x- ում, մինչև այլ փոփոխություն տեղի ունենա:

Կարծում եմ ՝ տարբերությունը պարզ է: Եթե ​​ոչ, մեկնաբանություն թողեք:


պատասխանել 2:
class quora {public static void main (String [] args) {int x = 5; x = x + 1; System.out.println (x); x ++; System.out.println (x); }
Կազմված է «quora.java» դասի quora {quora (); Կոդ ՝ 0: aload_0 1: զանգահարում է հատուկ # 1 // մեթոդ java / lang / Object. "" :() V 4. Վերադարձնել հանրային ստատիկ ուժը կորցրած հիմնական (java.lang.String []); Կոդ ՝ 0: iconst_5 1: istore_1 2: iload_1 3: iconst_1 4: iadd // x = x + 1 5: istore_1 6: getstatic # 2 // դաշտ java / lang / System.out: Ljava / io / PrintStream; 9: iload_1 10: invokevirtual # 3 // մեթոդ java / io / PrintStream.println: (I) V 13: iinc 1, 1 // x ++ 16: getstatic # 2 // դաշտ java / lang / System.out: Ljava / io / PrintStream; 19: iload_1 20: invokevirtual # 3 // Method java / io / PrintStream.println: (I) V 23: Return