FindBugs рдЬрд╛рд╡рд╛ рдмреЗрд╣рддрд░ рд╕реАрдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ

рд╕реНрдЯреЗрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдХреЛ рдЗрдирдЯреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдХреА рдЧрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдХреА рдЧрдИ рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рддрдереНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ рдЗрд╕реЗ рдзреНрдпрд╛рди рд╕реЗ рдкрдврд╝рд╛ рд╣реИред рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдЖрдкрдХреЛ рд╕рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рддрдирд╛ рджреА рдЬрд╛рддреА рд╣реИред

рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдПрдХ рдЕрдиреБрднрд╡реА рджреЛрд╕реНрдд рдХреА рддрд░рд╣ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдмрдЧрд▓ рдореЗрдВ рдмреИрдарддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдХреЛрдб рд▓рд┐рдЦрддрд╛ рд╣реИред рд╡рд╣ рди рдХреЗрд╡рд▓ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реИ: "рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдирдХрд▓ рдХрд░рддреЗ рд╕рдордп рдЧрд▓рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛", рд▓реЗрдХрд┐рди рд╡рд╣ рдХрд╣рддрд╛ рд╣реИ: "рдирд╣реАрдВ, рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЛ рд╕реНрд╡рдпрдВ рджреЗрдЦреЗрдВ"ред рдРрд╕рд╛ рдХреЙрдорд░реЗрдб рд╕реНрд╡рдпрдВ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЙрди рдЪреАрдЬреЛрдВ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдЬреЛ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреБрдк рд╣реИрдВ рдЬрд┐рдирдХреА рдЖрдкрдХреЛ рдХрднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВ рдЬрд╛рд╡рд╛ рдХреЗ рдХреБрдЫ рдкреЗрдЪреАрджрдЧрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдБрдЧрд╛ рдЬреЛ рдореИрдВрдиреЗ рдлрд╛рдЗрдВрдбрдмрдЧреНрд╕ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрд╛ рдерд╛ред рд╢рд╛рдпрдж рдЖрдкрдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЪреАрдЬреЗрдВ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реЛрдВрдЧреАред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕рднреА рдЙрджрд╛рд╣рд░рдг рд╕рдЯреНрдЯрд╛ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВред

рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ ?:


рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рднреА рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдиреБрдХрд╕рд╛рди рд╣реИрдВред рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдбрд┐рдЬрд╛рдЗрдиреЛрдВ рдореЗрдВ рдХреЛрдИ рдмреБрдирд┐рдпрд╛рджреА рдЕрдВрддрд░ рдирд╣реАрдВ рдерд╛
Type var = condition ? valTrue : valFalse; 
рдФрд░
 Type var; if(condition) var = valTrue; else var = valFalse; 

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╕реВрдХреНрд╖реНрдорддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдПрдХ рдЬрдЯрд┐рд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдорд╛рдиреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдЗ-рдлреЙрд░реНрдо рдореЗрдВ рд╕рд╣реА рд╕реНрдерд┐рддрд┐ рд╣реИ, рддреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдЯрд╛рдЗрдк рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рд╡реИрдЯрд▓ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдкрд╣рд▓реЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡реИрд▓рдЯреНрдпреВ рдФрд░ рд╡реЗрд▓рдлреНрд▓реЗрд╕ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ (рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╡реЗрд▓рдлреНрд▓реЗрд╕ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рдФрд░ рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдо рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдЯрд╛рдЗрдк рдХрд░реЗрдВред рдЬрд╝рдмрд░рджрд╕реНрддреА рдХреЗ рдирд┐рдпрдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реИрдВ рдпрджрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдКрдкрд░ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ (рдФрд░ рдбрдмрд▓, рдЖрджрд┐) рдХреЗ рдКрдкрд░ рдЖрд╡рд░рдг рдореМрдЬреВрдж рд╣реИрдВред рд╕рднреА рдирд┐рдпрдо рдЬреЗрдПрд▓рдПрд╕ 15.25 рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИрдВред рдЖрдЗрдП рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред

 Number n = flag ? new Integer(1) : new Double(2.0); 

рдЕрдЧрд░ рдЭрдВрдбрд╛ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рддреЛ n рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? 1.0 рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде рдбрдмрд▓ рдСрдмреНрдЬреЗрдХреНрдЯред рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЕрдирд╛рдбрд╝реА рдкреНрд░рдпрд╛рд╕ рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИрдВред рдЪреВрдВрдХрд┐ рджреВрд╕рд░реЗ рдФрд░ рддреАрд╕рд░реЗ рддрд░реНрдХ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдЖрд╡рд░рдг рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рдВрдХрд▓рдХ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдкреНрд░рдХрд╛рд░ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбрдмрд▓) рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдмреЙрдХреНрд╕рд┐рдВрдЧ рдлрд┐рд░ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рдХреЛрдб рдЗрд╕рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ:
 Number n; if( flag ) n = Double.valueOf((double) ( new Integer(1).intValue() )); else n = Double.valueOf(new Double(2.0).doubleValue()); 

