Java 자바야놀자 클래스 String, StringBuffer, StringBuilder 자바에서문자열을사용할경우에성능을고려해야합니다. 자바에서문자열을사용 하기위해앞에서언급한 String 클래스만있는것은아닙니다. String 클래스는기본 데이

Size: px
Start display at page:

Download "Java 자바야놀자 클래스 String, StringBuffer, StringBuilder 자바에서문자열을사용할경우에성능을고려해야합니다. 자바에서문자열을사용 하기위해앞에서언급한 String 클래스만있는것은아닙니다. String 클래스는기본 데이"

Transcription

1 14. 기본 API 클래스 이장에서는기본 API 클래스들에대해설명합니다. 14장의주요내용입니다. - 문자열다루기 - 정규표현식 - Object 클래스 - 날짜다루기 - 지역과시간대 - 형식화 - 수학관련클래스

2 Java 자바야놀자 클래스 String, StringBuffer, StringBuilder 자바에서문자열을사용할경우에성능을고려해야합니다. 자바에서문자열을사용 하기위해앞에서언급한 String 클래스만있는것은아닙니다. String 클래스는기본 데이터유형처럼바로값을할당해서사용하기때문에편리하다는장점이있지만문 자열의내용이자주변경되는경우에는사용하는것을권장하지않습니다. 그이유는 String 은 immutable 클래스이기때문입니다. immutable 은문자열의내용이변경되면 기존의메모리공간에저장된데이터를수정하는것이아니고새로운문자열객체를 생성한다음새로운객체를참조함을의미합니다. 다음과같은코드를생각해볼수있습니다. concat() 은문자열을연결해주는메서드 입니다. 아래코드는 str 의내용에문자열을붙여줍니다. 그런데그림을보면문자열 의내용이변경될때힙메모리영역에새로운 String 객체가생성된다는것을알수 있습니다. String str = "abc" str = str.concat("123"); 문자열의내용이자주변경될경우에 StringBuffer 와 StringBuilder 를사용할것을권 장합니다. 다음표는 String, StringBuffer, StringBuilder 클래스를비교했습니다. API 정의 스레드공유 주요메서드 String StringBuffer StringBuilder String objects are immutable they can be shared. A thread-safe, mutable sequence of characters. A mutable sequence of characters. can be shared thread-safe can be shared concat, replace, substring append, replace, substring, insert append, replace, substring, insert 사용버전 JDK 1.0 JDK 1.0 JDK 1.5 StringBuffer 클래스는 String 클래스에서제공하지않는추가, 삭제등의기능을제공 합니다. 문자열을폭넓게사용할필요가있을때 StringBuffer 클래스를이용합니다.

3 Chapter 기본 API 클래스 14 클래스이름에서 buffer 는문자열을기억할메모리, 즉문자형배열 (char[]) 을의미합 니다. 문자열을추가하거나삭제하면 buffer 의크기가변한다는의미이며, 생성자에 따라버퍼의크기가달라집니다. 다음은 StringBuffer 클래스의생성자입니다. 생성자와설명 StringBuffer() buffer 의초기크기 (initial capacity) 가 16 character 크기인 string buffer 를생성합니다. StringBuffer(CharSequence seq) 인자로주어진 CharSequence 와같은문자열을갖는 string buffer 를생성합니다. StringBuffer(int capacity) buffer 의크기를지정하여 string buffer 를생성합니다. StringBuffer(String str) 주어진문자열의길이만큼초기화된 string buffer 를생성합니다. 다음은 String, StringBuffer, StringBuilder 클래스의주요메서드들입니다. String 클래스의주요메서드 메서드와설명 char int String boolean boolean boolean static String static String byte[] byte[] void int charat(int index) index 위치의문자를반환합니다. compareto(string anotherstring) 이문자열과주어진 anotherstring 문자열과알파벳순서를이용하여크기비교를합니다. concat(string str) 이문자열에주어진 str 문자열을연결합니다. contains(charsequence s) 주어진문자열을포함하는지테스트합니다. equals(object anobject) 이문자열과주어진객체와내용이같은지비교합니다. equalsignorecase(string anotherstring) 대 / 소문자를구분하지않고두문자열이같은지비교합니다. format(locale l, String format, Object... args) 주어진로케일, 포맷그리고인자들을이용하여문자열의포맷을지정합니다. format(string format, Object... args) 디폴트로케일, 포맷그리고인자들을이용하여문자열의포맷을지정합니다. getbytes() 이문자열을바이트배열로반환합니다. getbytes(string charsetname) 이문자열을주어진문자셋을갖는바이트배열로반환합니다. getchars(int srcbegin, int srcend, char[] dst, int dstbegin) 이문자열의 srcbegin 위치부터 srcend 위치까지문자열을 dst 배열의 dstbegin 위치에복사합니다. indexof(int ch)

4 Java 자바야놀자 int int int boolean int boolean String String String[] String String String String String 주어진문자의위치를반환합니다.. indexof(int ch, int fromindex) fromindex 위치이후부터주어진문자의위치를반환합니다. indexof(string str) 주어진문자열의위치를반환합니다. indexof(string str, int fromindex) fromindex 위치이후부터주어진문자의위치를반환합니다. isempty() length() 가 0 이면 true 를반환합니다. length() 문자열의길이를반환합니다. matches(string regex) 주어진정규표현식과일치하는지확인합니다. replace(char oldchar, char newchar) 이문자열에서주어진 oldchar 문자를새로운문자 newchar 로바꿉니다. replaceall(string regex, String replacement) 주어진정규표현식과일치하는모든문자열을 replacement 로바꿉니다. split(string regex) 주어진정규표현식으로문자열을쪼개어배열로반환합니다. substring(int beginindex) beginindex 위치이후의부분문자열을반환합니다. substring(int beginindex, int endindex) beginidex 위치부터 endindex 까지부분문자열을반환합니다. tolowercase() 소문자로변환한문자열을반환합니다. touppercase() 대문자로변환한문자열을반환합니다. trim() 문자열앞 / 뒤의공백을제거한문자열을반환합니다. StringBuffer 클래스의주요메서드 메서드와설명 StringBuffer char StringBuffer StringBuffer void int append(string str) 문자열에주어진문자열을연결합니다. charat(int index) 주어진위치문자를반환합니다. delete(int start, int end) 이문자열에서 start 위치에서 end 위치까지삭제합니다. deletecharat(int index) 주어진 index 위치문자를삭제합니다. getchars(int srcbegin, int srcend, char[] dst, int dstbegin) 이문자열의 srcbegin 위치부터 srcend 위치까지문자열을 dst 배열의 dstbegin 위치에복사합니다. indexof(string str)

5 Chapter 기본 API 클래스 14 StringBuffer int StringBuffer StringBuffer String String 문자열의위치를반환합니다. insert(int offset, String str) 주어진 offset 위치에주어진 str 문자열을추가합니다. length() 문자열의길이를반환합니다. replace(int start, int end, String str) start 위치부터 end 위치까지문자열을 str 문자열로바꿉니다. reverse() 이문자순서를순서의역으로바꿉니다. substring(int beginindex) beginindex 위치이후의부분문자열을반환합니다. substring(int beginindex, int endindex) beginidex 위치부터 endindex 까지부분문자열을반환합니다. StringBuilder 클래스의주요메서드들 메서드와설명 StringBuilder char StringBuilder StringBuilder void int StringBuilder int StringBuilder StringBuilder String String append(string str) 이문자열에주어진문자열을연결합니다. charat(int index) 주어진위치문자를반환합니다. delete(int start, int end) 이문자열에서 start 위치에서 end 위치까지삭제합니다. deletecharat(int index) 주어진 index 위치문자를삭제합니다. getchars(int srcbegin, int srcend, char[] dst, int dstbegin) 이문자열의 srcbegin 위치부터 srcend 위치까지문자열을 dst 배열의 dstbegin 위치에복사합니다. indexof(string str) 주어진문자열의위치를반환합니다. insert(int offset, String str) 주어진 offset 위치에주어진 str 문자열을추가합니다. length() 문자열의길이를반환합니다. replace(int start, int end, String str) start 위치부터 end 위치까지문자열을 str 문자열로바꿉니다. reverse() 이문자순서를순서의역으로바꿉니다. substring(int beginindex) beginindex 위치이후의부분문자열을반환합니다. substring(int beginindex, int endindex) beginidex 위치부터 endindex 까지부분문자열을반환합니다.

