ãã®èšäºã¯ãã¢ã«ããã㯠ã³ãŒã¹ãAdvanced Javaãã®äžéšã§ãããã®ã³ãŒã¹ã¯ãJava ã®æ©èœãå¹æçã«äœ¿çšããæ¹æ³ãåŠç¿ããã®ã«åœ¹ç«ã€ããã«èšèšãããŠããŸãããã®ææã§ã¯ããªããžã§ã¯ãã®äœæã競åãã·ãªã¢ã«åããªãã¬ã¯ã·ã§ã³ãªã©ã®ãé«åºŠãªããããã¯ãåãäžããããŠããŸãããã®ã³ãŒã¹ã§ã¯ãJava ãã¯ããã¯ãå¹æçã«ç¿åŸããæ¹æ³ãåŠã³ãŸãã詳现
ã¯ãã¡ãã
ã³ã³ãã³ã
1. ã¯ããã« 2. å€æ°ã®ã¹ã³ãŒã 3. ã¯ã©ã¹ãã£ãŒã«ããšããŒã«ã«å€æ° 4. ã¡ãœããã®åŒæ°ãšããŒã«ã«å€æ° 5. ããã¯ã¹åãšã¢ã³ããã¯ã¹å 6. ã€ã³ã¿ãŒãã§ã€ã¹ 7. æåå 8. åœåèŠå 9. æšæºã©ã€ãã©ãª 10. äžå€æ§ 11. ãã¹ã 12. 次ãžã .. 13. ãœãŒã¹ã³ãŒããããŠã³ããŒããã
1. ã¯ããã«
ãã¥ãŒããªã¢ã«ã®ãã®éšåã§ã¯ãJava ã«ãããåªããããã°ã©ãã³ã° ã¹ã¿ã€ã«ãšã¬ã¹ãã³ã·ã ãã¶ã€ã³ã®äžè¬ååã«ã€ããŠåŒãç¶ã説æããŸãããããã®ååã®äžéšã«ã€ããŠã¯ãã¬ã€ãã®åã®ç« ã§ãã§ã«èª¬æããŸããããJava éçºè
ã®ã¹ãã«ãåäžãããããšãç®çãšããŠãå€ãã®å®è·µçãªãã³ããæäŸãããŸãã
2. å€æ°ã®ã¹ã³ãŒã
第 3 éš (ãã¯ã©ã¹ãšã€ã³ã¿ãŒãã§ã€ã¹ã®èšèšæ¹æ³ã) ã§ã¯ãã¹ã³ãŒãã®å¶çŽãèæ
®ããŠãã¯ã©ã¹ãšã€ã³ã¿ãŒãã§ã€ã¹ã®ã¡ã³ããŒã«å¯èŠæ§ãšã¢ã¯ã»ã·ããªãã£ãã©ã®ããã«é©çšã§ãããã«ã€ããŠèª¬æããŸããããã ããã¡ãœããã®å®è£
ã§äœ¿çšãããããŒã«ã«å€æ°ã«ã€ããŠã¯ãŸã 説æããŠããŸãããJava èšèªã§ã¯ããã¹ãŠã®ããŒã«ã«å€æ°ã¯ã宣èšããããšã¹ã³ãŒããæã¡ãŸãããã®å€æ°ã¯ã宣èšãããå Žæããã¡ãœãã (ãŸãã¯ã³ãŒãã®ãããã¯) ã®å®è¡ãå®äºããæç¹ãŸã§å¯èŠã«ãªããŸããäžè¬ã«ãåŸãã¹ãå¯äžã®ã«ãŒã«ã¯ãããŒã«ã«å€æ°ã䜿çšããå Žæã®ã§ããã ãè¿ãã§å®£èšããããšã§ããå
žåçãªäŸãèŠãŠã¿ãŸãããã
for( final Locale locale: Locale.getAvailableLocales() ) { // блПк codeа } try( final InputStream in = new FileInputStream( "file.txt" ) ) { // блПка codeа }
ã©ã¡ãã®ã³ãŒãéšåã§ããå€æ°ã®ã¹ã³ãŒãã¯ããããã®å€æ°ã宣èšãããŠããå®è¡ãããã¯ã«å¶éãããŠããŸãããããã¯ãå®äºãããšã¹ã³ãŒããçµäºããå€æ°ã¯é衚瀺ã«ãªããŸããããã¯ããæ確ã«æããŸãããJava 8 ã®ãªãªãŒã¹ãšã©ã ãã®å°å
¥ã«ãããããŒã«ã«å€æ°ã䜿çšãããã®èšèªã®ããç¥ãããã€ãã£ãªã ã®å€ããå»æ¢ããã€ã€ãããŸããã«ãŒãã®ä»£ããã«ã©ã ãã䜿çšããåã®äŸã®äŸã瀺ããŸãã ããŒã«ã«å€æ°ãé¢æ°ã®åŒæ°ã«ãªãããããåŒæ°ãšããŠ
forEach
Arrays.stream( Locale.getAvailableLocales() ).forEach( ( locale ) -> { // блПк codeа } );
ã¡ãœãã ã«æž¡ãããããšãããããŸãã
3. ã¯ã©ã¹ãã£ãŒã«ããšããŒã«ã«å€æ°
Java ã®åã¡ãœããã¯ãç¹å®ã®ã¯ã©ã¹ (Java8 ã®å Žåã¯ãã¡ãœãããããã©ã«ã ã¡ãœãããšããŠå®£èšãããŠããã€ã³ã¿ãŒãã§ã€ã¹) ã«å±ããŸããå®è£
ã§äœ¿çšãããã¯ã©ã¹ãŸãã¯ã¡ãœããã®ãã£ãŒã«ãã§ããããŒã«ã«å€æ°éã§ã¯ãååã®ç«¶åãçºçããå¯èœæ§ããããŸããJava ã³ã³ãã€ã©ã¯ãè€æ°ã®éçºè
ããã®å€æ°ã䜿çšããã€ããã§ãã£ãŠãã䜿çšå¯èœãªå€æ°ã®äžããæ£ããå€æ°ãéžæããæ¹æ³ãèªèããŠããŸããææ°ã® Java IDE ã¯ãã³ã³ãã€ã©ã®èŠåãå€æ°ã®åŒ·èª¿è¡šç€ºãéããŠããã®ãããªç«¶åãçºçãããã«ãªã£ãããšãéçºè
ã«ããŸãäŒããŸããããããã³ãŒããæžããªãããã®ãããªããšãèããã»ããããã§ããããäŸãèŠãããšããå§ãããŸãã
public class LocalVariableAndClassMember { private long value; public long calculateValue( final long initial ) { long value = initial; value *= 10; value += value; return value; } }
ãã®äŸã¯éåžžã«ç°¡åã«èŠããŸãããããã¯çœ ã§ãã
CalculateValueã¡ãœããã¯ããŒã«ã«å€æ°
å€ãå°å
¥ãããããæäœããŠåãååã®ã¯ã©ã¹ ãã£ãŒã«ããé衚瀺ã«ããŸãããã®è¡ã¯
value += value;
ã¯ã©ã¹ ãã£ãŒã«ãã®å€ãšããŒã«ã«å€æ°ã®åèšã§ããã¯ãã§ããã代ããã«å¥ã®åŠçãè¡ãããŠããŸããé©åãªå®è£
ã¯æ¬¡ã®ããã«ãªããŸã (this ããŒã¯ãŒãã䜿çš)ã
public class LocalVariableAndClassMember { private long value; public long calculateValue( final long initial ) { long value = initial; value *= 10; value += this.value; return value; } }
ãã®äŸã¯ããæå³åçŽã§ãããå Žåã«ãã£ãŠã¯ãããã°ãšä¿®æ£ã«æ°æéãããå¯èœæ§ããããšããéèŠãªç¹ã瀺ããŠããŸãã
4. ã¡ãœããã®åŒæ°ãšããŒã«ã«å€æ°
çµéšã®æµ
ã Java éçºè
ãé¥ãããããã 1 ã€ã®èœãšãç©Žã¯ãã¡ãœããã®åŒæ°ãããŒã«ã«å€æ°ãšããŠäœ¿çšããããšã§ããJava ã§ã¯ãéå®æ°åŒæ°ã«å€ãåå²ãåœãŠããããšãã§ããŸã (ãã ããããã¯å
ã®å€ã«ã¯åœ±é¿ããŸãã): äžèš
public String sanitize( String str ) { if( !str.isEmpty() ) { str = str.trim(); } str = str.toLowerCase(); return str; }
ã®ã³ãŒã ã¹ããããã¯æŽç·ŽãããŠããŸããããåé¡ãæããã«ããã®ã«è¯ãä»äºãããŠããŸã: åŒæ°
strãå²ãåœãŠãããŠããŸãç°ãªãå€ (åºæ¬çã«ã¯ããŒã«ã«å€æ°ãšããŠäœ¿çšãããŸã)ããã¹ãŠã®å Žå (äŸå€ãªã)ããã®äŸã䜿çšããªããŠãåé¡ãããŸãããã䜿çšããå¿
èŠããããŸã (ããšãã°ãåŒæ°ãå®æ°ãšããŠå®£èšãããªã©)ãäŸ:
public String sanitize( final String str ) { String sanitized = str; if( !str.isEmpty() ) { sanitized = str.trim(); } sanitized = sanitized.toLowerCase(); return sanitized; }
ãã®åçŽãªã«ãŒã«ã«åŸãããšã§ãããŒã«ã«å€æ°ãå°å
¥ããå Žåã§ããæå®ãããã³ãŒãããã¬ãŒã¹ããŠåé¡ã®åå ãèŠã€ããããšã容æã«ãªããŸãã
5. 梱å
ãšé梱
ããã¯ã¹åãšã¢ã³ããã¯ã¹åã¯ãJava ã§ããªããã£ãå ( intãlongãdouble ãªã©) ã察å¿ããåã©ãã㌠(
IntegerãLongãDoubleãªã©)ã« å€æããããã«äœ¿çšãããææ³ã®ååã§ãããžã§ããªã¯ã¹ããã€äœ¿çšããæ¹æ³ãšãã®ãã¥ãŒããªã¢ã«ã®ããŒã 4 ã§ãããªããã£ãåããžã§ããªãã¯ã¹ã®åãã©ã¡ãŒã¿ãšããŠã©ããããããšã«ã€ããŠèª¬æãããšãã«ããããå®éã«åäœããŠããããšããã§ã«ç¢ºèªããŸãããJava ã³ã³ãã€ã©ã¯ãªãŒãããã¯ã¹åãå®è¡ããŠãã®ãããªå€æãé èœããããšæåãå°œãããŸãããå Žåã«ãã£ãŠã¯ãããæåŸ
ãããäžååã§ãäºæããªãçµæãçããããšããããŸããäŸãèŠãŠã¿ãŸãããã
public static void calculate( final long value ) { // блПк codeа } final Long value = null; calculate( value );
äžèšã®ã³ãŒã ã¹ããããã¯æ£åžžã«ã³ã³ãã€ã«ãããŸãã
ãã ãã Longãš
long ã®éã§å€æãè¡ã£ãŠããè¡ã§ã¯
NullPointerExceptionãã¹ããŒãããŸãããã®ãããªå Žåã®ã¢ããã€ã¹ã¯ãããªããã£ãåã䜿çšããããšããå§ãããŸã (ãã ãããããåžžã«å¯èœã§ãããšã¯éããªãããšã¯ãã§ã«ããã£ãŠããŸã)ã
// блПк
6. ã€ã³ã¿ãŒãã§ãŒã¹
ãã¥ãŒããªã¢ã«ã®ããŒã 3ãã¯ã©ã¹ãšã€ã³ã¿ãŒãã§ã€ã¹ã®èšèšæ¹æ³ãã§ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ãšã³ã³ãã©ã¯ã ããã°ã©ãã³ã°ã«ã€ããŠèª¬æããå¯èœãªéãå
·äœçãªã¯ã©ã¹ãããã€ã³ã¿ãŒãã§ã€ã¹ãåªå
ããå¿
èŠãããããšã匷調ããŸããããã®ã»ã¯ã·ã§ã³ã®ç®çã¯ãå®éã®äŸã§ãããå®èšŒããããšã§ãæåã«ã€ã³ã¿ãŒãã§ã€ã¹ã«ã€ããŠæ€èšããããšã奚å±ããããšã§ããã€ã³ã¿ãŒãã§ã€ã¹ã¯ç¹å®ã®å®è£
ã«é¢é£ä»ããããŠããŸãã (ããã©ã«ãã®ã¡ãœãããé€ã)ããããã¯åãªãå¥çŽã§ãããäžäŸãšããŠãå¥çŽã®å®è¡æ¹æ³ã«å€ãã®èªç±ãšæè»æ§ãæäŸããŸãããã®æè»æ§ã¯ãå®è£
ã«å€éšã·ã¹ãã ãŸãã¯ãµãŒãã¹ãé¢äžããå Žåã«ããã«éèŠã«ãªããŸããåçŽãªã€ã³ã¿ãŒãã§ã€ã¹ãšãã®å®è£
ã®äŸãèŠãŠã¿ãŸãããã
public interface TimezoneService { TimeZone getTimeZone( final double lat, final double lon ) throws IOException; } public class TimezoneServiceImpl implements TimezoneService { @Override public TimeZone getTimeZone(final double lat, final double lon) throws IOException { final URL url = new URL( String.format( "http://api.geonames.org/timezone?lat=%.2f&lng=%.2f&username=demo", lat, lon ) ); final HttpURLConnection connection = ( HttpURLConnection )url.openConnection(); connection.setRequestMethod( "GET" ); connection.setConnectTimeout( 1000 ); connection.setReadTimeout( 1000 ); connection.connect(); int status = connection.getResponseCode(); if (status == 200) { // Do something here } return TimeZone.getDefault(); } }
äžèšã®ã³ãŒã ã¹ããããã¯ãå
žåçãªã€ã³ã¿ãŒãã§ã€ã¹ ãã¿ãŒã³ãšãã®å®è£
ã瀺ããŠããŸãããã®å®è£
ã§ã¯ãå€éš HTTP ãµãŒãã¹ (
http://api.geonames.org/ ) ã䜿çšããŠãç¹å®ã®å Žæã®ã¿ã€ã ãŸãŒã³ãååŸããŸãããã ããã³ã³ãã©ã¯ãã¯ã€ã³ã¿ãŒãã§ã€ã¹ã«äŸåãããããããŒã¿ããŒã¹ãéåžžã®ãã©ãã ãã¡ã€ã«ãªã©ã䜿çšããŠãã€ã³ã¿ãŒãã§ã€ã¹ã®å¥ã®å®è£
ãå°å
¥ããã®ã¯éåžžã«ç°¡åã§ãããããã䜿çšãããšãã€ã³ã¿ãŒãã§ã€ã¹ã¯ãã¹ãå¯èœãªã³ãŒããèšèšããã®ã«éåžžã«åœ¹ç«ã¡ãŸããããšãã°ããã¹ãŠã®ãã¹ãã§å€éšãµãŒãã¹ãåŒã³åºãããšã¯å¿
ãããçŸå®çã§ã¯ãªãããã代ããã«æãåçŽãªå®è£
(ã¹ã¿ããªã©) ãå®è£
ããããšãåççã§ãã ãã®å®è£
ã¯ã
TimezoneService
public class TimezoneServiceTestImpl implements TimezoneService { @Override public TimeZone getTimeZone(final double lat, final double lon) throws IOException { return TimeZone.getDefault(); } }
ã€ã³ã¿ãŒãã§ã€ã¹ãå¿
èŠãª å Žæã§ããã°ã©ãã§ã䜿çšã§ããå€éšã³ã³ããŒãã³ããžã®äŸåé¢ä¿ãããã¹ã ã¹ã¯ãªãããåé€ããŸãããã®ãããªã€ã³ã¿ãŒãã§ã€ã¹ãå¹æçã«äœ¿çšããåªããäŸã®å€ãããJava æšæºã©ã€ãã©ãªå
ã«ã«ãã»ã«åãããŠããŸããã³ã¬ã¯ã·ã§ã³ããªã¹ããã»ãã - ãããã®ã€ã³ã¿ãŒãã§ã€ã¹ã«ã¯ãã·ãŒã ã¬ã¹ã«äº€æã§ããè€æ°ã®å®è£
ããããã³ã³ãã©ã¯ãã掻çšãããšãã«äº€æã§ããŸããäŸãã°ïŒ
public static< T > void print( final Collection< T > collection ) { for( final T element: collection ) { System.out.println( element ); } } print( new HashSet< Object >( /* ... */ ) ); print( new ArrayList< Integer >( /* ... */ ) ); print( new TreeSet< String >( /* ... */ ) );
7. ã¹ããªã³ã°ã¹
æååã¯ãJava ãšä»ã®ããã°ã©ãã³ã°èšèªã®äž¡æ¹ã§æããã䜿çšãããåã® 1 ã€ã§ããJava èšèªã¯ãããã«äœ¿çšã§ããé£çµæäœãšæ¯èŒæäœããµããŒãããããšã§ãå€ãã®æ¥åžžçãªæååæäœãç°¡çŽ åããŸããããã«ãæšæºã©ã€ãã©ãªã«ã¯ãæååæäœãå¹çåããå€ãã®ã¯ã©ã¹ãå«ãŸããŠããŸããããã¯ãŸãã«ãã®ã»ã¯ã·ã§ã³ã§èª¬æããå
容ã§ããJava ã§ã¯ãæåå㯠UTF-16 ãšã³ã³ãŒãã£ã³ã°ã§è¡šãããäžå€ãªããžã§ã¯ãã§ããæååãé£çµãã (ãŸãã¯å
ã®æååãå€æŽããæäœãå®è¡ãã) ãã³ã«ã
Stringã¯ã©ã¹ã®æ°ããã€ã³ã¹ã¿ã³ã¹ãäœæãããŸãããã®ãããé£çµæäœã¯éåžžã«éå¹çã«ãªãã
Stringã¯ã©ã¹ã®äžéã€ã³ã¹ã¿ã³ã¹ãå€æ°äœæããã(äžè¬ã«ã¬ããŒãžãäœæããã) å¯èœæ§ããããŸããããããJava æšæºã©ã€ãã©ãªã«ã¯ãæååæäœã䟿å©ã«ããããšãç®çãšãã 2 ã€ã®éåžžã«äŸ¿å©ãªã¯ã©ã¹ãå«ãŸããŠããŸãããããã¯
StringBuilderãš
StringBufferã§ã(ãããã®å¯äžã®éãã¯ã
StringBufferãã¹ã¬ãã ã»ãŒãã§ããã®ã«å¯Ÿãã
StringBuilder ã¯ãã®éã§ããããšã§ã)ããããã®ã¯ã©ã¹ã® 1 ã€ã䜿çšãããŠããäŸãããã€ãèŠãŠã¿ãŸãããã
StringBuilder/StringBuffer
final StringBuilder sb = new StringBuilder(); for( int i = 1; i <= 10; ++i ) { sb.append( " " ); sb.append( i ); } sb.deleteCharAt( 0 ); sb.insert( 0, "[" ); sb.replace( sb.length() - 3, sb.length(), "]" );
ã®äœ¿çšã¯æååã®æäœã«æšå¥šãããæ¹æ³ã§ããã2 ã€ãŸã㯠3 ã€ã®æååãé£çµããæãåçŽãªã·ããªãªã§ã¯éå°ã«èŠããå¯èœæ§ããããŸãããã®ãããéåžžã®å ç®æŒç®å ( (ã+ã) äŸ: é£çµãç°¡çŽ åããããã®æè¯ã®ä»£æ¿çã¯ãå€ãã®å Žåãæååãã©ãŒããããš Java æšæºã©ã€ãã©ãªã䜿çšããŠãéçãª
String.formatãã«ã㌠ã¡ãœãããæäŸããããšã§ããããã¯ãæ°å€ãèšå·ãæ¥ä»/æå»ãªã©ãå«ãè±å¯ãªåœ¢åŒæå®åã®ã»ããããµããŒãããŸã (å®å
šãªè©³çŽ°ã«ã€ããŠã¯ããªãã¡ã¬ã³ã¹ ããã¥ã¡ã³ããåç
§ããŠãã ãã)ã String.format ã¡ãœããã¯ã
ããŸã㟠ãªããŒã¿åããæååãçæããããã®ã¯ãªãŒã³ã§è»œéãªã¢ãããŒããæäŸããŸãã
ææ°ã® Java IDE ã¯ã String.formatã¡ãœããã«æž¡ãããåŒæ°ãã圢åŒä»æ§ã解æããäžäžèŽãæ€åºãããå Žåã«éçºè
ã«èŠåã§ããããš ã¯æ³šç®ã«å€ããŸãã
String userId = "user:" + new Random().nextInt( 100 );
String.format( "%04d", 1 ); -> 0001 String.format( "%.2f", 12.324234d ); -> 12.32 String.format( "%tR", new Date() ); -> 21:11 String.format( "%tF", new Date() ); -> 2014-11-11 String.format( "%d%%", 12 ); -> 12%
8. åœåèŠå
Java ã¯ãéçºè
ã«åœåèŠåã«å³å¯ã«åŸãããšã匷å¶ããªãèšèªã§ãããã³ãã¥ããã£ã¯ãæšæºã©ã€ãã©ãªãšä»ã® Java ãããžã§ã¯ãã®äž¡æ¹ã§ Java ã³ãŒãã®äžè²«æ§ãä¿ã€ããã®åçŽãªã«ãŒã«ã®ã»ãããéçºããŸããã
- ããã±ãŒãžåã¯å°æåã§ã: org.junitãcom.fasterxml.jacksonãjavax.json
- ã¯ã©ã¹ãåæãã€ã³ã¿ãŒãã§ã€ã¹ã泚éã®ååã¯å€§æåã§èšè¿°ãããŸã: StringBuilderãRunnableã@Override
- ãã£ãŒã«ããŸãã¯ã¡ãœããã®åå ( static Finalãé€ã) ã¯ãisEmptyãformatãaddAllã® Camel è¡šèšæ³ã§æå®ãããŸãã
- éçãªæçµãã£ãŒã«ããŸãã¯åæå®æ°åã¯ãLOGãMIN_RADIXãINSTANCE ã®ããã«å€§æåã§ã¢ã³ããŒã¹ã³ã¢ (ã_ã) ã§åºåãããŸãã
- ããŒã«ã«å€æ°ãŸãã¯ã¡ãœããåŒæ°ã¯ããã£ã¡ã«è¡šèšæ³ ( strãnewLengthãminimumCapacity)ã§å
¥åãããŸãã
- ãžã§ããªãã¯ã¹ã®ãã©ã¡ãŒã¿ãŒååã¯ã倧æåã® 1 æåã§è¡šãããŸã ( TãUãE)ã
ãããã®åçŽãªèŠåã«åŸãããšã§ãäœæããã³ãŒãã¯ç°¡æœã§ãã¹ã¿ã€ã«çã«ã¯ä»ã®ã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ãšåºå¥ãã€ããªããªããåã人ã«ãã£ãŠéçºãããããã«æããããŸã (èŠåãå®éã«æ©èœãããŸããªã±ãŒã¹ã® 1 ã€)ã
9. æšæºã©ã€ãã©ãª
ã©ã®ãããªçš®é¡ã® Java ãããžã§ã¯ãã«åãçµãã§ãããšããŠããJava æšæºã©ã€ãã©ãªã¯ããªãã®åŒ·ãå³æ¹ã§ãã確ãã«ãèåããªéšåãå¥åŠãªèšèšäžã®æ±ºå®ãããããšã«åæããã®ã¯é£ããã§ããã99% ã®å Žåãå°é家ã«ãã£ãŠæžãããé«å質ã®ã³ãŒãã§ãã調ã¹ãŠã¿ã䟡å€ã¯ãããŸããJava ã®åãªãªãŒã¹ã§ã¯ãæ¢åã®ã©ã€ãã©ãªã«å€ãã®æ°æ©èœãè¿œå ãã (å€ãæ©èœã«ã¯ããã€ãã®åé¡ãçºçããå¯èœæ§ããããŸã)ããŸããå€ãã®æ°ããã©ã€ãã©ãªãè¿œå ãããŸãã
Java 5 ã§ã¯ã java.util.concurrentããã±ãŒãžã®äžéšãšããŠæ°ããåæ
å®è¡ã©ã€ãã©ãªãå°å
¥ãããŸããã
Java 6 ã¯ãã¹ã¯ãªããäœæ ( javax.scriptããã±ãŒãž) ããã³Java ã³ã³ãã€ã©
API (
javax.toolsããã±ãŒãžã®äžéšãšããŠ)ã®ãµããŒã (ããŸãç¥ãããŠããŸãã) ãæäŸããŸãããJava 7 ã§ã¯ã
java.util.concurrentã«å€ãã®æ¹è¯ãå ãããã
java.nio.fileããã±ãŒãžã«æ°ãã I/O ã©ã€ãã©ãªãå°å
¥ããã
java.lang.invokeã§åçèšèªããµããŒããããŸããããããŠæåŸã«ãJava 8 ã§ã¯ãåŸ
æã®
æ¥ä»/æå»ã
java.timeããã±ãŒãžã«è¿œå ãããŸããããã©ãããã©ãŒã ãšããŠã® Java ã¯é²åããŠãããäžèšã®å€åãšãšãã« Java ãé²åããããšã¯éåžžã«éèŠã§ãããããžã§ã¯ãã«ãµãŒãããŒãã£ã®ã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ãå«ããããšãæ€èšãããšãã¯ãå¿
èŠãªæ©èœãæšæº Java ã©ã€ãã©ãªã«å«ãŸããŠããªãããšã確èªããŠãã ãã (ãã¡ãããJava ã©ã€ãã©ãªãããå
ã«ãç¹æ®ã§é«æ§èœãªã¢ã«ãŽãªãºã ã®å®è£
ãå€æ°ãããŸã)ãã¢ã«ãŽãªãºã ã¯æšæºã©ã€ãã©ãªã«å«ãŸããŠããŸãããã»ãšãã©ã®å Žåãå®éã«ã¯å¿
èŠãããŸãã)ã
10. äžå€æ§
ã¬ã€ãå
šäœããã³ãã®éšåã«ãããäžå€æ§ã¯ã泚æãä¿ããã®ãšããŠæ®ããŸããçå£ã«åãæ¢ããŠãã ãããèšèšããã¯ã©ã¹ãŸãã¯å®è£
ããã¡ãœãããäžå€æ§ãä¿èšŒã§ããã°ãã»ãšãã©ã®å Žåãåæã«å€æŽãããããšãæããããšãªããã©ãã§ã䜿çšã§ããŸããããã«ãããéçºè
ãšããŠã®ç掻 (ãããŠã§ããã°ããŒã ã¡ã³ããŒã®ç掻) ã楜ã«ãªããŸãã
11. ãã¹ã
ãã¹ãé§åéçº (TDD) ã®å®è·µã¯ Java ã³ãã¥ããã£ã§éåžžã«äººæ°ããããã³ãŒãå質ã®åºæºãåŒãäžããŠããŸããTDD ãæäŸããããŸããŸãªå©ç¹ã«ãããããããä»æ¥ã® Java æšæºã©ã€ãã©ãªã«ãã¹ã ãã¬ãŒã ã¯ãŒã¯ããµããŒã ããŒã«ãå«ãŸããŠããªãã®ã¯æ®å¿µã§ãã
ãã ãããã¹ãã¯ææ°ã® Java éçºã«å¿
èŠãªéšåãšãªã£ãŠããããã®ã»ã¯ã·ã§ã³ã§ã¯JUnitãã¬ãŒã ã¯ãŒã¯ã䜿çšããããã€ãã®åºæ¬çãªãã¯ããã¯ãèŠãŠãããŸããJUnit ã§ã¯ãåºæ¬çã«ãåãã¹ãã¯ãªããžã§ã¯ãã®äºæãããç¶æ
ãŸãã¯åäœã«é¢ããäžé£ã®ã¹ããŒãã¡ã³ãã§ããåªãããã¹ããäœæããç§èš£ã¯ããã¹ããã·ã³ãã«ãã€çãä¿ã¡ãäžåºŠã« 1 ã€ã®ããšããã¹ãããããšã§ããæŒç¿ãšããŠã
String.format ãç®çã®çµæãè¿ãæååã»ã¯ã·ã§ã³ã®é¢æ°ã§ããããšã確èªããäžé£ã®ãã¹ããäœæããŠã¿ãŸãããã
package com.javacodegeeks.advanced.generic; import static org.junit.Assert.assertThat; import static org.hamcrest.CoreMatchers.equalTo; import org.junit.Test; public class StringFormatTestCase { @Test public void testNumberFormattingWithLeadingZeros() { final String formatted = String.format( "%04d", 1 ); assertThat( formatted, equalTo( "0001" ) ); } @Test public void testDoubleFormattingWithTwoDecimalPoints() { final String formatted = String.format( "%.2f", 12.324234d ); assertThat( formatted, equalTo( "12.32" ) ); } }
ã©ã¡ãã®ãã¹ããéåžžã«èªã¿ããããå®è¡ã¯ã€ã³ã¹ã¿ã³ã¹ã§ããçŸåšãå¹³åç㪠Java ãããžã§ã¯ãã«ã¯äœçŸãã®ãã¹ã ã±ãŒã¹ãå«ãŸããŠãããéçºããã»ã¹äžã«ãªã°ã¬ãã·ã§ã³ãæ©èœã«é¢ããè¿
éãªãã£ãŒãããã¯ãéçºè
ã«æäŸãããŸãã
12. 次ãž
ã¬ã€ãã®ãã®éšåã§ã¯ãJava ã§ã®ããã°ã©ãã³ã°ã®å®è·µãšãã®ããã°ã©ãã³ã°èšèªã®ããã¥ã¢ã«ã«é¢é£ããäžé£ã®èª¬æãå®äºããŸãã次åã¯èšèªã®æ©èœã«æ»ããäŸå€ããã®åããããããã€ã©ã®ããã«äœ¿çšãããã«ã€ã㊠Java ã®äžçãæ¢çŽ¢ããŸãã
13. ãœãŒã¹ã³ãŒããããŠã³ããŒããã
ããã¯ãäžçŽ Java ã³ãŒã¹ã®äžè¬çãªéçºååã«é¢ããã¬ãã¹ã³ã§ãããã¬ãã¹ã³ã®ãœãŒã¹ ã³ãŒãã¯
ããããããŠã³ããŒãã§ããŸãã
GO TO FULL VERSION