рд╕рдВрдХрд▓рдХ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдХреЛрдб рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдареАрдХ рд╕рдВрдХрд▓рди рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди FindBugs рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИ:
BX_UNBOXED_AND_COERCED_FOR_TERNARY_OPERATOR: рдЖрджрд┐рдо рдорд╛рди рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╣реИ рдФрд░ TestTernary.main (рд╕реНрдЯреНрд░рд┐рдВрдЧ []] рдореЗрдВ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП coerced рд╣реИ

рдПрдХ рд▓рд┐рдкрдЯреЗ рд╣реБрдП рдЖрджрд┐рдо рдореВрд▓реНрдп рдХреЛ рдЕрдирдмреЙрдХреНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рд╢рд░реНрдд рдЯрд░реНрдирд░реА (рдмреА 1! рдИ 1: рдИ 2 рдСрдкрд░реЗрдЯрд░) рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рджреВрд╕рд░реЗ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд╛рд╡рд╛ рдЬрдирд╛рджреЗрд╢ рдХрд╛ рд╢рдмреНрджрд╛рд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ e1 рдФрд░ e2 рд╕рд╛рдВрдЦреНрдпрд┐рдХ рдорд╛рдиреЛрдВ рд╕реЗ рд▓рд┐рдкрдЯреЗ рд╣реБрдП рд╣реИрдВ, рддреЛ рдорд╛рди рдЕрдирдмреЙрдХреНрд╕ рдФрд░ рд░реВрдкрд╛рдВрддрд░рд┐рдд / рдЙрдирдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП coerced рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ e1 рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИ рддреЛ Integer рдФрд░ e2 рдкреНрд░рдХрд╛рд░ рдлреНрд▓реЛрдЯ рдХрд╛ рд╣реИ, рддреЛ e1 рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реИ, рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ) рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдмрд┐рдВрджреБ рдорд╛рди, рдФрд░ рдмреЙрдХреНрд╕рд┐рдВрдЧред JLS рдзрд╛рд░рд╛ 15.25 рджреЗрдЦреЗрдВред
рдмреЗрд╢рдХ, рдлрд╛рдЗрдВрдбрдмрдЧреНрд╕ рдиреЗ рдЪреЗрддрд╛рд╡рдиреА рджреА рд╣реИ рдХрд┐ Integer.valueOf (1) рдирдП рдЗрдВрдЯреЗрдЧрд░ (1) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рд░ рдХреЛрдИ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддрд╛ рд╣реИред

рдпрд╛ рдЗрд╕ рддрд░рд╣ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 Integer n = flag ? 1 : null; 

рдпрджрд┐ рдзреНрд╡рдЬ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ рддреЛ рд▓реЗрдЦрдХ n рдХреЛ n рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛? рд╣рд╛рдВред рд▓реЗрдХрд┐рди рдЬрдЯрд┐рд▓ рдХрд░реЗрдВ:
 Integer n = flag1 ? 1 : flag2 ? 2 : null; 

рдРрд╕рд╛ рд▓рдЧреЗрдЧрд╛ рдХрд┐ рдмрд╣реБрдд рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдм, рдпрджрд┐ рджреЛрдиреЛрдВ рдзреНрд╡рдЬ рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд░реЗрдЦрд╛ NullPointerException рдХреЛ рдлреЗрдВрдХрддреА рд╣реИред рд╕рд╣реА рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк рдЗрдВрдЯ рдФрд░ рдЕрд╢рдХреНрдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рдХрд╛рд░ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИред рдмрд╛рдИрдВ рдУрд░ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдЗрдВрдЯ рдФрд░ рдЗрдВрдЯреАрдЧрд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкрд░рд┐рдгрд╛рдо рдЕрдВрддрд░ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ intValue рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдЕрдирдмреЙрдХреНрд╕рд┐рдВрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИред рдХреЛрдб рдЗрд╕рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ:
 Integer n; if( flag1 ) n = Integer.valueOf(1); else { if( flag2 ) n = Integer.valueOf(Integer.valueOf(2).intValue()); else n = Integer.valueOf(((Integer)null).intValue()); } 