6 Java 자바야놀자 다음코드는위클래스들의내용을수정하기전 / 후해시코드값을출력하는예입니다. 실행결과를주의해서살펴볼필요가있습니다. StringExample.java 1: package string; 2: 3: public class StringExample { 4: public static void main(string[] args) { 5: String str = "abc"; 6: System.out.println(str.hashCode()); 7: str = str.concat("123"); 8: System.out.println(str.hashCode()); 9: 10: StringBuffer strbuf = new StringBuffer("abc"); 11: System.out.println(strBuf.hashCode()); 12: strbuf = strbuf.append("123"); // 할당문이없어도됩니다. 13: System.out.println(strBuf.hashCode()); 14: 15: StringBuilder strbld = new StringBuilder("abc"); 16: System.out.println(strBld.hashCode()); 17: strbld = strbld.append("123"); // 할당문이없어도됩니다. 18: System.out.println(strBld.hashCode()); 19: } 20: } StringTokenizer java.util.stringtokeninzer는문자열을분리하기위한클래스입니다. 생성자의인자로분리하기위한문자열과구분자 (delimiters) 들을가질수있습니다. StringTokenizer 클래스는기본생성자가없으며구분자 (delimiters) 를지정하지않으면문자열을구분하는구분자는공백 ( \t\n\r\f ) 38) 입니다. 다음은 StringTokenizer 클래스의생성자입니다. 설명 StringTokenizer(String str), \t, \n, \r, \f 문자로 str 문자열을구분한객체를생성합니다. StringTokenizer(String str, String delim) 주어진 delim 문자열안의각문자로문자로 str 문자열을구분한객체를생성합니다. StringTokenizer(String str, String delim, boolean returndelims) 주어진 delim 문자열안의각문자로문자로 str 문자열을구분한객체를생성합니다. 구분자도토큰에포함하게할지 returndelims 값을지정할수있습니다. returndelims 기본값은 false 입니다. 38) space, tab, newline, carriage-return

7 Chapter 기본 API 클래스 14 다음은 StringTokenizer 클래스의주요메서드입니다. 메서드 int boolean boolean Object String String counttokens() 발생되기전에 nexttoken 메서드가호출될수있는횟수를계산합니다. hasmoreelements() hasmoretokens 메서드와같은값을반환합니다.. hasmoretokens() 현재토크나이저문자열로부터더이상의토큰이있는지테스트합니다. nextelement() nexttoken 메서드와같은값을반환합니다. 선언된리턴타입은 String 이아니고 Object 입니다. nexttoken() 현재토크나이저로부터다음문자열을반환합니다. nexttoken(string delim) 현재문자열에서 delim 으로구분되는다음문자열을반환합니다. 다음은 StringTokenizer 클래스를이용하여문자열을분리한예입니다. StringTokenizer.java 1: import java.util.stringtokenizer; 2: 3: public class StringTokenizerExample { 4: 5: public static void main(string[] args) { 6: 7: StringTokenizer st = new StringTokenizer("this is a test"); 8: System.out.println("*****Tokenizing by space"); 9: while (st.hasmoretokens()) { 10: System.out.println(st.nextToken()); 11: } 12: 13: String accesslog = " ,SAT,/board?bbsno=30,USER123;GROUP1;"; 14: 15: StringTokenizer accesstokens1 = new StringTokenizer(accessLog, ","); 16: System.out.println("*****Tokenizing by,"); 17: while(accesstokens1.hasmoretokens()) { 18: System.out.println(accessTokens1.nextToken()); 19: } 20: 21: System.out.println("*****Tokenizing by,"); 22: StringTokenizer accesstokens5 = new StringTokenizer(accessLog); 23: while(accesstokens5.hasmoretokens()) { 24: System.out.println(accessTokens5.nextToken(",")); 25: } 26: 27: System.out.println("*****Tokenizing by.,;"); 28: StringTokenizer accesstokens2 = new StringTokenizer(accessLog, ".,;"); 29: while(accesstokens2.hasmoretokens()) { 30: System.out.println(accessTokens2.nextToken());

8 Java 자바야놀자 31: } 32: 33: System.out.println("*****Tokenizing by.,;/?"); 34: StringTokenizer accesstokens3 = new StringTokenizer(accessLog, ".,;/?"); 35: while(accesstokens3.hasmoretokens()) { 36: System.out.println(accessTokens3.nextToken()); 37: } 38: 39: System.out.println("*****Tokenizing by,( 토큰에포함 )"); 40: StringTokenizer accesstokens4 = new StringTokenizer(accessLog, ",", true); 41: while(accesstokens4.hasmoretokens()) { 42: System.out.println(accessTokens4.nextToken()); 43: } 44: } 45: 46: }

9 Chapter 기본 API 클래스 split() split() 메서드는 String 클래스에있는메서드입니다. split() 메서드는정규표현식을 이용하여문자열을분리할수있습니다. split() 메서드는 JDK 1.4 부터사용할수있 습니다. 다음은 split() 메서드에대한설명입니다. 메서드 String[] String[] split(string regex) 정규표현식을이용하여문자열을분리하고그결과를문자열배열로반환합니다. split(string regex, int limit) 주어진정규표현식을이용하여문자열을분리하고그결과를문자열배열로반환합니다. 결과의수를 limit 개수로제한합니다. 다음코드는 StringTokenizer 클래스와 split() 메서드를비교설명하기위한예제입니다. StringSplitExample.java 1: import java.util.stringtokenizer; 2: 3: public class StringSplitExample { 4: 5: public static void main(string[] args) { 6: String accesslog = "2017,03,11,,,USER123,GROUP1"; 7: System.out.println("*****Tokenizer"); 8: StringTokenizer accesstokens = new StringTokenizer(accessLog, ","); 9: System.out.println(" 토크수 : " + accesstokens.counttokens()); 10: while(accesstokens.hasmoretokens()) { 11: System.out.println(accessTokens.nextToken()); 12: } 13: 14: System.out.println("*****split"); 15: String[] splits = accesslog.split(","); 16: System.out.println(" 배열개수 : " + splits.length); 17: for(string str : splits) { 18: System.out.println(str); 19: } 20: 21: System.out.println("*****split"); 22: String[] splits2 = accesslog.split(",", 3); 23: System.out.println(" 배열개수 : " + splits2.length); 24: for(string str : splits2) { 25: System.out.println(str); 26: } 27: } 28: 29: }

10 Java 자바야놀자 StringTokenizer를이용하여문자열을분리할경우에는구분자사이에아무것도없을경우토큰이생성되지않습니다. 그러나 split() 메서드는구분자사이에아무것도없더라도 ( 널스트링 ) 을생성하기때문에같은문자열을분리하였을경우분리되는문자열의개수가다릅니다.

11 Chapter 기본 API 클래스 표현식 String 클래스의 split() 와 replaceall() 메서드는정규표현식을이용하여문자열을처리할수있습니다. 정규표현식 (regular expression) 은특정한규칙을가진문자열을표현하는데사용하는형식언어입니다. 정규표현식은여러텍스트편집기와프로그래밍언어에서문자열을찾거나바꾸기위해지원하고있습니다. 자바언어에서도문자열을다루는여러클래스와메서드에서정규표현식을지원하고있습니다 정규표현식 표현식기본개념 정규표현식은패턴 (pattern) 또는정규식으로불리기도합니다. 정규표현식은특정 목적을위해필요한문자열집합을지정하기위해사용합니다. 다음표는정규표현식의기본개념에대한설명입니다. 수직선 ( ) 기능 또는 (or) 괄호 (()) 그룹묶기 물음표 (?) 별표 (*) 덧셈기호 (+) 0 회또는 1 회 0 회이상 1 회이상 설명 항목들중하나를선택하기위해구분합니다. 예를들면 "gray grey" 는 "gray" 또는 "grey" 와일치합니다. 연산자의범위와우선순위를지정할수있습니다. 예를들면 "gray grey" 와 "gr(a e)y" 는 "gray" 또는 "grey" 집합둘다의미하는같은패턴입니다. 0 번또는 1 번까지의발생을의미합니다. 예를들면 "colou?r" 는 "color" 와 "colour" 둘다일치시킵니다. 0 번이상발생을의미합니다. 예를들면 "ab*c" 는 "ac", "abc", "abbc", "abbbc" 등을일치시킵니다. 1 번이상의발생을의미합니다. 예를들면 "ab+c" 는 "abc", "abbc", "abbbc" 등을일치시킵니다. 그러나 "ac" 는일치시키지않습니다. {n} n 회정확히 n 번만큼일치시킵니다. {m, } m 회이상 m 번이상만큼일치시킵니다. {m, n} m회이상 n회이하 적어도 m 번만큼일치시킵니다. 그러나 n 번을초화하여일치시키지는않습니다. "a{1,3}b" 는 "ab", "aab", "aaab" 를포함하지만, "b" 나 "aaaab" 는포함하지않습니다

12 Java 자바야놀자 표준문법 문자들과 "[" 와 "]" 사이에포함된문자집합외부에서는 12 개문자가, 내부에서는오 직 5 개의문자 ("\", "^", "-", "[", "]") 만특수문자를의미합니다. 기능 설명. 문자한개와일치시킵니다. [ ] 문자들 여러문자들중하나의문자와일치시킵니다. [^ ] 부정 해당문자들을포함하지않는문자들을찾습니다. ^ 처음 처음시작하는부분을의미합니다. $ 끝 끝나는부분을의미합니다. ( ) 하위식 하위식을정의합니다. \w "_" 와영숫자 "_" 를포함한영문자와숫자를일치시킵니다. \W \w 반대 "_" 와영문자그리고숫자를제외한다른문자열들을일치시킵니다. \s 공백 공백문자와일치시킵니다. \S 공백제외 공백을제외한어떤것이든일치시킵니다. \d 숫자 숫자와일치시킵니다. \D 숫자제외 숫자가아닌항목을일치시킵니다. 다음코드는정규표현식의메타문자들에대한예입니다. 자바에서 \ 를문자열안에 사용하기위해서는 \\ 처럼 \ 를하나더붙여줘야합니다. RegularExpressionExample.java 1: public class RegularExpressionExample { 2: public static void main(string[] args) { 3: String str1 = "HelloWorld"; 4: if(str1.matches("helloworld")) { 5: System.out.println("HelloWorld"); 6: } 7: if(str1.matches("hello...")){ 8: System.out.println("Hello..."); 9: } 10: if(str1.matches("hel+oworld")) { 11: System.out.println("Hel+oWorld"); 12: } 13: str1 = "NiceWorld"; 14: if(str1.matches("(hello Nice)World")) {

13 Chapter 기본 API 클래스 14 15: System.out.println("(Hello Nice)World"); 16: } 17: if(str1.matches("\\w*")) { 18: System.out.println("_ 포함한영숫자 "); 19: } 20: if(str1.matches("\\w*")) { 21: System.out.println("_ 를포함한영숫자 "); 22: }else { 23: System.out.println("_ 를포함한영숫자가아님 "); 24: } 25: } 26: } 다음코드는문자열에서정규표현식을이용해서전화번호를마스크처리하는예입니 다. StringMaskExample.java public class StringMaskExample { public static void main(string[] args) { String custinfo = " 홍길동, 서울, ,30,M"; } custinfo = custinfo.replaceall("\\d{3}-\\d{4}-\\d{4}", "***-****-****"); System.out.println(custInfo); } Pattern & Matcher Pattern 클래스와 Matcher 클래스를이용하면문자열에서정규표현식을이용하여원 하는형식을갖는문자열을추출할수있습니다. 두클래스모두 JDK 1.4 에추가되었 으며 java.util.regex 패키지안에정의되어있습니다. Pattern Pattern 클래스는정규표현식을컴파일한객체입니다. Pattern 클래스의 API 문 서 39) 를참고하면자바의정규표현식문자열들에대해더많은예를볼수있습니다. Pattern 클래스는 static 메서드를이용해서객체를생성합니다. 39)

