2011.05.28 20:57
자바에서는 unsigned 형이 없다. 
0xF8 는 부호를 무시하면 248이지만, byte형에서는 부호비트가 고려되어 -8로 출력된다.
   byte b = (byte)0xF8;
   System.out.println(b);
   ----
   결과
   ----
   -8

원하는 결과를 얻기위해 이 byte형 변수 b를  int형 변수에 그냥 대입하게 되면, 
역시 -248이 출력된다.

   byte b = (byte)0xF8;
   int i = b;
   System.out.println(i);
   ----
   결과
   ----
   -8

일반적인 대입의 경우 산술적인 형확장이 일어나기 때문에 부호비트가 고려되며
byte의 첫번째 비트인 부호비트는 int형으로 형확장되면서 부호가 그대로 적용된다.

원하는 결과인 248을 얻으려면 다음과 같이 하면된다.
   byte b = (byte)0xF8;
   int value = b & 0xFF;
   System.out.println(value);
   ----
   결과
   ----
   248


그러나, 비트연산의 경우는 다음과 같이 계산되어 원하는 결과를 얻을 수 있다.

0xFF : 00000000 00000000 00000000 11111111
                                                11111000
------------------------------------------
결과 : 00000000 00000000 00000000 11111000




출처 : http://kimgisa.net/241




C보다는 JAVA를 쓰니 비트연산같은것은 까막눈이군요 -_- 퍼온자료입니다. 출처는 위에 있습니다. 
신고
Posted by JAVA_HOME

댓글을 달아 주세요

2011.05.16 14:22
 접근자를 public으로 두면 파일이름과 클래스(인터페이스)이름이 같아야되지만, default로 두면 (명시하지 않고) 달라도 된다. 또한 한 파일안에 여러개의 클래스(인터페이스)를 두어도 된다.
 그렇지만 파일이름과 클래스명이 다르면 혼돈하기 쉬우니까 public 일때와 같이 관리를 하는것이 좋겠다.
신고
Posted by JAVA_HOME

댓글을 달아 주세요

  1. kimddang 2011.05.17 14:36 신고  댓글주소  수정/삭제  댓글쓰기

    으...아직 OpenGL부분의 심오함에대한 공부가 부족하여 먼가 질문을 드리고 싶지만...ㅠㅠ

    언능언능 더 공부해서 진도 맞춰 따라가겠습니다! ㅎ 항상 좋은 글 감사드려요 ~

    하루 이곳에서 보내는 시간이 길어지고 있습니다...어제 교수님한테 심하게 까여서 ㅠㅠ 도대체 opengl로 몰 할껀데? 이래서....
    공부하고있습니다...라고 했다는..ㅎㅎ

    오늘도 날씨가 많이 덥네요 ㅠ 저녁에는 쌀쌀하니 겉옷 항상 챙기시구여 ~ ~ 그럼 전 다시 공부하러 ㅎ

  2. JAVA_HOME 2011.05.17 15:41 신고  댓글주소  수정/삭제  댓글쓰기

    저도 OpenGL은 기본없이 adhoc하게 소스들을 찾아본 수준밖에 안되서요 ㅎ;
    벌려놓은 강좌들은 몇가지있지만 하다보니 한계를 느껴서 그것들은 접고 엔진쪽으로 가닥을 잡아볼까 합니다.

2011.03.28 22:41
 요즘 개발 환경 만들기에 눈이 간다. 단순히 Text Editor에 도움을 주는 plug-in 뿐만 아니라  Bug tracker, JUnit, 위키, Git, Maven, Ant 등등 개발하는데 쓰고 싶은 것들이 너무 많아서 오히려 스트레스가 될지경이다 -..-

 하지만 오늘은 지금과는 조금 다른 성격의 툴인 JavaDoc에 대해서 다루어 볼까한다.

 위에서 말한 것들은 다른방식으로 하고 있는 일들을 더 편하게, 실수 없게 할 수 있게 만들어 주는것들 이지만 문서화 및 주석 달기는 조금 다르다.

 정작 Product와는 별 상관 없어 보이기도 하고 귀찮아서, 또는 개발 일정에 쫒겨서 모든 개발자들이 필요성을 느끼지만 잘 안되는 부분 중에 하나 일 것이다.

  필자 또한 만들어 놓은 소스코드를 3일만 지나서 다시 봐도 무엇을 해놓은 코드인지 모를때가 많다. 

  어느 책에서나 볼 수 있는 서론은 여기까지 하고 본론으로 들어가보자.
 
  오늘 사용해볼 툴은 JavaDoc인데  Eclipse Java IDE에 Built-in 되어있고, 사용법도 매우 간단하여 주석만 달면 자동으로 Document를 만들어 준다.

 Sun Java의 공식 API문서와 같은 훌륭한 문서를 주석 달기 만으로 만들수 있다니 매우 훌륭하지 않은가? 더욱이 기본 IDE에 built in 되어있다는 장점은 개발환경을 바꿀때마다 반복되는 작업환경 구성의 사용자 수고까지 덜어준 셈이다. 최고의 튜닝은 순정아니겠는가. 기본 탑재된 툴을 유용하게 써보자.