рдпрд╣рд╛рдВ FindBugs рджреЛ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдкрд░ рд╕рдВрджреЗрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ:
BX_UNBOXING_IMMEDIATELY_REBOXED: рдмреЙрдХреНрд╕рд┐рдВрдЧ рдорд╛рди рдЕрдирдмреЙрдХреНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рддреБрд░рдВрдд TestTernary.main (рд╕реНрдЯреНрд░рд┐рдВрдЧ []) рдореЗрдВ рд░реАрдмреЙрдХреНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
NP_NULL_ON_SOME_PATH: TestTernary.main (рд╕реНрдЯреНрд░рд┐рдВрдЧ []] рдореЗрдВ рдЕрд╢рдХреНрдд рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ рдирд▓
рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреА рдПрдХ рд╢рд╛рдЦрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдпрджрд┐ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╢реВрдиреНрдп рдорд╛рди dereferenced рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдкрд░ NullPointerException рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред

рдЦреИрд░, рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЕрдВрддрд┐рдо рдЙрджрд╛рд╣рд░рдг:
 double[] vals = new double[] {1.0, 2.0, 3.0}; double getVal(int idx) { return (idx < 0 || idx >= vals.length) ? null : vals[idx]; } 

рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рдХреЛрдб рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдХреИрд╕реЗ рдПрдХ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рдХреЗ рд░рд┐рдЯрд░реНрди рдХреЛ рд╢реВрдиреНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдпрд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реИ рдХрд┐ рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдВрдХрд▓рди рдХрд░рддрд╛ рд╣реИред рдЦреИрд░, рдпрд╣ рдХреНрдпреЛрдВ рд╕рдВрдХрд▓рди рдХрд░рддрд╛ рд╣реИ - рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдордЭрддреЗ рд╣реИрдВред

DateFormat


рдЬрд╛рд╡рд╛ рдореЗрдВ рджрд┐рдирд╛рдВрдХ рдФрд░ рд╕рдордп рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрди рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ рдЬреЛ DateFormat рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
 public String getDate() { return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); } 

рдЕрдХреНрд╕рд░ рдПрдХ рд╡рд░реНрдЧ рд╕рдорд╛рди рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХрдИ рд▓реЛрдЧ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдЖрдПрдВрдЧреЗ: рдЬрдм рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рд╣рд░ рдмрд╛рд░ рдПрдХ рдкреНрд░рд╛рд░реВрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрдпреЛрдВ рдмрдирд╛рдПрдВ?
 private static final DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public String getDate() { return format.format(new Date()); } 

рдпрд╣ рдмрд╣реБрдд рд╕реБрдВрджрд░ рдФрд░ рд╢рд╛рдВрдд рд╣реИ, рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ DateFormat рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдХрд╣рддрд╛ рд╣реИ :
рджрд┐рдирд╛рдВрдХ рдкреНрд░рд╛рд░реВрдк рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдирд╣реАрдВ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдереНрд░реЗрдб рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдкреНрд░рд╛рд░реВрдк рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдХрдИ рд╕реВрддреНрд░ рд╕рдорд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдПрдХ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдмрд╛рд╣реНрдп рд░реВрдк рд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдФрд░ рдпрд╣ рд╕рдЪ рд╣реИ рдЕрдЧрд░ рдЖрдк SimpleDateFormat рдХреЗ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рдкреНрд░рд╛рд░реВрдк () рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдСрдмреНрдЬреЗрдХреНрдЯ рдХрдХреНрд╖рд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рджреЛ рдзрд╛рд░рд╛рдУрдВ рд╕реЗ SimpleDateFormat рдХрд╛ рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдЧрд▓рдд рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рд▓реЗ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ FindBugs рдХреНрдпрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE: TestDate.getDate рдореЗрдВ рд╕реНрдереИрддрд┐рдХ java.text.DateFormat рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ ()
рдЬреИрд╕рд╛ рдХрд┐ JavaDoc рдмрддрд╛рддрд╛ рд╣реИ, DateFormats рдмрд╣реБрджрд▓реАрдп рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИрдВред рдбрд┐рдЯреЗрдХреНрдЯрд░ рдиреЗ DateFormat рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдкрд╛рдпрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕реНрдерд┐рд░ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╕рдВрджрд┐рдЧреНрдз рд▓рдЧ рд░рд╣рд╛ рд╣реИред

рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рд╕рди рдмрдЧ # 6231579 рдФрд░ рд╕рди рдмрдЧ # 6178997 рджреЗрдЦреЗрдВ ред

