рдпрд╛ рд▓реЗрдЦрд╛рдд, рдЖрдореНрд╣реА рдЬрд╛рд╡рд╛ рдордзреНрдпреЗ long рд▓рд╛ int рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд╕реЗ рдХрд░рд╛рдпрдЪреЗ рдЖрдгрд┐ рдХрд╛рд╣реА рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЗ рдХрд╢реА рд▓рд┐рд╣рд╛рдпрдЪреА рд╣реЗ рд╕рд╛рдВрдЧрдгрд╛рд░ рдЖрд╣реЛрдд . long рд╣рд╛ int рдкреЗрдХреНрд╖рд╛ рдореЛрдард╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдЕрд╕рд▓реНрдпрд╛рдиреЗ , рдпреЗрдереЗ рдЖрдкрдг рдЕрд╢рд╛ рд░реВрдкрд╛рдВрддрд░рдгрд╛рд╕рд╛рдареА type casting рд╡рд╛рдкрд░рд╛рд╡реЗ. рдЬрд╛рд╡рд╛ рдордзреАрд▓ рд▓рд╛рдБрдЧ рдЖрдгрд┐ рдЗрдВрдЯ рд╣реЗ рджреЛрдиреНрд╣реА рдкреНрд░рд┐рдорд┐рдЯрд┐рд╡реНрд╣ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдЖрд╣реЗрдд рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдзреАрдЪ рдорд╛рд╣реАрдд рдЖрд╣реЗ . рдореНрд╣рдгрдЬреЗ рддреЗ рд╡рд░реНрдЧреАрдп рд╡рд╕реНрддреВ рдирд╛рд╣реАрдд. рд╕рд░реНрд╡ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЖрдгрд┐ рдЕреЕрд░реЗ рд╣реЗрдк рд╕реНрдкреЗрд╕рдордзреНрдпреЗ рд╕рд╛рдард╡рд▓реЗ рдЬрд╛рддрд╛рдд рддрд░ рдЗрдВрдЯ рдЖрдгрд┐ рд▓рд╛рдБрдЧ рд╕рд╛рд░рдЦреЗ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рд╕реНрдЯреЕрдХ рдореЗрдорд░реАрдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рд▓рд╛рдВрдм рдЖрдгрд┐ рдЗрдВрдЯ рдХрд╛рд╣реАрд╕реЗ рд╕рдорд╛рди рдЖрд╣реЗрдд. рдкреВрд░реНрдгрд╛рдВрдХ рдореНрд╣рдгрдЬреЗ рдкреВрд░реНрдг рд╕рдВрдЦреНрдпрд╛, рддреА рдзрди, рдЛрдг рдХрд┐рдВрд╡рд╛ рд╢реВрдиреНрдп рдЕрд╕реВ рд╢рдХрддреЗ. рджреЛрдиреНрд╣реА рд▓рд╛рдВрдмрдЖрдгрд┐ int рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдЖрд╣реЗрдд, рдореНрд╣рдгреВрди рддреЗ рдПрдХрд╛ рдкреНрд░рдХрд╛рд░реЗ рд╕реБрд╕рдВрдЧрдд рдЖрд╣реЗрдд. рд╕рдорд╕реНрдпрд╛ рдЕрд╢реА рдЖрд╣реЗ рдХреА, рд▓рд╛рдБрдЧ рдкреНрд░рдХрд╛рд░ -263 рддреЗ 263 тАУ 1, рдХрд┐рдВрд╡рд╛ -9223372036854775808 рддреЗ 9223372036854775807 рдкрд░реНрдпрдВрдд рдЕрд╕рддреЛ. рдореНрд╣рдгрдЬреЗрдЪ рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдХрд╛ рд▓рд╛рдВрдм рдкреНрд░рдХрд╛рд░рд╛рд╕рд╛рдареА 64 рдмрд┐рдЯ рд╡рд╛рдЯрдк рдХрд░рддреЛ. рддреНрдпрд╛рдЪ рд╡реЗрд│реА, int рдкреНрд░рдХрд╛рд░ 32 рдмрд┐рдЯреНрд╕ рд╡реНрдпрд╛рдкрддреЛ, рдЬреНрдпрд╛рдордзреНрдпреЗ рддреБрдореНрд╣реА -231 ╨┤╨╛ 231 - 1 рдХрд┐рдВрд╡рд╛, рдЬреЗ рд╕рдорд╛рди рдЖрд╣реЗ, -2147483648 рддреЗ 2147483647 рдкрд░реНрдпрдВрдд рд╕рдВрдЦреНрдпрд╛ рдареЗрд╡реВ рд╢рдХрддрд╛. рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдХреА int рдкреНрд░рдХрд╛рд░рдЪреА рдХреЛрдгрддреАрд╣реА рд╕рдВрдЦреНрдпрд╛ рд╕рд╣рдЬрдкрдгреЗ рдмрд╕реВ рд╢рдХрддреЗ. рд▓рд╛рдВрдм рдкреНрд░рдХрд╛рд░. рдЬрд╛рд╡рд╛рдордзреНрдпреЗ, рдкреНрд░рд┐рдорд┐рдЯрд┐рд╡реНрд╣рд╕рд╣ рдХрд╛рдо рдХрд░рддрд╛рдирд╛, рдЕрд░реБрдВрдж рдкреНрд░рдХрд╛рд░рд╛рддреВрди рд╡рд┐рд╕реНрддреАрд░реНрдг рдкреНрд░рдХрд╛рд░рд╛рдд рд░реВрдкрд╛рдВрддрд░рдг рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдЖрд╣реЗ. рджреБрд╕рд░реНрдпрд╛ рдкреНрд░рдХрд╛рд░реЗ, рддреНрдпрд╛рд▓рд╛ рд░реБрдВрджреАрдХрд░рдг рдореНрд╣рдгрддрд╛рдд.
int myInt= 18;
long myLong= 16000;
myLong = myInt;
рдпреЗрдереЗ рдЖрдкрдг рдПрдХрд╛ рд▓рд╛рдВрдм рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рд▓рд╛ int рдирд┐рдпреБрдХреНрдд рдХрд░рдд рдЖрд╣реЛрдд . рд╕рд░реНрд╡ рдХрд╛рд╣реА рд╕рд╣рдЬрддреЗрдиреЗ рдЧреЗрд▓реЗ, рдореЛрдареНрдпрд╛ рд╢реНрд░реЗрдгреАрдд, рдПрдХ рд▓рд╣рд╛рди рд╢рд╛рдВрддрдкрдгреЗ рдмрд╕рддреЗ рдЖрдгрд┐ рдЖрдореНрд╣реА рдореЗрдорд░реА рд╕реНрдкреЗрд╕рд╢рд┐рд╡рд╛рдп рдХрд╛рд╣реАрд╣реА рдЧрдорд╛рд╡рдд рдирд╛рд╣реА. рддрд╕реЗ, рдЬреЗрд╡реНрд╣рд╛ рдЖрдкрдг рд▓рд╛рдБрдЧ рдЯрд╛рдИрдкрдЪреЗ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдШреЛрд╖рд┐рдд рдХрд░рддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдЪреЗ рдореВрд▓реНрдп рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЛ, рддреЗрд╡реНрд╣рд╛ рддреНрдпрд╛рд▓рд╛ l рд╣реЗ рдЕрдХреНрд╖рд░ рдирд┐рдпреБрдХреНрдд рдХрд░рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЕрд╕рддреЗ , рдЬреЗрд╡реНрд╣рд╛ рдЖрдкрдг int рд╢реНрд░реЗрдгреАрдмрд╛рд╣реЗрд░реАрд▓ рд╕рдВрдЦреНрдпрд╛рдВрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рддреЛ рддреЗрд╡реНрд╣рд╛ рд╣реЗ рдЙрдкрдпреБрдХреНрдд рдард░реЗрд▓ .
long myVeryLong = 10000000000l;
рдЬрд╛рд╡рд╛ рд▓рд╛рдБрдЧ рдЯреВ рдЗрдВрдЯ рд░реВрдкрд╛рдВрддрд░рдг
рдЖрддрд╛ рдпрд╛ рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрд╛рдХрдбреЗ рд╡рд│реВрдпрд╛ тАФ Java рд▓рд╛рдБрдЧ рдЯреВ рдЗрдВрдЯ рд░реВрдкрд╛рдВрддрд░рдг. рд╕рдорд╕реНрдпрд╛ рдЕрд╢реА рдЖрд╣реЗ рдХреА рдХрд╛рд╣реАрддрд░реА рдореЛрдареЗ рдиреЗрд╣рдореА рд▓рд╣рд╛рди рдЧреЛрд╖реНрдЯреАрдд рдмрд╕рдд рдирд╛рд╣реА. рддреНрдпрд╛рдореБрд│реЗ рдпреЗрдереЗ рдЖрдкрдг Java рдордзреНрдпреЗ рдЖрдкреЛрдЖрдк тАЬрд▓рд╣рд╛рдитАЭ рд▓рд╛ тАЬрдореЛрдареНрдпрд╛тАЭ рдордзреНрдпреЗ рдЯрд╛рдХреВ рд╢рдХрдд рдирд╛рд╣реА. рдЬрд░ рдЖрдкрдг рдорд╛рдЧреАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдкреНрд░рдорд╛рдгреЗ рд╡рд╛рдЧрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛, рдкрд░рдВрддреБ рдЙрд▓рдЯ://example without typecastingтАжnice trying!
public static void main(String[] args) {
int myInt= 18;
long myLong= 16000;
myInt = myLong;
}
Java рдХрдВрдкрд╛рдЗрд▓рд░ рдЖрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рдХрд░реВ рджреЗрдд рдирд╛рд╣реА рдЖрдгрд┐ рддреНрд░реБрдЯреА рдЯрд╛рдХреЗрд▓. рддрд░ рдпрд╛ рдСрдкрд░реЗрд╢рдирд╕рд╛рдареА, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЯрд╛рдЗрдкрдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдореНрд╣рдгрддрд╛рдд рддреЗ рд╡рд╛рдкрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓. рдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрд▓рд╛ рд╕рдВрдХреБрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рд░реВрдкрд╛рдВрддрд░рдг рдореНрд╣рдгрддрд╛рдд. рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рд╕рдВрдХреБрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рддреБрдордЪреЗ рдореВрд▓реНрдп рдХреЛрдгрддреНрдпрд╛ рдкреНрд░рдХрд╛рд░рд╛рдд рдЯрд╛рдХрд╛рдпрдЪреЗ рдЖрд╣реЗ рддреЗ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдпреЗрдереЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЖрд╣реЗ рдЬрд┐рдереЗ рдЖрдкрдг рдПрдХ "рд▓рд╣рд╛рди" рд▓рд╛рдВрдм рддреЗ рдЗрдВрдЯ (рдЬреНрдпрд╛рдордзреНрдпреЗ рдмрд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ) рдЖрдгрд┐ рджреЛрди "рдореЛрдареЗ" рд▓рд╛рдВрдм рд╕рдВрдЦреНрдпрд╛ рдЗрдВрдЯ рд╢реНрд░реЗрдгреАрдмрд╛рд╣реЗрд░ рдареЗрд╡рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рдгрд╛рд░ рдЖрд╣реЛрдд .
public class longToInt {
public static void main(String[] args) {
int myInt = 18;
long myLong = 16000;
long myVeryLong = 2147483648l;//l in the end means тАШlongтАЩ
long myVeryLong = 10000000000l;
myInt = (int) myLong;
System.out.println(myInt);
myInt = (int) oneMoreLong;
System.out.println(myInt);
myInt = (int) myVeryLong;
System.out.println(myInt);
}
}
рдЖрдореНтАНрд╣реА рдХрдВрдкрд╛рдпрд▓рд░рд▓рд╛ рд╕реВрдЪрд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ рдХреА рдЖрдореНтАНрд╣реА рд▓рд╛рдБрдЧ рд╡реНрд╣реЕрд▓реНрдпреВ рдЗрдВрдЯ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдордзреНтАНрдпреЗ рдареЗрд╡реВ рдЗрдЪреНрдЫрд┐рддреЛ рдЖрдгрд┐ рдпрд╛ рдирд┐рд░реНрдгрдпрд╛рдЪреНрдпрд╛ рдкрд░рд┐рдгрд╛рдорд╛рдВрд╕рд╛рдареА рдЖрдореНрд╣реА рдЬрдмрд╛рдмрджрд╛рд░ рдЖрд╣реЛрдд. рд╕рдВрдХрд▓рдХ, рд╕рдВрдХреБрдЪрд┐рдд рдкреНрд░рдХрд╛рд░рд╛рдЪреЗ рд╕реНрдкрд╖реНрдЯ рд╕рдВрдХреЗрдд рдкрд╛рд╣реВрди, рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рддреЛ. рдкрд░рд┐рдгрд╛рдореА, рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдЙрдЯрдкреБрдЯ рдорд┐рд│рддреЗ:
16000 -2147483648 1410065408
рдмрд░рдВ, 16000 рд╣реЗ рдирдХреНрдХреАрдЪ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрд╣реЗ, рдкрдг -2147483648 рдордзреНрдпреЗ рдЙрдгреЗ рдХрд╛ рдЖрд╣реЗ? рдЖрдгрд┐ рдпрд╛ 1410065408 рдЪрд╛ рдЕрд░реНрде рдХрд╛рдп? рд╡рд╕реНрддреБрд╕реНрдерд┐рддреА рдЕрд╢реА рдЖрд╣реЗ рдХреА рдЕрд╢реА рд╕рдВрдЦреНрдпрд╛ рдПрдХрд╛ рд▓рд╛рдВрдм рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реА рдЧреЗрд▓реА рд╣реЛрддреА, рдЬреА рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЖрдард╡рддреЗ, 64 рдмрд┐рдЯ рдШреЗрддреЗ. рдЖрдореНтАНрд╣реА рд╣реЗ рдЖрдХрдбреЗ рдПрдХрд╛ рдЗрдВрдЯ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдордзреНтАНрдпреЗ рдареЗрд╡рдгреНтАНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНтАНрди рдХрд░рдд рдЖрд╣реЛрдд рдЬреЗ рдХреЗрд╡рд│ 32 рдмрд┐рдЯ рд╕рд╛рдард╡реВ рд╢рдХрддрд╛рдд. рдирд┐рдпрдорд╛рдиреБрд╕рд╛рд░, рдпрд╛ 32 рд╕реЗрд▓рдордзреНрдпреЗ рд▓рд╛рдВрдм рд╕рдВрдЦреНрдпреЗрдЪреНрдпрд╛ рдкрд╣рд┐рд▓реНрдпрд╛ 32 рдмрд┐рдЯреНрд╕рдордзреАрд▓ рд╢реВрдиреНрдп рдЖрдгрд┐ рдПрдХ рдЕрд╕реЗрд▓ рдЖрдгрд┐ рдмрд╛рдХреАрдЪреЗ рдЯрд╛рдХреВрди рджрд┐рд▓реЗ рдЬрд╛рддреАрд▓. рдореНрд╣рдгреВрди, рдЬрд░ рдореВрд│ рд╕рдВрдЦреНрдпрд╛ 32 рдмрд┐рдЯреНрд╕рдордзреНрдпреЗ рдмрд╕рдд рдирд╕реЗрд▓, рддрд░ рдЬреЗ рдмрд┐рдЯреНрд╕ рдмрд╕рдд рдирд╛рд╣реАрдд рддреЗ рдЯрд╛рдХреВрди рджрд┐рд▓реЗ рдЬрд╛рддрд╛рдд. рдореНрд╣рдгреВрдирдЪ рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдлрдХреНрдд 16000 рд╣реА рдпреЛрдЧреНрдп рд╕рдВрдЦреНрдпрд╛ рдЖрд╣реЗ, рдХрд╛рд░рдг рддреА 32 рдкреЗрдХреНрд╖рд╛ рдХрдореА рдмрд┐рдЯ рдШреЗрддреЗ.
Java 8 рд▓рд╛рдБрдЧ рдЯреВ рдЗрдВрдЯ рд░реВрдкрд╛рдВрддрд░рдг
Java 8 рдордзреНрдпреЗ, рдореЕрде рдХреНрд▓рд╛рд╕рдордзреНрдпреЗ рдПрдХ рдирд╡реАрди рдкрджреНрдзрдд рдЖрд╣реЗ рдЬреА long рд▓рд╛ int рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░реЗрд▓ . рдпреЗрдереЗ рдЖрд╣реЗ:Math.toIntExact(value);
рдпрд╛ рдкрджреНрдзрддреАрдЪреА рд╕рд░реНрд╡реЛрддреНрдХреГрд╖реНрдЯ рдЧреЛрд╖реНрдЯ рдЕрд╢реА рдЖрд╣реЗ рдХреА рддреА рд░реВрдкрд╛рдВрддрд░рд┐рдд рд╕рдВрдЦреНрдпреЗрдЪреА рд▓рд╛рдВрдмреА рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рдЖрдгрд┐ рдЬрд░ рдореВрд▓реНрдп int рдордзреНрдпреЗ рдмрд╕рдгреНрдпрд╛рд╕рд╛рдареА рдЦреВрдк рдореЛрдареЗ рдЕрд╕реЗрд▓ рддрд░ рддреЗ рдЕрдкрд╡рд╛рдж рдХрд░реЗрд▓. рд╣реЗ рдЖрдордЪреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдд рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рддреЗ рдкрд╛рд╣реВрдпрд╛:
public class intToLong {
public static void main(String[] args) {
int myInt = 18;
long myLong = 16000;
long oneMoreLong = 2147483648l;
long myVeryLong = 10000000000l;
System.out.println(Math.toIntExact(myLong));
int y = Math.toIntExact(oneMoreLong);
System.out.println(oneMoreLong);
System.out.println(Math.toIntExact(myVeryLong));
}
}
рдЖрдЙрдЯрдкреБрдЯ рдЖрд╣реЗ:
рдереНрд░реЗрдб "рдореБрдЦреНрдп" java.lang.ArithmeticException рдордзреАрд▓ 16000 рдЕрдкрд╡рд╛рдж: intToLong.main(intToLong.java:13) рдпреЗрдереЗ java.base/java.lang.Math.toIntExact(Math.java:1080) рдпреЗрдереЗ рдкреВрд░реНрдгрд╛рдВрдХ рдУрд╡реНрд╣рд░рдлреНрд▓реЛ
рдЕрд╢рд╛рдкреНрд░рдХрд╛рд░реЗ, рдкреНрд░реЛрдЧреНрд░рд╛рдордиреЗ рдлрдХреНрдд рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗрд▓рд╛ рдХреНрд░рдорд╛рдВрдХ 16000 рдореБрджреНрд░рд┐рдд рдХреЗрд▓рд╛ рдЖрдгрд┐ рдирдВрддрд░ рд╢реНрд░реЗрдгреАрдмрд╛рд╣реЗрд░реАрд▓ рдХреНрд░рдорд╛рдВрдХ 2147483648l рд▓рд╛ int рдордзреНрдпреЗ рдврдХрд▓рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддрд╛рдирд╛ , рдкрджреНрдзрддреАрдиреЗ рдЕрдкрд╡рд╛рдж рдХреЗрд▓рд╛. рддреНрдпрд╛рдореБрд│реЗ рдХреНрд▓рд╛рд╕рд┐рдХ Java рд▓рд╛рдБрдЧ рдЯреВ рдЗрдВрдЯ рдХрдиреНрд╡реНрд╣рд░реНрдЬрдирдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рдЖрдореНрд╣рд╛рд▓рд╛ рдЯрд╛рдХреВрди рджрд┐рд▓реЗрд▓реНрдпрд╛ рдмрд┐рдЯреНрд╕рдЪреА рд╕рдорд╕реНрдпрд╛ рдирд╛рд╣реА .