14 Java 자바야놀자 다음표는 Pattern 객체를생성하기위한메서드입니다. static Pattern static Pattern 메서드와설명 compile(string regex) 정규표현식을이용하여패턴으로컴파일합니다. compile(string regex, int flags) 주어진플래그값과정규표현식을이용하여패턴으로컴파일합니다. 플래그값은 CASE_INSENSITIVE, MULTILINE, DOTALL, UNICODE_CASE, CANON_EQ, UNIX_LINES, LITERAL, UNICODE_CHARACTER_CLASS 그리고 COMMENTS 등을가질수있으며비트연산자를이용하여여러개지정할수있습니다 Pattern 클래스의 matcher() 메서드를이용하여 Matcher 객체를생성할수있습니다. 리턴타입 Matcher 메서드와설명 matcher(charsequence input) 이패턴과지정한입력을매치하는정규표현엔진을만듭니다. Matcher Matcher 클래스는패턴을이용하여찾기위한클래스입니다. 다음표는 Matcher 클 래스의주요메서드들에대한설명입니다. 리턴타입 boolean boolean String 메서드와설명 find() 문자열에서다음매치하는문자열을찾습니다. find(int index) 문자열의 index 위치이후부터다음매치하는문자열을찾습니다. group() 이전 match 에서찾은문자열을반환합니다. 다음코드는 Pattern 클래스와 Matcher 클래스를이용하여문자열에서전화번호만뽑 아내는예입니다. RegexMatcherExample.java 1: import java.util.regex.matcher; 2: import java.util.regex.pattern; 3: 4: public class RegexMatcherExample { 5: 6: public static void main( String args[] ) { 7: String customerinfo = 8: " 홍길동은 30세이며서울시강남구에거주합니다. " 9: + " 그의집전화번호는 이며 " 10: + " 휴대폰번호는 입니다."; 11:

15 Chapter 기본 API 클래스 14 12: String pattern = "\\d{2,3}-\\d{3,4}-\\d{4}"; 13: 14: Pattern r = Pattern.compile(pattern); 15: 16: Matcher m = r.matcher(customerinfo); 17: int count = 0; 18: while(m.find()) { 19: count++; 20: System.out.print(" 위치 : " + m.start() + "\t"); 21: System.out.println(" 전화번호 : " + m.group()); 22: } 23: System.out.println(" 발견된전화번호수 : " + count); 24: } 25: }

16 Java 자바야놀자 Object Object 클래스는모든클래스의최상위클래스입니다. Object 클래스의메서드는모든 메서드가재정의할수있습니다. Object 클래스의주요메서드들의메서드선언입니다. - protected Object clone() throws CloneNotSupportedException - public int hashcode() - public boolean equals(object obj) - public String tostring() - public final void wait(long timeout) throws InterruptedException - public final void wait(long timeout, int nanos) throws InterruptedException - public final void wait() throws InterruptedException - public final void notify() - public final void notifyall() - protected void finalize() throws Throwable 객체동등비교 == 연산자는두변수의값을비교하여같은값이면 true를반환합니다. 그러나비교하는변수가객체일경우에는객체의값을이용하여비교하는것이아니고객체의주소 ( 해시코드 ) 값을비교하기때문에내용이같더라도다른객체이면 false를반환합니다. 동등비교에사용하는변수가객체변수일경우 equals() 메서드를이용하여비교할수있습니다. 대부분 Java API에서제공하는클래스들은 equals() 메서드를재정의하고있으므로 equals() 메서드를사용할수있습니다. 다음코드는 String 객체를이용하여 == 연산자와 equals() 메서드차이점을보겠습 니다. StringEqualsExample.java 1: public class StringEqualsExample { 2: public static void main(string[] args) { 3: String s1 = "Hello"; 4: String s2 = "Hello"; 5: String s3 = new String("Hello"); 6: String s4 = new String("Hello"); 7: System.out.println("s1 == s2 : " + (s1 == s2));

17 Chapter 기본 API 클래스 14 8: System.out.println("s1 == s3 : " + (s1 == s3)); 9: System.out.println("s3 == s4 : " + (s3 == s4)); 10: System.out.println("s1.equals(s2) : " + s1.equals(s2)); 11: System.out.println("s1.equals(s3) : " + s1.equals(s3)); 12: System.out.println("s3.equals(s4) : " + s3.equals(s4)); 13: } 14: } 위코드에서 s1, s2, s3, s4 변수는모드 String 객체입니다. 그런데 s1과 s2는문자열상수를직접변수에대입시켰습니다. 그러나 s3, s4는 new 키워드를이용하여객체를생성시켰습니다. 자바는 new 키워드를이용하연항상새로운객체를생성합니다. 그러므로 s3, s4 객체는값은같지만두객체의주소는다릅니다. s3과 s4 변수의내용이같은지비교하려면 String 클래스에재정의되어있는 equals() 메서드를이용하면됩니다. 실행결과에서도보듯이 s3, s4 문자열변수의내용을비교하기위해서는 equals() 메서드를이용해야합니다 equals() 와 hashcode() String 클래스에는 equals() 메서드가재정의되어있기때문에 equals() 메서드를이 용하여객체의동등비교를할수있습니다. 그러나직접클래스를정의하고객체동 등비교를하기위해서라면 equals() 메서드를재정의해야합니다. 그런데, 객체동등비교를위해재정의하는메서드가 equals() 만있는것은아닙니다. 객체동등비교를매번 equals() 메서드를이용한다면객체가가진모든속성들을모두비교해야하기때문에성능이저하될수있을것입니다. 만약에두객체의해시코드값을계산하여두객체의해시코드값이다를경우는두객체가다른객체이므로 equals() 메서드를이용해서객체동등비교를할필요가없을것입니다. 해시코드는 Object 클래스의 hashcode() 메서드를이용해반환된값을이용합니다. 그러므로사용자정의클래스에 hashcode() 메서드를재정의하고 equals() 메서드와