рдмрд┐рдЧрдбреЗрд╕реАрдорд▓ рдХреЗ рдиреБрдХрд╕рд╛рди


рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рдмрд┐рдЧрдбреЗрд╕рд┐рдорд▓ рд╡рд░реНрдЧ рдЖрдкрдХреЛ рдордирдорд╛рдиреА рд╕рдЯреАрдХрддрд╛ рдХреЗ рднрд┐рдиреНрдирд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЗрд╕рдореЗрдВ рдбрдмрд▓ рд╕реЗ рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реИ, рдХреБрдЫ рддрдп рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
 System.out.println(new BigDecimal(1.1)); 

рдХреЛрдИ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдордирд╛ рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдкрд░рд┐рдгрд╛рдо рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ: 1.100000000000000088817841970012523233890533447265625ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ IEEE754 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рдЖрджрд┐рдо рдбрдмрд▓ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ 1.1 рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ (рдмрд╛рдЗрдирд░реА рдиреЛрдЯреЗрд╢рди рдореЗрдВ, рдПрдХ рдЕрдирдВрдд рдЖрд╡рдзрд┐рдХ рдЕрдВрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ)ред рдЗрд╕рд▓рд┐рдП, 1.1 рдХреЗ рдХрд░реАрдм рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рд╡рд╣рд╛рдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ BigDecimal рдХрд╛ рдирд┐рд░реНрдорд╛рддрд╛ (рдбрдмрд▓), рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ IEEE754 рдореЗрдВ рджреА рдЧрдИ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджрд╢рдорд▓рд╡ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ (рдЕрдВрддрд┐рдо рдмрд╛рдЗрдирд░реА рдЕрдВрд╢ рд╣рдореЗрд╢рд╛ рдЕрдВрддрд┐рдо рджрд╢рдорд▓рд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрддрд╛ рд╣реИ)ред рдпрджрд┐ рдЖрдк рдареАрдХ 1.1 рдХреЛ рдмрд┐рдЧрдбреЗрд╕рд┐рдорд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдпрд╛ рддреЛ new BigDecimal("1.1") рдпрд╛ BigDecimal.valueOf(1.1) рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред BigDecimal.valueOf(1.1) ред рдпрджрд┐ рдЖрдк рддреБрд░рдВрдд рдирдВрдмрд░ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдпрд╣ рдирд╣реАрдВ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХрд╣рд╛рдБ рд╕реЗ рдЖрддреА рд╣реИред рдлрд╛рдЗрдВрдбрдмрдЧреНрд╕ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ DMI_BIGDECIMAL_CONSTRUCTED_FROM_DOUBLE, рдЬреЛ рдПрдХ рд╣реА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реИред

рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рдмрд╛рдд рдФрд░ рд╣реИ:
 BigDecimal d1 = new BigDecimal("1.1"); BigDecimal d2 = new BigDecimal("1.10"); System.out.println(d1.equals(d2)); 

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдбреА 1 рдФрд░ рдбреА 2 рдПрдХ рд╣реА рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░рд┐рдЯрд░реНрди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рди рдХреЗрд╡рд▓ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдореВрд▓реНрдп рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╡рд░реНрддрдорд╛рди рдХреНрд░рдо (рджрд╢рдорд▓рд╡ рд╕реНрдерд╛рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛) рднреА рд╣реИред рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдкрд░рд┐рдЪрд┐рдд рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдмрд░рд╛рдмрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝реЗрдВрдЧреЗред рдРрд╕реА рд╕рдорд╕реНрдпрд╛ рддреБрд░рдВрдд рд╕рд╛рдордиреЗ рдирд╣реАрдВ рдЖ рд╕рдХрддреА рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдлрд╛рдЗрдВрдбрдмрдЧреНрд╕ рдиреЗ рдЦреБрдж рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рджреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИ - fb-contrib , рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рдмрдЧ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ:
MDM_BIGDECIMAL_EQUALS

рджреЛ java.math.BigDecimal рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд░рд╛рдмрд░ () рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдЖрдо рддреМрд░ рдкрд░ рдПрдХ рдЧрд▓рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рджреЛ рдмрд┐рдЧрдбрд┐рдорд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗрд╡рд▓ рд╕рдорд╛рди рд╣реИрдВ рдпрджрд┐ рд╡реЗ рдореВрд▓реНрдп рдФрд░ рдкреИрдорд╛рдиреЗ рджреЛрдиреЛрдВ рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВ, рддреЛ рдпрд╣ 2.0 рдХреЗ рдмрд░рд╛рдмрд░ 2.00 рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИред рдЧрдгрд┐рддреАрдп рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП BigDecimal рд╡рд╕реНрддреБрдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдмрдЬрд╛рдп ComparTo () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд▓рд╛рдЗрди рдлреАрдб рдФрд░ рдкреНрд░рд┐рдВрдЯрдл