기본적인 주석의 형태는 다음과 같다.

/**
   * @author
   * @param 
   * @return
   */


 클래스나 메소드 위에서 /**을 입력하고 엔터를 치면 이클립스가 자동으로 아래의 내용에서 인자 또는 리턴이 있는지를 보고 입력해준다.

 위와 같이 간단한 코드를 하나 작성해보자.



이제 JavaDoc으로 만들어보자.

Eclipse 메뉴의 Project -> Generate JavaDoc을 누르고 Javadoc command에 현재 JDK의 bin안의 javadoc.exe를 설정해주고 Javadoc으로 만들 프로젝트를 선택하고 Next를 눌러보자.

 이제 만들어진 JavaDoc을 보자. 


 폴더를 변경하지 않았다면 프로젝트 폴더에 doc 폴더안에 위치할 것이다.
 index.html을 열어보면 다음과 같은 익숙한 Layout의 html을 볼 수 있을 것이다.

 참고로 주석 내부에 자주 쓰이는 annotation은 다음과 같다.

  {@link} - 링크를 걸때 사용

  @deprecated - 쓰기를 추천하지 않는 클래스 또는 메소드
  @see - See alos로 클래스 또는 메소드의 링크 표시
  @version - 버젼
  @serial - serializeable한 클래스
  @exception - 발생가능한 exception


 기본적인 기능을 익혔으니 쓰기 쉽게 Code Template를 만들어보자.
 만드는 방법은 window > Preferences > Java > Code Style > Code Templates 에서 내용을 수정하면 된다.

우선 Comments의 Types을 다음과 같이 수정해보자.

/**

 * @author ${user}

 *

 ****************************

 *     코드 수정 히스토리

 *  날짜          작업자         태그

 *${date}  ${user}  ${tags}

 ****************************

 */


그리고 Code의 New Java Files를 다음과 같이 수정하자.

/*

 * 작성일 : ${date}

 * 작성자 : ${user}

 *

 * 설명

 */


${filecomment}

${package_declaration}


${typecomment}

${type_declaration}


그리고 하단부에 Automatically add comments for new methods and types를 체크하자.

이제 새로운 자바 파일을 만들어보자.



상단에는 작성일, 작성자의 추가정보가, 클래스 시작부분에는 코드 수정히스토리가 자동으로 적용되어 있을 것이다.

 하지만 이는 새로 만든 문서이고, 만들어놓은 문서를 이와 같은 포맷으로 변경하는 방법은 없을까?

 
 이미 만든 Java File이므로 New Java Files의 Template는 적용할 수 없는 것 같았다.(필자가 잘못 알고 있을수도 있다.)
 하지만 Comment에서 적용한 template는 alt+shift+j(Source > Generate element comment)를 실행하면 적용이 된다.






 오늘은 Java Code에서의 문서화를 도와주는 JavaDoc에 대해서 알아 보았다.

 다음 포스팅은 한단계 더 나가서 XML 방식으로 일반화된 문서를 만들어주는 툴인 Apache Forrest를 다루어 볼까 한다.
 Forrest는 Apache 자카르타 프로젝트의 일환으로 다른 프로젝트의 문서화에도 쓰이고 있으며, XML Framework기반이며 HTML, PDF 등 많이 사용하는 문서로도 만들어주고, Ant, wiki등과의 연계도 매우 잘 되어있는 툴이다. 