18 Java 자바야놀자 hashcode() 메서드를객체동등비교에사용합니다. hashcode() 메서드는리턴한해 시코드값이다르면두객체는다름을보장하도록구현하면됩니다. 객체동등을위해 hashcode() 메서드와 equals() 메서드를재정의하는것은어렵지 않습니다. 아이디와색상정보를갖는펜클래스를정의해예를들겠습니다. 펜클래스는아래와같이작성할수있습니다. Pen.java 1: public class Pen { 2: String id 3: String color 4: public Pen(String id, String color) { 5: this.id = id 6: this.color = color 7: } 8: // hashcode 메서드와 equals() 메서드재정의 9: } Pen 클래스의인스턴스를생성하고이를비교하는코드를작성하면다음과같습니다. PenEqualsExample.java 47: public class PenEqualsExample { 48: public static void main(string[] args) { 49: Pen p1 = new Pen("p0001", " 빨간팬 "); 50: Pen p2 = new Pen("p0001", " 빨간팬 "); 51: System.out.println("p1 == p2 : " + (p1 == p2)); 52: System.out.println("p1.equals(p2) : " + p1.equals(p2)); 53: } 54: } Pen 객체 p1, p2는아이디 (id) 와색상 (color) 이같습니다. 만일아이디와색상이같을경우두객체는같은객체임을보장하고싶습니다. 그런데실행결과에는 == 연산자와 equals() 메서드모두 false를출력하고있습니다. 이코드는아직 Pen 클래스에 equals() 메서드와 hashcode() 메서드를구현하지않았으므로실행결과는모두 false가출력됩니다. 그래서 Pen 클래스에 equals() 메서드와 hashcode() 메서드를추가합니다. 이클립스를사용한다면소스코드에서마우스오른쪽버튼을클릭한다음 Source > Generate hashcode() and equals()... 메뉴를선택하면 equals() 메서드와 hashcode() 메서드를쉽게재정의할수있습니다.

19 Chapter 기본 API 클래스 14 Generate hashcode() and equals() 창이뜨면객체동등비교에사용할변수들을체크한다음 [OK] 버튼만클릭해주면됩니다. 완성된 Pen 클래스는다음과같습 니다. Pen.java( ) 1: public class Pen { 2: String id; 3: String color; 4: public Pen(String id, String color) { 5: this.id = id; 6: this.color = color; 7: } 9: public int hashcode() { 10: final int prime = 31; 11: int result = 1; 12: result = prime * result + ((color == null)? 0 : color.hashcode()); 13: result = prime * result + ((id == null)? 0 : id.hashcode()); 14: return result; 15: } 17: public boolean equals(object obj) { 18: if (this == obj) 19: return true; 20: if (obj == null) 21: return false; 22: if (getclass()!= obj.getclass()) 23: return false; 24: Pen other = (Pen) obj; 25: if (color == null) { 26: if (other.color!= null)

20 Java 자바야놀자 27: return false; 28: } else if (!color.equals(other.color)) 29: return false; 30: if (id == null) { 31: if (other.id!= null) 32: return false; 33: } else if (!id.equals(other.id)) 34: return false; 35: return true; 36: } 37: } PenEqualsExample.java 파일을다시실행하면 equals() 메서드를이용한객체동등비교시 true가출력됩니다. 그런데 Pen 클래스 hashcode() 메서드는필요없을것같습니다. 사실위예제에서 hashcode는필요없습니다. 그런데만일같은객체는한개만저장하는것을보장하는자료구조에 Pen 객체를저장할때는어떨까요? 다음 PencaseExample 클래스에서는 HashSet 클래스를이용해 Pen 객체를저장하는 예를보여주고있습니다. HashSet 은동일객체를저장하지않도록하는자료구조클래 스중하나입니다. PencaseExample.java 1: import java.util.hashset; 2: 3: public class PencaseExample { 4: public static void main(string[] args) { 5: Pen p1 = new Pen("p0001", " "); 6: Pen p2 = new Pen("p0001", " 빨간팬 "); 7: 8: HashSet<Pen> pens = new HashSet<Pen>(); 9: System.out.println(pens.add(p1)); 10: System.out.println(pens.add(p2)); 11: for(pen pen : pens) { 12: System.out.println(pen); 13: } 14: } 15: } 위코드를실행시키면오른쪽결과처럼 add(p1) 의결과는 true 이지만 add(p2) 는 false 가출력됩니다. 이것은두객체가같은객체로판별되고그래서두번째 add 한객체는 HashSet 엘리먼트에추가가되지않음을의미합니다. 실제 pens 세트에저장되어있는엘리먼트를출력할때에도 Pen 객체가하나만출력되는것을확인할수있습니다.

21 Chapter 기본 API 클래스 14 그러면, Pen.java 파일의 hashcode() 메서드를주석처리하고실행해보세요. 여러줄주석처리는블록을설정한다음 Ctrl+/ 를누르면쉽게주석을생성할수있습니다. Pen 클래스에서 hashcode() 메서드를주석처리하고 PencaseExample 클래스를실행시키면 HashSet에 Pen 객체가둘다저장되는것을확인할수있습니다. HashSet 클래스의 add() 메서드는객체저장을성공하면 true, 그렇지않다면 falsue를반환합니다. 즉, 동일객체가이미 HashSet에저장되어있어같은객체가저장되지않을경우 false를반환합니다 tostring() 가끔프로그램을작성하다보면객체가가진값을화면에출력해봐야할경우가있습니다. 그럴경우에 println() 메서드를사용할수있는데 println() 메서드인자가객체일경우자동으로.toString() 을붙여실행시켜줍니다. tostring() 메서드도 Object에정의되어있는메서드이며모든클래스에서재정의할수있습니다. 이클립스에서는 tostring() 메서드도자동을생성시킬수있습니다. 소스코드화면에서마우스오른쪽버튼을클릭한다음 Source > Generate tostring()... 을선택하면다음과같이 Generate tostring() 창이보입니다. 이곳에서화면에출력하고싶은필드들을선택한다음 [OK] 버튼을클릭하면 tostring() 메서드가자동으로만들어집니다.

22 Java 자바야놀자 다음은 Pen.java 에추가된 tostring() 메서드입니다. Pen 클래스에 tostring() 메서드를추가한다음 PencaseExample.java 파일을실행하 면다음과같이 Pen 의정보가출력됩니다.

23 Chapter 기본 API 클래스 클래스 프로그램에서날짜와시간을다루는것은매우중요한일입니다. 자바는시스템의날 짜와시간을알수있도록 java.util 패키지에 Date 클래스와 Calendar 클래스를제공 합니다 Date Date 클래스는컴퓨터의날짜정보를읽어 Date 객체로만들어줍니다. Date 클래스의생성자는현재날짜정보를 Date 객체로만들어주는 Date() 기본생성자와 1970 년 1월 1일 00:00:00 초이후의시간을밀리초단위로입력해서 Date 객체로만들어주는 Date(long date) 생성자가있습니다. Date 클래스의주요메서드는 tostring() 과 gettime() 입니다. tostring() 은현재날짜와시간정보를문자열로반환하며, gettime() 메서드는현재날짜시간을 1970년 1월 1일 0시를기준으로현재시점을밀리초값으로반환합니다. DateExample.java 1: import java.util.date; 2: 3: public class DateExample { 4: public static void main(string[] args) { 5: Date now = new Date(); 6: System.out.println(now); 7: System.out.println(now.getTime()); 8: Date after = new Date(); 9: System.out.println(after.getTime()); 10: } 11: } Date 클래스는주로객체들사이에날짜및시간정보를주고받기위해사용합니다. 현재시간정보를출력하기위해서라면 Calendar 클래스를사용할것을권합니다. 현재날짜및시간을조회할때마다 Date 객체를생성해야하기때문에날짜시간정보를반복적 / 주기적으로조회하는경우라면 Calendar 클래스가더좋습니다. 그리고 Date 클래스는 java.util 패키지에만있는것은아닙니다. java.sql 패키지에도 Date 클래스가있습니다. JDBC 프로그래밍할때에는 java.sql 패키지의 Date 클래스가사용될수있습니다.

24 Java 자바야놀자 Calendar Calendar 클래스는달력을표현한추상클래스입니다. Date 클래스처럼 new 를이용 하여직접객체를생성할수없고 getinstance() 메서드를이용하여 Locale 또는 TimeZone 에따른 Calendar 객체를얻을수있습니다. 다음은 Calendar 클래스의 getinstance() 메서드들입니다. 메서드와설명 static Calendar static Calendar static Calendar static Calendar getinstance() Gets a calendar using the default time zone and locale. getinstance(locale alocale) Gets a calendar using the default time zone and specified locale. getinstance(timezone zone) Gets a calendar using the specified time zone and default locale. getinstance(timezone zone, Locale alocale) Gets a calendar with the specified time zone and locale. 기본적으로 getinstance() 메서드를이용하면현재운영체제에설정되어있는 TimeZone( 시간대 ) 를기준으로 Calendar 객체를얻을수있습니다. Calendar 객체를얻었다면 get() 메서드와 Calendar 클래스의여러상수변수들을이용하여날짜및시간정보를얻을수있습니다. 다음코드는 Calendar 클래스를이용하여날짜및시간정보를출력하는프로그램입 니다. CalendarExample.java 1: import java.util.calendar; 2: import java.util.timezone; 3: 4: public class CalendarExample { 5: public static void main(string[] args) { 6: Calendar cal = Calendar.getInstance(); 7: System.out.print(TimeZone.getDefault().getID() + " : "); 8: System.out.print(cal.get(Calendar.YEAR) + " "); 9: System.out.print(cal.get(Calendar.MONTH)+1 + " 월 "); 10: System.out.print(cal.get(Calendar.DATE) + " 일 "); 11: System.out.print(cal.get(Calendar.AM_PM) == 0? " 오전 " : " 오후 " ); 12: System.out.print(cal.get(Calendar.HOUR) + " 시 "); 13: System.out.print(cal.get(Calendar.MINUTE) + " 분 "); 14: System.out.println(cal.get(Calendar.SECOND) + " 초 "); 15: System.out.println(cal.getTimeInMillis()); 16: 17: TimeZone timezone = TimeZone.getTimeZone("America/Los_Angeles"); 18: cal = Calendar.getInstance(timeZone);

25 Chapter 기본 API 클래스 14 19: System.out.print(timeZone.getID() + " : "); 20: System.out.print(cal.get(Calendar.YEAR) + " "); 21: System.out.print(cal.get(Calendar.MONTH)+1 + " 월 "); 22: System.out.print(cal.get(Calendar.DATE) + " 일 "); 23: System.out.print(cal.get(Calendar.AM_PM) == 0? " 오전 " : " 오후 " ); 24: System.out.print(cal.get(Calendar.HOUR) + " 시 "); 25: System.out.print(cal.get(Calendar.MINUTE) + " 분 "); 26: System.out.println(cal.get(Calendar.SECOND) + " 초 "); 27: System.out.println(cal.getTimeInMillis()); 28: } 29: } 연도와날짜, 시간, 분, 초는조회한값을그대로사용해도되지만월은 1 을더해줘야 합니다. Calendar.MONTH 상수를이용해월을출력하면 1 월일경우 0, 2 월일경우 1 이출력됩니다. 사용가능한시간대를알고싶다면다음 TimeZone.getAvailableIDs() 메서드를이용 하면됩니다. PrintTimeZoneIDs.java 1: import java.util.timezone; 2: 3: public class PrintTimeZoneIDs { 4: public static void main(string[] args) { 5: for(string id : TimeZone.getAvailableIDs()) { 6: System.out.println(id); 7: } 8: } 9: }

26 Java 자바야놀자 시간대클래스 Locale Locale 객체는특정지리적, 정치적또는문화적영역을나타냅니다. 로케일이작업을 수행하는데필요한작업을로케일구분이라고하며로케일을사용하여사용자정보 를조정합니다. 다음표는 Locale 클래스의주요생성자입니다. 설명 Locale(String language) 주어진언어코드로로케일객체를생성합니다. Locale(String language, String country) 주어진언어와국가코드로로케일객체를생성합니다. 다음코드는 Locale 을지정하는예입니다. Locale 은단독으로사용되는경우는많지 않습니다. 뒤에서설명하는형식화예에서 NumberFormat 클래스등과같이사용되는 경우가많습니다. LocaleExample.java 1. import java.text.decimalformat; 2. import java.text.numberformat; 3. import java.util.locale; public class LocaleExample { static public void localizedformat(string pattern, double value, Locale loc ) { 8. NumberFormat nf = NumberFormat.getNumberInstance(loc); 9. DecimalFormat df = (DecimalFormat)nf; 10. df.applypattern(pattern); 11. String output = df.format(value); 12. System.out.println(pattern + " " + output + " " + loc.tostring()); 13. } public static void main(string[] args) { 16. Locale locale = new Locale("ko", "KR"); 17. System.out.println(locale.getLanguage()); 18. System.out.println(locale.getCountry()); 19. System.out.println(locale.getDisplayCountry()); Locale locale2 = new Locale("en", "US"); 22. System.out.println(locale2.getLanguage()); 23. System.out.println(locale2.getCountry());

27 Chapter 기본 API 클래스 System.out.println(locale2.getDisplayCountry()); System.out.println(); 27. Locale[] locales = { 28. new Locale("en", "US"), 29. new Locale("de", "DE"), 30. new Locale("fr", "FR"), 31. new Locale("ko", "KR") 32. }; for (int i = 0; i < locales.length; i++) { 35. localizedformat("###,###.###", , locales[i]); 36. } 37. }//end main } Timezone Timezone 객체는시간대오프셋을나타냅니다. 일반적으로프로그램이실행되는시간대를기반으로 TimeZone을만드는 getdefault() 메서드를사용하여 TimeZone을얻습니다. 예를들면한국에서실행되는프로그램의경우 getdefault() 메서드는한국표준시를기반으로 TimeZone 객체를만듭니다. gettimezone() 메서드는지정한시간대의 TimeZone을얻습니다. 다음표는 TimeZone 클래스객체를반환하는메서드입니다. 메서드와설명 static TimeZone static TimeZone gettimezone(string ID) 타임존 ID 문자열로타임존객체를생성합니다. gettimezone(zoneid zoneid) 주어진 ZoneId 객체타임존객체를생성합니다. 다음코드는 TimeZone 클래스를이용하여표준시간대와의오프셋을출력합니다. 그 리고디폴트타임존을이용할경우와타임존을지정할경우에출력되는날짜값이어 떻게다른지를보여주는예입니다. TimezoneExample.java 1. import java.text.dateformat; 2. import java.text.simpledateformat; 3. import java.util.calendar; 4. import java.util.date; 5. import java.util.timezone; 6.

28 Java 자바야놀자 7. public class TimezoneExample { public static void main(string[] args) { 10. Calendar calendar = Calendar.getInstance(); 11. System.out.println( (calendar.get(calendar.zone_offset) calendar.get(calendar.dst_offset)) / (60 * 1000)); TimeZone tz = TimeZone.getDefault(); 15. System.out.println(tz); 16. System.out.println("Timezone offset: " + tz.getid()); 17. System.out.println("Timezone name: " + tz.getdisplayname()); 18. System.out.println("Timezone ID: " + (tz.getrawoffset()/1000/60) + " 분 "); 19. System.out.println("Summer Time 사용여부 : " + tz.usedaylighttime()); Date date = new Date(); 22. System.out.println(date); DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss (z Z)"); 25. System.out.format("%s%n%s%n%n", tz.getdisplayname(), df.format(date)); TimeZone tz2 = TimeZone.getTimeZone("Asia/Seoul"); 28. df.settimezone(tz2); 29. System.out.format("%s%n%s%n%n", tz2.getdisplayname(), df.format(date)); TimeZone tz3 = TimeZone.getTimeZone("America/Los_Angeles"); 32. df.settimezone(tz3); 33. System.out.format("%s%n%s%n%n", tz3.getdisplayname(), df.format(date)); 34. } }

29 Chapter 기본 API 클래스 클래스 숫자를원하는형식의문자열로출력하고싶을때사용하는것이형식화 (Format) 클래스들입니다. 형식화클래스를이용하면숫자에콤마 (,) 를표기하거나원하는자리까지출력하는일, 날짜를원하는형식의날짜로출력하는것을쉽게처리할수있습니다. 형식화클래스들은 java.text 패키지에정의되어있습니다. 대표적인형식화클래스들 로는숫자형식화를위한 DecimalFormat 과날짜형식화를위한 SimpleDateFormat 그리고문자열형식화를위한 MessageFormat 등이있습니다 DecimalFormat DecimalFormat 클래스는 NumberFormat 추상클래스를구현한클래스들중하나입니다. DecimalFormat 클래스는 Western, Arabic 및 Indic 숫자에대한지원을포함하여모든지역에서숫자를구문분석하고형식을지정할수있도록설계된다양한기능이있습니다. 또한정수 (123), 고정소수점수 (123.4), 과학표기법 (1.23E4), 백분율 (12%) 및통화금액 ($123) 을비롯한여러가지종류의숫자를지원합니다. 이들모두는지역화 (Locale) 될수있습니다. DecimalFormat 클래스는숫자를보기좋게표현해주는것만아닙니다. 지역화를적용하여사용자의실수를줄일수있게도와주기도합니다. 이것은매우중요합니다. 만일여러분이독일에 유로를송금해야한다고가정해봅시다. 만일평소에우리가표기하던방법으로송금액을표기 ( ) 한다고하면여러분의통장에서 12 만3천450유로가빠져나갈것입니다. 40) DecimalFormat은숫자데이터를원하는형식으로표현하기위해패턴을지정해야합 니다. 다음표는패턴들의예를설명합니다. 위치 지역화 의미 0 숫자 가능 숫자 # 숫자 가능 숫자, 0은표시하지않습니다.. 숫자 가능 소수구분기호또는화폐소수구분기호 - 숫자 가능 음수기호, 숫자 가능 그룹화구분기호 40) 독일은소수점을, 로표기하고정수자릿수구분자를. 을이용합니다.

30 Java 자바야놀자 E 가능 ; % \u2030 (\u00a4) ' 서브패턴경계접두어또는접미어접두어또는접미어 접두어또는접미어 접두어또는접미어 가능 과학표기법으로가수와지수를구분합니다. 접두어또는접미사에따옴표를쓸필요가없습니다. 양수및음수하위패턴구분 가능 100 을곱하고백분율로표시하세요. 가능 1000 을곱하고퍼밀리값으로표시하세요. 불가능 불가능 통화기호, 통화기호로대체되었습니다. 두배가되면국제통화기호로바뀝니다. 패턴에있으면소수구분기호대신화폐소수구분기호가사용됩니다. 접두어와접미어에특수문자를사용할때 ' 로묶어줍니다.( 예 : 123을 "'#'#" 포맷으로표현하면 "#123") '(a single quote) 자신을사용하려면 ' 를하나더표기합니다.( 예 : "# o''clock") 다음코드는 DecimalFormat 을이용하여주어진숫자를다양한형식으로표현하는예 제입니다. DecimalFormatExample.java 1: import java.text.decimalformat; 2: import java.text.numberformat; 3: import java.util.locale; 4: 5: public class DecimalFormatExample { 6: 7: static public void customformat(string pattern, double value ) { 8: DecimalFormat myformatter = new DecimalFormat(pattern); 9: String output = myformatter.format(value); 10: System.out.println(value + "\t" + pattern + "\t" + output); 11: } 12: 13: static public void main(string[] args) { 14: customformat("###,###.###", ); 15: customformat("###.##", ); 16: customformat(" ", ); 17: customformat("$###,###.###", ); 18: customformat("\u00a5###,###.###", ); 19: customformat("\u20a9###,###.###", ); 20: 21: DecimalFormat deformatter = (DecimalFormat)NumberFormat.getNumberInstance(new Locale("de", "DE")); 22: deformatter.applypattern("###,###.###"); 23: String output = deformatter.format( ); 24: System.out.println( \t###,###.### \t" + output); 25: } 26: }

31 Chapter 기본 API 클래스 SimpleDateFormat SimpleDateFormat 은로케일에따라날짜형식을지정하고구문분석하는데필요한 구체적인클래스입니다. SimpleDateFormat 을이용하면날짜를텍스트로형식화하는 것, 텍스트를날짜객체로구문분석하는것, 그리고정규화를할수있습니다. 다음은날짜와시간패턴문자들에대한설명입니다. Date 또는 Time Component 표현 예 G 지정자 텍스트 AD y 연도 연도 1996; 96 Y 연도 연도 2009; 09 M 월 월 July; Jul; 07 w 연도에서주 숫자 27 W 월에서주 숫자 2 D 연도에서날짜 숫자 189 d 월에서날짜 숫자 10 F 월에서요일 숫자 2 E 주에서요일이름 텍스트 Tuesday; Tue u 주에서요일의수 (1 = Monday,..., 7 = Sunday) 숫자 1 a 오전 / 오후표시 텍스트 PM H 시간 (0-23) 숫자 0 k 시간 (1-24) 숫자 24 K 오전 / 오후시간 (0-11) 숫자 0 h 오전 / 오후시간 (1-12) 숫자 12 m 분 숫자 30 s 초 숫자 55 S 밀리초 숫자 978 z 타임존 일반타임존 Pacific Standard Time; PST; GMT-08:00 Z 타임존 RFC 822 타임존 X 타임존 ISO 8601 타임존 -08; -0800; -08:00

32 Java 자바야놀자 다음표는날짜와시간패턴이 kr_kr로케일과 en_us 로케일에서각각어떻게변환되 는지보여주고있습니다. 주어진날짜와시간은 Asia/Seoul 타임존에서한국표준시 2017년 3월 13일오후 10시 16분 55초입니다. 시간패턴 결과 (ko_kr 로케일 ) "yyyy.mm.dd G 'at' HH:mm:ss z" at 22:16:55 KST "EEE, MMM d, ''yy" 월, 3월 13, '17 "h:mm a" 10:16 오후 "hh 'o''clock' a, zzzz" 10 o'clock 오후, 한국표준시 "K:mm a, z" 10:16 오후, KST "yyyyy.mmmmm.dd GGG hh:mm aaa" 월.13 서기 10:16 오후 "EEE, d MMM yyyy HH:mm:ss Z" 월, 13 3월 :16: "yymmddhhmmssz" "yyyy-mm-dd't'hh:mm:ss.sssz" T22:16: "yyyy-mm-dd't'hh:mm:ss.sssxxx" T22:16: :00 "YYYY-'W'ww-u" 2017-W11-1 날짜와시간패턴 결과 (en_us 로케일 ) "yyyy.mm.dd G 'at' HH:mm:ss z" AD at 22:16:55 KST "EEE, MMM d, ''yy" Mon, Mar 13, '17 "h:mm a" 10:16 PM "hh 'o''clock' a, zzzz" 10 o'clock PM, Korea Standard Time "K:mm a, z" 10:16 PM, KST "yyyyy.mmmmm.dd GGG hh:mm aaa" March.13 AD 10:16 PM "EEE, d MMM yyyy HH:mm:ss Z" Mon, 13 Mar :16: "yymmddhhmmssz" "yyyy-mm-dd't'hh:mm:ss.sssz" T22:16: "yyyy-mm-dd't'hh:mm:ss.sssxxx" T22:16: :00 "YYYY-'W'ww-u" 2017-W11-1 다음코드는날짜와시간패턴예를보여주고있습니다. 실행시날짜와시간은 Asia/Seoul 타임존에서한국표준시 2017 년 3 월 13 일오후 10 시 16 분 55 초입니다. DateFormatExample.java 1: import java.text.dateformat; 2: import java.text.simpledateformat; 3: import java.util.calendar; 4: import java.util.date; 5: import java.util.locale; 6: import java.util.timezone; 7: 8: public class DateFormatExample { 9:

33 Chapter 기본 API 클래스 14 10: static void displaydateandtime(string format, Locale locale, Date date) { 11: DateFormat df = new SimpleDateFormat(format, locale); 12: System.out.format("%s : %s%n", format, df.format(date)); 13: } 14: public static void main(string[] args) { 15: Date date = Calendar.getInstance().getTime(); 16: Locale kolocale = new Locale("ko", "KR"); 17: TimeZone tz = TimeZone.getTimeZone("Asia/Seoul"); 18: System.out.println(tz.getDisplayName() + " : " + date); 19: displaydateandtime("yyyy.mm.dd G 'at' HH:mm:ss z", kolocale, date); 20: displaydateandtime("eee, MMM d, ''yy", kolocale, date); 21: displaydateandtime("h:mm a", kolocale, date); 22: displaydateandtime("hh 'o''clock' a, zzzz", kolocale, date); 23: displaydateandtime("k:mm a, z", kolocale, date); 24: displaydateandtime("yyyyy.mmmmm.dd GGG hh:mm aaa", kolocale, date); 25: displaydateandtime("eee, d MMM yyyy HH:mm:ss Z", kolocale, date); 26: displaydateandtime("yymmddhhmmssz", kolocale, date); 27: displaydateandtime("yyyy-mm-dd't'hh:mm:ss.sssz", kolocale, date); 28: displaydateandtime("yyyy-mm-dd't'hh:mm:ss.sssxxx", kolocale, date); 29: displaydateandtime("yyyy-'w'ww-u", kolocale, date); 30: 31: System.out.println(); 32: Locale uslocale = new Locale("en", "US"); 33: System.out.println(tz.getDisplayName() + " : " + date); 34: displaydateandtime("yyyy.mm.dd G 'at' HH:mm:ss z", uslocale, date); 35: displaydateandtime("eee, MMM d, ''yy", uslocale, date); 36: displaydateandtime("h:mm a", uslocale, date); 37: displaydateandtime("hh 'o''clock' a, zzzz", uslocale, date); 38: displaydateandtime("k:mm a, z", uslocale, date); 39: displaydateandtime("yyyyy.mmmmm.dd GGG hh:mm aaa", uslocale, date); 40: displaydateandtime("eee, d MMM yyyy HH:mm:ss Z", uslocale, date); 41: displaydateandtime("yymmddhhmmssz", uslocale, date); 42: displaydateandtime("yyyy-mm-dd't'hh:mm:ss.sssz", uslocale, date); 43: displaydateandtime("yyyy-mm-dd't'hh:mm:ss.sssxxx", uslocale, date); 44: displaydateandtime("yyyy-'w'ww-u", uslocale, date); 45: } 46: }

34 Java 자바야놀자 MessageFormat MessageFormat 클래스는언어에중립적인방법으로문자열들이연결된메시지를생 성하는수단을제공합니다. MessageFormat 은최종사용자에게표시되는메시지를생 성할때사용합니다. MessageFormat 은객체세트를가져와서형식을지정한다음서식이지정된문자열 을적절한위치의패턴에삽입합니다. MessageFormat는다른 Format 클래스와달리, getinstance() 스타일팩토리메서드 41) 가아닌생성자중하나를사용하여 MessageFormat 객체를생성합니다. MessageFormat 자체가로케일고유의동작을구현하지않기때문에팩토리메서드가필요하지않습니다. 모든로케일특정동작은사용자가제공한패턴과삽입된인수에사용되는하위형식에의해정의됩니다. MessageFormat 은다음형식의패턴을사용합니다. MessageFormatPattern FormatElement 형식또는값 String MessageFormatPattern FormatElement String { ArgumentIndex } { ArgumentIndex, FormatType } { ArgumentIndex, FormatType, FormatStyle } FormatType number, date, time, choice 하나 FormatStyle: short, medium, long, full, integer, currency, percent, SubformatPattern 다음코드는 MessageFormat 을이용하여문자열에형식을지정하여연결된메시지를 생성하는예입니다. MessageFormatExample.java 1: import java.text.messageformat; 2: import java.util.date; 3: 4: public class MessageFormatExample { 5: public static void main(string[] args) { 6: new MessageFormatExample(); 7: } 8: 41) getinstance() 메서드를갖는대표적인클래스는 Calendar 클래스입니다. getinstance() 메서드는객체를생성하여반환하는용도입니다. 이처럼객체를생성하기위해사용하는메서드들을팩토리메서드 (Factory Method) 라부릅니다.

35 Chapter 기본 API 클래스 14 9: public MessageFormatExample() { 10: Object[] args = {"foo", "bar", new Long(99)}; 11: MessageFormat mf = new MessageFormat("1:{0} 2:{1} 3:{2}"); 12: System.out.println(mf.format(args)); 13: 14: int meetingtime = 10; 15: String event = " 면접심사 "; 16: 17: String result = MessageFormat.format( 18: " 오늘 ({0, date}) {1,number,integer} 시에 {2} 가있습니다.", 19: new Date(), meetingtime, event); 20: System.out.println(result); 21: } 22: } ChoiceFormat ChoiceFormat을사용하면숫자범위에형식을첨부할수있습니다. 일반적으로는여러개형식을처리하기위해 MessageFormat에서사용됩니다. 선택항목은 double 유형리스트의오름차순으로지정되며, 각항목은다음항목까지의반개방 (half open) 간격을지정합니다. ChoiceFormat 는다른 Format 클래스와달리, getinstance 스타일팩토리메서드가 아닌생성자를사용하여 ChoiceFormat 객체를만듭니다. ChoiceFormat 는지정된로 케일에대해복잡한설정이필요없기때문에팩토리메서드가필요하지않습니다. ChoiceFormat 를작성할때는제한 (limit) 배열과형식 (format) 배열을지정해야합니 다. 제한배열과형식배열의길이는동일해야합니다. 다음코드는 ChoiceFormat 을이용하여메시지를선택하는예입니다. ChoiceFormatExample1.java 1: import java.text.choiceformat; 2: import java.text.parseposition; 3: 4: public class ChoiceFormatExample1 { 5:

36 Java 자바야놀자 6: public static void main(string[] args) { 7: double[] limits = {1,2,3,4,5,6,7}; 8: String[] dayofweeknames = {"Sun","Mon","Tue","Wed","Thur","Fri","Sat"}; 9: ChoiceFormat choiceform = new ChoiceFormat(limits, dayofweeknames); 10: ParsePosition status = new ParsePosition(0); 11: for (double i = 0.0; i <= 8.0; ++i) { 12: status.setindex(0); 13: System.out.println(i + " -> " + choiceform.format(i) + " -> " 14: + choiceform.parse(choiceform.format(i),status)); 15: } 16: } 17: } 다음코드는 MessageFormat 과 ChoiceFormat 을같이사용한예 입니다. appleform 객체를이용하여사과의개수에따른선택항목 이지정되도록했습니다. 만일사과의개수가 2 개이상일경우에는 사과의개수가출력되도록 MessageFormat 을같이사용했습니다. MessageFormat 클래스의 setformatbyargumentindex() 메서드 는 format() 메서드인자로전달되는배열의값들중 ChoiceFormat 의 limit 값으로전달 되어야할항목의인덱스를지정합니다. ChoiceFormatExample2.java 1: import java.text.choiceformat; 2: import java.text.messageformat; 3: 4: public class ChoiceFormatExample2 { 5: public static void main(string[] args) { 6: 7: MessageFormat msgform = new MessageFormat("{0} 바구니에 사과가 {1}"); 8: 9: double[] applelimits = {0,1,2}; 10: String[] applepart = {" 없습니다.","1 개있습니다.","{1,number} 개있습니다."}; 11: ChoiceFormat appleform = new ChoiceFormat(appleLimits, applepart); 12: 13: msgform.setformatbyargumentindex(1, appleform); 14: 15: System.out.println(msgForm.format(new Object[]{" 그 ", new Long(2)})); 16: System.out.println(msgForm.format(new Object[]{" 그녀 ", new Long(0)})); 17: System.out.println(msgForm.format(new Object[]{" 나 ", new Long(1)})); 18: System.out.println(msgForm.format(new Object[]{" 너 ", new Long(5)})); 19: } 20: }

37 Chapter 기본 API 클래스 관련클래스 Random 난수를발생시키기위해 Math.random() 메서드를사용할수있습니다. 그러나 Random 클래스를이용하면보다쉽고직관적으로난수를발생시킬수있습니다. Random 클래스의인스턴스는난수를발생시키기위해서사용됩니다. 생성자는 seed 를지정하지않고객체를생성하는기본생성자와 long 형 seed 값을인자로갖는생성 자를가지고있습니다. 다음표는 Random 클래스의생성자입니다. 설명 Random() 난수발생객체를생성합니다. Random(long seed) 시드값을사용한난수발생객체를생성합니다. 만일두인스턴스가동일한시드 (seed) 로만들어지고각각에대해동일한순서로난 수를발생시키는메서드가호출되면두객체는동일한순서로난수시퀀스가생성되 고반환됩니다. 다음표는 Random 클래스의주요메서드들입니다. 메서드와설명 boolean void double float int int long void nextboolean() boolean 타입임의의값을반환합니다.(true 또는 false) nextbytes(byte[] bytes) 임의의바이트를생성하여주어진 bytes 배열에저장합니다. nextdouble() 0.0 부터 1.0 미만임의의값을 double 형으로생성합니다. nextfloat() 0.0 부터 1.0 미만임의의값을 float 형으로생성합니다. nextint() int 형임의의값을생성합니다. nextint(int bound) 0 부터 bound 미만의값을 int 형으로반환합니다. nextlong() long 형임의의값을생성합니다. setseed(long seed) seed 값을설정합니다.

38 Java 자바야놀자 다음코드는난수를발생하는예입니다. RandomClassExample.java 1: import java.util.random; 2: 3: public class RandomClassExample { 4: public static void main(string[] args) { 5: int numtests = 10; 6: 7: Random random = new Random(); 8: for ( int i=0; i<numtests; i++ ) { 9: int randomint = random.nextint(100); 10: System.out.format(" 테스트 %2d, 발생난수 %d\n", i+1, randomint ); 11: } 12: } 13: } Math Math 클래스에는지수, 로그, 제곱근및삼각함수와같은기본숫자연산을수행하기 위한메서드가포함되어있습니다. Math 클래스의멤버들은모두 static 으로선언되 어있기때문에객체를생성하지않고클래스이름만으로멤버를참조할수있습니다. 다음표는 Math 클래스의주요메서드들입니다. Math 클래스는 java.lang 패키지에 정의되어있습니다. static double static double static double static double static double static double static double 메서드와설명 abs(double a) 절대값을반환합니다. float, int, long 형파라미터를갖는메서드도중복정의되어있습니다. ceil(double a) 소수점이하를올림한값을반환합니다. cos(double a) cos 값을반환합니다. a 값은라디안 (radian) 42) 값으로입력해야합니다. floor(double a) 내림한값을반환합니다. log(double a) log 값은반환합니다. log10(double a) base 가 10 인로그값을반환합니다. max(double a, double b) 두수중에서큰값을반환합니다. float, int, long 형파라미터를갖는메서드도중복정의되어있습니다.

39 Chapter 기본 API 클래스 14 static double static double static double static long static int static double static double min(double a, double b) 수중에서작은값을반환합니다. float, int, long 형파라미터를갖는메서드도중복정의되어있습니다. pow(double a, double b) a 의 b 승수를반환합니다. random() 0.0 이상 1.0 미만의난수를반환합니다. round(double a) 반올림합니다. round(float a) 반올림합니다. sin(double a) sin 값을반환합니다. a 값은라디안 (radian) 값으로입력해야합니다. tan(double a) tan 값을반환합니다. a 값은라디안 (radian) 값으로입력해야합니다. 다음은 Math 클래스를테스트하는예입니다. MathClassExample.java 1: public class MathClassExample { 2: public static void main(string[] args) { 3: System.out.println(Math.random()); 4: System.out.println(Math.sin(30*(Math.PI/180))); 5: System.out.println(Math.cos(60*(Math.PI/180))); 6: System.out.println(Math.tan(45*(Math.PI/180))); 7: System.out.println(Math.pow(2, 3)); 8: System.out.printf("%d %d %d %d\n", (int)-3.6, (int)-3.4, (int)3.5, (int)3.6); 9: System.out.printf("%d %d %d %d\n", Math.round(-3.6), Math.round(-3.4), Math.round(3.5), Math.round(3.6)); 10: System.out.printf("%f %f %f %f\n", Math.ceil(-3.6), Math.ceil(-3.4), Math.ceil(3.5), Math.ceil(3.6)); 11: System.out.printf("%f %f %f %f\n", Math.floor(-3.6), Math.floor(-3.4), Math.floor(3.5), Math.floor(3.6)); 12: } 13: } 42) Radian = Degree * PI/180

40

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

07 자바의 다양한 클래스.key

07 자바의 다양한 클래스.key [ 07 ] . java.lang Object, Math, String, StringBuffer Byte, Short, Integer, Long, Float, Double, Boolean, Character. java.util Random, StringTokenizer Calendar, GregorianCalendar, Date. Collection, List,

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 2 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 20 장패키지 이번장에서학습할내용 패키지의개념 패키지로묶는방법 패키지사용 기본패키지 유틸리티패키지 패키지는연관된클래스들을묶는기법입니다. 패키지란? 패키지 (package) : 클래스들을묶은것 자바라이브러리도패키지로구성 ( 예 ) java.net 패키지 네트워크관련라이브러리 그림 20-1. 패키지의개념 예제 패키지생성하기 Q: 만약패키지문을사용하지않은경우에는어떻게되는가?

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

Tcl의 문법

Tcl의 문법 월, 01/28/2008-20:50 admin 은 상당히 단순하고, 커맨드의 인자를 스페이스(공백)로 단락을 짓고 나열하는 정도입니다. command arg1 arg2 arg3... 한행에 여러개의 커맨드를 나열할때는, 세미콜론( ; )으로 구분을 짓습니다. command arg1 arg2 arg3... ; command arg1 arg2 arg3... 한행이

More information

Microsoft PowerPoint - lec7_package [호환 모드]

Microsoft PowerPoint - lec7_package [호환 모드] Lecture 7: Package 패키지의선언 패키지의사용 JAR 파일 자바의언어패키지 2 연관된클래스나인터페이스를하나의단위로묶는방법 장점 여러개의클래스와인터페이스를하나의그룹으로다루는수단을제공 클래스이름사이의충돌문제를해결 패키지의종류 기본패키지 : java.lang, java.util, java.io, java.awt 사용자정의패키지 3 선언형태 package

More information

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력 자바의기본구조? class HelloJava{ public static void main(string argv[]){ system.out.println( hello,java ~ ){ } } # 하나하나뜯어살펴봅시다! public class HelloJava{ 클래스정의 public static void main(string[] args){ System.out.println(

More information

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

TEST BANK & SOLUTION

TEST BANK & SOLUTION TEST BANK & SOLUTION 어서와자바는처음이지!" 를강의교재로채택해주셔서감사드립니다. 본문제집을만드는데나름대로노력을기울였으나제가가진지식의한계로말미암아잘못된부분이있을것으로사료됩니다. 잘못된부분을발견하시면 chunik@sch.ac.kr로연락주시면더좋은책을만드는데소중하게사용하겠습니다. 다시한번감사드립니다. 1. 자바언어에서지원되는 8 가지의기초자료형은무엇인가?

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

Microsoft PowerPoint - 2강

Microsoft PowerPoint - 2강 컴퓨터과학과 김희천교수 학습개요 Java 언어문법의기본사항, 자료형, 변수와상수선언및사용법, 각종연산자사용법, if/switch 등과같은제어문사용법등에대해설명한다. 또한 C++ 언어와선언 / 사용방법이다른 Java의배열선언및사용법에대해서설명한다. Java 언어의효과적인활용을위해서는기본문법을이해하는것이중요하다. 객체지향의기본개념에대해알아보고 Java에서어떻게객체지향적요소를적용하고있는지살펴본다.

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

12-file.key

12-file.key 11 (String).. java.lang.stringbuffer. s String s = "abcd"; s = s + "e"; a b c d e a b c d e ,., "910359,, " "910359" " " " " (token) (token),, (delimiter). java.util.stringtokenizer String s = "910359,,

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Lecture 02 프로그램구조및문법 Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2018 자바프로그램기본구조 Hello 프로그램구조 sec01/hello.java 2/40 자바프로그램기본구조 Hello 프로그램구조

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 11 장상속 이번장에서학습할내용 상속이란? 상속의사용 메소드재정의 접근지정자 상속과생성자 Object 클래스 종단클래스 상속을코드를재사용하기위한중요한기법입니다. 상속이란? 상속의개념은현실세계에도존재한다. 상속의장점 상속의장점 상속을통하여기존클래스의필드와메소드를재사용 기존클래스의일부변경도가능 상속을이용하게되면복잡한 GUI 프로그램을순식간에작성

More information

4장.문장

4장.문장 문장 1 배정문 혼합문 제어문 조건문반복문분기문 표준입출력 입출력 형식화된출력 [2/33] ANSI C 언어와유사 문장의종류 [3/33] 값을변수에저장하는데사용 형태 : < 변수 > = < 식 > ; remainder = dividend % divisor; i = j = k = 0; x *= y; 형변환 광역화 (widening) 형변환 : 컴파일러에의해자동적으로변환

More information

Microsoft Word - PJ_scjp_9_0_1-lang.doc

Microsoft Word - PJ_scjp_9_0_1-lang.doc SCJP 강좌 Section 9 java.lang package 문서정보 문서제목 scjp 강좌 : Section 9 java.lang package 파일이름 PJ_scjp_9_0_1.pdf 작성자 신상훈, 김병필 작성일 2002년 1월 10일 버전 0.1 상태 초안 내용정보 예상독자개요 페이지 scjp 취득을원하는 java 초보 java.lang 패키지의

More information

(Microsoft PowerPoint - CLXBUOPUGXNK.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - CLXBUOPUGXNK.ppt [\310\243\310\257 \270\360\265\345]) 자바패기지 학습목표 자바패키지의개념을이해한다. 패키지의종류, 사용및선언방법을이해한다. 자바패키지압축 기능이비슷한라이브러리클래스나인터페이스들을하나의집단으로묶어놓은것 작성자 자바프로그래밍언어혹은사용자 패키지의예 String 클래스, 입출력에관한클래스및인터페이스, 네트워크에관련된클래스등등 패키지에포함된클래스 기본패키지디렉토리 : C:\jdk1.5.0\jre\lib

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

슬라이드 1

슬라이드 1 UNIT 6 배열 로봇 SW 교육원 3 기 학습목표 2 배열을사용핛수있다. 배열 3 배열 (Array) 이란? 같은타입 ( 자료형 ) 의여러변수를하나의묶음으로다루는것을배열이라고함 같은타입의많은양의데이터를다룰때효과적임 // 학생 30 명의점수를저장하기위해.. int student_score1; int student_score2; int student_score3;...

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 9 장생성자와접근제어 이번장에서학습할내용 생성자 정적변수 정적메소드 접근제어 this 클래스간의관계 객체가생성될때초기화를담당하는생성자에대하여살펴봅니다. 생성자 생성자 (contructor): 객체가생성될때에필드에게초기값을제공하고필요한초기화절차를실행하는메소드 생성자의예 class Car { private String color; // 색상

More information

Design Issues

Design Issues 11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\)

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\) Session 을이용한현재로그인한사용자의 숫자구하기 작성자 : 김성박 ( 삼성 SDS 멀티캠퍼스전임강사 ) email : urstory@nownuri.net homepage : http://sunny.sarang.net - 본문서는http://sunny.sarang.net JAVA강좌란 혹은 http://www.javastudy.co.kr 의 칼럼 란에서만배포합니다.

More information

02 C h a p t e r Java

02 C h a p t e r Java 02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER

More information

쉽게

쉽게 Power Java 제 4 장자바프로그래밍기초 이번장에서학습할내용 자바프로그램에대한기초사항을학습 자세한내용들은추후에. Hello.java 프로그램 주석 주석 (comment): 프로그램에대한설명을적어넣은것 3 가지타입의주석 클래스 클래스 (class): 객체를만드는설계도 ( 추후에학습 ) 자바프로그램은클래스들로구성된다. 그림 4-1. 자바프로그램의구조 클래스정의

More information

05-class.key

05-class.key 5 : 2 (method) (public) (private) (interface) 5.1 (Method), (public method) (private method) (constructor), 3 4 5.2 (client). (receiver)., System.out.println("Hello"); (client object) (receiver object)

More information

강의 개요

강의 개요 DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE

More information

PowerPoint Presentation

PowerPoint Presentation 자바프로그래밍 1 클래스와메소드심층연구 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 접근제어 class A { private int a; int b; public int c; // 전용 // 디폴트 // 공용 public class Test { public static void main(string args[]) { A obj = new

More information

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter 파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter 클래스의사용법은다음과같다. PrintWriter writer = new PrintWriter("output.txt");

More information

PowerPoint Presentation

PowerPoint Presentation 자바프로그래밍 1 배열 손시운 ssw5176@kangwon.ac.kr 배열이필요한이유 예를들어서학생이 10 명이있고성적의평균을계산한다고가정하자. 학생 이 10 명이므로 10 개의변수가필요하다. int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; 하지만만약학생이 100 명이라면어떻게해야하는가? int s0, s1, s2, s3, s4,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 자료구조자바세미나 Week1 00 Contents 목차 01 Introduction 02 JAVA? 03 Basic Grammar 04 Array 05 String 06 Class & Method 07 Practice 01 Introduction 자료구조자바세미나기본소개 일시장소 IDE 대상 매주수요일저녁 6 시 (2019.03.20 ~ 2019.04.10)

More information

02장.배열과 클래스

02장.배열과 클래스 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 배열과구조체 1/20 많은자료의처리? 배열 (array), 구조체 (struct) 성적처리프로그램에서 45 명의성적을저장하는방법 주소록프로그램에서친구들의다양한정보 ( 이름, 전화번호, 주소, 이메일등 ) 를통합하여저장하는방법 홍길동 이름 :

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 인터페이스 배효철 th1g@nate.com 1 목차 인터페이스의역할 인터페이스선언 인터페이스구현 인터페이스사용 타입변환과다형성 인터페이스상속 디폴트메소드와인터페이스확장 2 인터페이스의역할 인터페이스란? 개발코드와객체가서로통신하는접점 개발코드는인터페이스의메소드만알고있으면 OK 인터페이스의역할 개발코드가객체에종속되지않게 -> 객체교체할수있도록하는역할 개발코드변경없이리턴값또는실행내용이다양해질수있음

More information

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - C++ 5 .pptx C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성

More information

Java ...

Java ... 컴퓨터언어 1 Java 제어문 조성일 조건문 : if, switch 어떠한조건을조사하여각기다른명령을실행 if 문, switch 문 if 문 if - else 문형식 if 문형식 if ( 조건식 ) { 명령문 1; 명령문 2;... if ( 조건식 ) { 명령문 1; 명령문 2;... else { 명령문 a; 명령문 b;... 예제 1 정수를입력받아짝수와홀수를판별하는프로그램을작성하시오.

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

Microsoft PowerPoint - Lect04.pptx

Microsoft PowerPoint - Lect04.pptx OBJECT ORIENTED PROGRAMMING Object Oriented Programming 이강의록은 Power Java 저자의강의록을사용했거나재편집된것입니다. Class 와 object Class 와객체 클래스의일생 메소드 필드 String Object Class 와객체 3 클래스 클래스의구성 클래스 (l (class): 객체를만드는설계도 클래스로부터만들어지는각각의객체를특별히그클래스의인스턴스

More information

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 ALTIBASE HDB 6.5.1.5.10 Patch Notes 목차 BUG-46183 DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG-46249 [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 BUG-46266 [sm]

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint 웹 연동 기술.pptx 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

JAVA PROGRAMMING 실습 09. 예외처리

JAVA PROGRAMMING 실습 09. 예외처리 2015 학년도 2 학기 예외? 프로그램실행중에발생하는예기치않은사건 예외가발생하는경우 정수를 0으로나누는경우 배열의크기보다큰인덱스로배열의원소를접근하는경우 파일의마지막부분에서데이터를읽으려고하는경우 예외처리 프로그램에문제를발생시키지않고프로그램을실행할수있게적절한조치를취하는것 자바는예외처리기를이용하여예외처리를할수있는기법제공 자바는예외를객체로취급!! 나뉨수를입력하시오

More information

비긴쿡-자바 00앞부속

비긴쿡-자바 00앞부속 IT COOKBOOK 14 Java P r e f a c e Stay HungryStay Foolish 3D 15 C 3 16 Stay HungryStay Foolish CEO 2005 L e c t u r e S c h e d u l e 1 14 PPT API C A b o u t T h i s B o o k IT CookBook for Beginner Chapter

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 손시운 ssw5176@kangwon.ac.kr 실제세계는객체로이루어진다. 2 객체와메시지 3 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 4 객체 5 객체란? 객체 (Object) 는상태와동작을가지고있다. 객체의상태 (state) 는객체의특징값 ( 속성 ) 이다. 객체의동작 (behavior) 또는행동은객체가취할수있는동작

More information

자바 프로그래밍

자바 프로그래밍 5 (kkman@mail.sangji.ac.kr) (Class), (template) (Object) public, final, abstract [modifier] class ClassName { // // (, ) Class Circle { int radius, color ; int x, y ; float getarea() { return 3.14159

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

JAVA PROGRAMMING 실습 05. 객체의 활용

JAVA PROGRAMMING 실습 05. 객체의 활용 public class Person{ public String name; public int age; } public Person(){ } public Person(String s, int a){ name = s; age = a; } public String getname(){ return name; } @ 객체의선언 public static void main(string

More information

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public Chapter 9 Lab 문제정답 1. public class Circle private double radius; static final double PI=3.141592; // PI 이름으로 3.141592 로초기화된정적상수 (1) public Circle(double r) radius = r; (2) public double getradius() return

More information

Microsoft PowerPoint - lec2.ppt

Microsoft PowerPoint - lec2.ppt 2008 학년도 1 학기 상지대학교컴퓨터정보공학부 고광만 강의내용 어휘구조 토큰 주석 자료형기본자료형 참조형배열, 열거형 2 어휘 (lexicon) 어휘구조와자료형 프로그램을구성하는최소기본단위토큰 (token) 이라부름문법적으로의미있는최소의단위컴파일과정의어휘분석단계에서처리 자료형 자료객체가갖는형 구조, 개념, 값, 연산자를정의 3 토큰 (token) 정의문법적으로의미있는최소의단위예,

More information

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap04-연산자.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

A Tour of Java III

A Tour of Java III A Tour of Java III Sungjoo Ha March 18th, 2016 Sungjoo Ha 1 / 30 Review First principle 문제가생기면침착하게영어로구글에서찾아본다. 타입은가능한값의집합과연산의집합을정의한다. 기본형이아니라면이름표가메모리에달라붙는다. 클래스로사용자정의타입을만든다. 프로그래밍은복잡도관리가중요하다. OOP 는객체가서로메시지를주고받는방식으로프로그램을구성해서복잡도관리를꾀한다.

More information

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

객체 Key Point 객체는그객체의특성을나타내는상태 (state) 와그객체의행동 (behaviors) 으로이루어진다. 좌표상의점 n 상태 : x 좌표값, y 좌표값 n 행동 : 점의이동 주사위 n 상태 : 표면값 n 행동 : 주사위굴리기 은행계좌 n 상태 : 예금주,

객체 Key Point 객체는그객체의특성을나타내는상태 (state) 와그객체의행동 (behaviors) 으로이루어진다. 좌표상의점 n 상태 : x 좌표값, y 좌표값 n 행동 : 점의이동 주사위 n 상태 : 표면값 n 행동 : 주사위굴리기 은행계좌 n 상태 : 예금주, 제 5 장객체와클래스 Kwangman Man (htt://comiler.sangji.ac.kr, kkman@sangji.ac.kr) SangJi University 2012 1 이장의내용 객체와클래스의기본개념 클래스사용법 클래스를정의하는방법 메소드를구현하는방법 가시성및접근제어 GUI 프로그램의이해및작성 2 5.1 객체와클래스 3 1 객체 Key Point 객체는그객체의특성을나타내는상태

More information

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - [2009] 02.pptx 원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-1Array.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력 # 메소드의구조자주반복하여사용하는내용에대해특정이름으로정의한묶음 반환형메소드이름 ( 매개변수 ) { 실행문장 1; : 실행문장 N; } 메소드의종류 Call By Name : 메서드의이름에의해호출되는메서드로특정매개변수없이실행 Call By Value : 메서드를이름으로호출할때특정매개변수를전달하여그값을기초로실행하는메서드 Call By Reference : 메서드호출시매개변수로사용되는값이특정위치를참조하는

More information

17장 클래스와 메소드

17장 클래스와 메소드 17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는

More information

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx CrackMe 15.exe (in Simples) 문제풀이 동명대학교정보보호동아리 THINK www.mainthink.net 강동현 Blog: johnghb.tistory.com e-mail: cari2052@gmail.com 1 목차 : 1. 문제설명및기본분석 --------------------------- P. 03 2 상세분석 ---------------------------

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법

More information

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

More information

슬라이드 1

슬라이드 1 UNIT 08 조건문과반복문 로봇 SW 교육원 2 기 학습목표 2 조건문을사용핛수있다. 반복문을사용핛수있다. 조건문 3 조건식의연산결과에따라프로그램의실행흐름을변경 조건문의구성 조건식 실행될문장 조건문의종류 if switch? : ( 삼항연산자 ) if 조건문 4 if 문의구성 조건식 true 또는 false(boolean 형 ) 의결과값을갖는수식 실행될문장

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

교육자료

교육자료 THE SYS4U DODUMENT Java Reflection & Introspection 2012.08.21 김진아사원 2012 SYS4U I&C All rights reserved. 목차 I. 개념 1. Reflection 이란? 2. Introspection 이란? 3. Reflection 과 Introspection 의차이점 II. 실제사용예 1. Instance의생성

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스와메소드심층연구 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 접근제어 class A { private int a; int b; public int c; // 전용 // 디폴트 // 공용 public class Test { public static void main(string args[]) { A obj = new

More information

Cluster management software

Cluster management software 자바네트워크프로그래밍 (OCJP 국제공인자격취득중심 ) 충북대학교 최민 기본예제 예외클래스를정의하고사용하는예제 class NewException extends Exception { public class ExceptionTest { static void methoda() throws NewException { System.out.println("NewException

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - e pptx Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells

More information

컴파일러

컴파일러 YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",

More information

Java ~ Java program: main() class class» public static void main(string args[])» First.java (main class ) /* The first simple program */ public class

Java ~ Java program: main() class class» public static void main(string args[])» First.java (main class ) /* The first simple program */ public class Linux JAVA 1. http://java.sun.com/j2se/1.4.2/download.html J2SE 1.4.2 SDK 2. Linux RPM ( 9 ) 3. sh j2sdk-1_4_2_07-linux-i586-rpm.bin 4. rpm Uvh j2sdk-1_4_2_07-linux-i586-rpm 5. PATH JAVA 1. vi.bash_profile

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information