рдЕрдХреНрд╕рд░, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╕реА рдХреЗ рдмрд╛рдж рдЬрд╛рд╡рд╛ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдерд╛, рд╡реЗ PrintStream.printf (рд╕рд╛рде рд╣реА PrintWriter.printf , рдЖрджрд┐) рдХреЛ рдЦреЛрдЬрдХрд░ рдЦреБрд╢ рд╣реИрдВред рдЬреИрд╕реЗ, рдареАрдХ рд╣реИ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐, рд╕реА рдХреА рддрд░рд╣, рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдирдпрд╛ рд╕реАрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорддрднреЗрдж рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд▓рд╛рдЗрди рдлреАрдб рдореЗрдВ рд╣реИред

рд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рдкрд╛рда рдФрд░ рдмрд╛рдЗрдирд░реА рдзрд╛рд░рд╛рдУрдВ рдореЗрдВ рдПрдХ рд╡рд┐рднрд╛рдЬрди рд╣реИред рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкрд╛рда рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╡рд░реНрдг '\ n' рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд┐рд╕реНрдЯрдо-рдирд┐рд░реНрднрд░ рд▓рд╛рдЗрди рдлрд╝реАрдб (рд╡рд┐рдВрдбреЛрдЬ рдкрд░ "\ r \ n") рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЬрд╛рд╡рд╛ рдореЗрдВ рдРрд╕рд╛ рдХреЛрдИ рдЕрд▓рдЧрд╛рд╡ рдирд╣реАрдВ рд╣реИ: рдЖрдкрдХреЛ рд╡рд░реНрдгреЛрдВ рдХреЗ рд╕рд╣реА рдЕрдиреБрдХреНрд░рдо рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, PrintStream.println рдкрд░рд┐рд╡рд╛рд░ рдХреЗ рддрд░реАрдХреЛрдВ рд╕реЗред рд▓реЗрдХрд┐рди рдкреНрд░рд┐рдВрдЯрдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ '\ n' рдкрд╛рд╕ рдХрд░рдирд╛ рд╕рд┐рд░реНрдл '\ n' рд╣реИ, рди рдХрд┐ рд╕рд┐рд╕реНрдЯрдо-рдирд┐рд░реНрднрд░ рд▓рд╛рдЗрди рдлреАрдбред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд▓рд┐рдЦреЗрдВ:
 System.out.printf("%s\n", "str#1"); System.out.println("str#2"); 

рдкрд░рд┐рдгрд╛рдо рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ:

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рдПрдХ рдзрд╛рдЧреЗ рдореЗрдВ рд▓рд╛рдЗрди рдлреАрдб рдХрд╛ рдПрдХ рдЕрдЬреАрдм рд╕рдВрдпреЛрдЬрди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЧрдиреНрджрд╛ рджрд┐рдЦрддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдкрд╛рд░реНрд╕рд░ рдХреЛ рдлрд╛рдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рд▓рдВрдмреЗ рд╕рдордп рддрдХ рддреНрд░реБрдЯрд┐ рдХреЛ рдиреЛрдЯрд┐рд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдк рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдпреВрдирд┐рдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рд┐рдВрдЯрдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╣реА рд▓рд╛рдЗрди рдлреАрдб рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╛рд░реВрдк рдЪрд░рд┐рддреНрд░ "% n" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ FindBugs рдХреНрдпрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
VA_FORMAT_STRING_USES_NEWLINE: рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ TestNewline.main (рд╕реНрдЯреНрд░рд┐рдВрдЧ []) рдореЗрдВ \ n рдХреЗ рдмрдЬрд╛рдп% n рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдПрдХ рдирдИ рдкрдВрдХреНрддрд┐ рд╡рд░реНрдг (\ n) рд╢рд╛рдорд┐рд▓ рд╣реИред рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ, рдЖрдорддреМрд░ рдкрд░% n рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рд╛рдЗрди рд╡рд┐рднрд╛рдЬрдХ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛ред


рд╢рд╛рдпрдж рдХреБрдЫ рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЬреНрдЮрд╛рдд рд╣реИрдВред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдЙрдирдХреЗ рд▓рд┐рдП рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕реЗ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЪреЗрддрд╛рд╡рдиреА рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреА рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЦреЛрд▓реЗрдЧреАред

Source: https://habr.com/ru/post/In201334/


All Articles