추가 : 한글깨짐이 일어난다면 Generate javadoc을 할 때 첫번째 메뉴에서 javadoc.exe 뒤에 -locale ko_KR -encoding UTF-8 -charset UTF-8 -docencoding UTF-8 또는 마지막 메뉴에서  -encoding UTF-8 혹은 -encoding EUC-KR 인코딩 옵션을 추가하면 된다.
신고
Posted by JAVA_HOME

댓글을 달아 주세요

2011.03.24 20:29
프로그램의 단위가 커지다 보니 수정할때 마다 발생하는 오류와 디버깅에 지쳐서 JUnit을 써볼까 한다.
특별히 강좌식으로 할 생각은 없고 그때 그때 알아낸 내용위주로 포스팅을 해볼까한다. 

 JUnit은 TDD(Test-Driven Development) 방식의 소프트웨어 개발 방법을 할 수 있게 도와주는 툴이며, 각 단위별로 Test를 할 수 있게 해준다. 라는 정도만 알고 시작한다.
 자세한 개념이나 소프트웨어 개발방법론 등이 궁금하다면 구글링등을 통해 찾아보기 바란다. 필자가 설명을 할 정도의 내공도 있지 않고 글솜씨도 없으니 어줍잖게 설명을 해서 혼돈을 주는 것보다 그편이 훨씬 좋을것이다.



 JUnit 환경을 만드는 것은 매우 간단하다.
  junit-4.x.jar를 받아서 프로젝트 classpath에 추가를 하고 Java Build Path에서 test할 폴더를 추가 해주면 된다.

  test 폴더를 추가하는 것은 필수는 아니지만 좋은 습관이 될 것이다.

  
 이제 JUnit을 사용해보자. 필자는 아래와 같은 MyClass라는 Class를 만들었다.(일부러 틀리게 작성하였다.)

  

이제 Test Code를 작성해보자.
New -> JUnit Test Case를 선택해서 아래와 같이 설정을 하자. 아까 test라는 test용 폴더를 만들었으니 Source folder를 바꾸어 주는 것도 잊지말자.


Next를 눌러서 Test할 Method를 선택하자


Finish를 누르면 JUnit을 Classpath에 추가할 것인지 물어본다.
Perform the following action 라디오 박스를 체크하고 Add Junit library to the build path를 선택하자.



위와 같은 코드가 생성될 것이다. Not yet implemeted라고 되어있는 부분에 우리가 테스트 할 코드를 구현하면 된다.
 



10과 5의 argument로 실행한 method의 결과는 50이 되는가를 테스트 한다는 것을 직관적으로 알 수있다.
이제 실행 해보자. 보통 Java프로그램을 실행할때와 비슷하게 Run As -> Junit Test를 실행하면된다.

실행을 하면 실행한 창에 bar가 뜨는데 일부러 틀리게 작성한 코드이므로 red bar가 뜬다. 이를 수정하고 다시 실행하면 green bar가 뜬다.

수정전


Red Bar와 함께 "기대된 50이 아니라 2이 나왔다는 Report"를 볼 수 있다. multiply method가 "/"로 되어있으니 당연한 결과라고 할 수 있겠다.

multiply method의  "/"를 "*"로 수정하고 다시 수행해보자.


수정후
 


다음과 같이 Failure Trace에 아무런 Report도 발견되지 않고 Green Bar로 나온 결과를 볼 수 있다.

오늘은 JUnit의 간단한 맛보기만 하였다. 조금 더 공부를 한 다음에 더 심화된 내용으로 다음 포스팅을 하겠다.
 

참고하면 좋을 튜토리얼 들
http://www.ibm.com/developerworks/kr/library/tutorial/j-junit4/index.html#ibm-pcon
http://code.google.com/p/t2framework/wiki/JUnitQuickTutorial
http://www.vogella.de/articles/JUnit/article.html 
신고

'JAVA > JUnit' 카테고리의 다른 글

JUnit Tutorial  (0) 2011.03.24
Posted by JAVA_HOME

댓글을 달아 주세요

2011.03.13 19:29

인자로 넣은 String Array에 list의 내용물을 넣어서 return 해준다.

신고
Posted by JAVA_HOME

댓글을 달아 주세요


티스토리 툴바