'자바'에 해당되는 글 5건

  1. 2007.11.10 하고 싶은게 너무 많아 감당을 못할때
  2. 2007.11.02 equals()메소드 2
  3. 2007.11.02 값의 비교와 레퍼런스
  4. 2007.09.07 레퍼런스 변수 1
  5. 2007.09.05 Eclipse 사용후기 3
나의 이야기/Note2007. 11. 10. 01:01
  지금 내가 공부 하고 있는 언어들을 한번 세어 보면

1. C
2. C++
3. JAVA
4. C#
5. VB.NET
6. Delphi

  여기에 세부 분야까지 넣어 보면
1. API
2. MFC
3. TCP/IP

  뭐 이정도. 문제는 이런 것들을 그냥 배워 보고 싶다는 생각에 건드려만 본다는 것이다. C/C++이야 항상 만지고 있는 거니 예외라 치고, 델파이는 거의 안하니 제외 해도 너무 하려고 하는게 많다. 특히 C#이랑 JAVA는 의욕에 비해 하는게 너무 없는듯하다.

  지금 생각은 이렇다. 한 두가지 정도만 집중할것이냐 조금만 더 힘낼 것이냐. 솔직히 말해서 조금 버겁긴 하지만 그렇다고 못하겠는건 아니다. 그냥 진도가 너무 안나가는 것에 대한 불안감?

  그래도 대학 와서 내가 이쪽 분야 그동안 공부했던것과 비교해 본다면 결코 무리라는 생각은 안든다. 다만 걱정되는건 어린 시절 근 10년간 VB를 파 오면서 너무 공부하기에는 어렸었다는 것도 있었겠지만 여러가지를 많이 해보고 싶어서 이것 저것 해보다가 어중간하게 얕고 넓게(?) 익히게 되어서 그게 반복되지 않을까 신경쓰인다.

  1월 안에는 윈어플 큰거 하나 짜놓고 가긴 가야 하는데.. 제일 승산 있는게 무엇일까? 제일 승산있는건 MFC나 C#쪽인데.. 아무래도 최근에 새로 배우는 언어는 C#이 제일 무난하게 나가고 있어 조금만 더 하면 윈폼 시작할것이니. 아니면 지금 텀 프로젝트한다고 공부중인 MFC도 요즘들어 뭔가 감이 잡혀가기 시작해서 조금만 더 노력하면 속도가 붙을 것 같은데..

  이렇게 해봐야 겠다. JAVA로는 뭐 만드는건 잠시 미루되 꾸준히 공부는 하고 MFC는 텀에 충실하되 실력이 늘 수 있게, 그리고 C#으로는 뭘 만들도록 주로 공부해 봐야지. 이렇게 실천할수 있으면 얼마나 좋아.
Posted by 머리
Study - Programming/JAVA2007. 11. 2. 02:09

앞선 포스팅에서 equals()메소드를 이용하면 값의 비교가 가능하다고 하였다.

하지만 다음 코드의 결과값은 역시 false이다.

class Value
{
 int i;
}

public class EqualMethod{
 public static void main(String[] args)
 {
  Value v1 = new Value();
  Value v2 = new Value();
 
  v1.i = v2.i = 100;
 
  System.out.println(v1.equals(v2));
 }
}

그 이유는 Default equals method 는 객체의 레퍼런스를 비교하기 때문에 false가 되는 것이다.
그러므로 Default equals method가 아닌 따로 equals() 메소드를 오버라이드 시켜 줘야 한다. 예를 들면 이렇게.

 boolean equals(Value obj)
 {
  if(obj.i == i)
   return true;
  return false;
 }

Posted by 머리
Study - Programming/JAVA2007. 11. 2. 01:42

  자바를 공부하면서 항상 느끼는 것인데.. 정말 자바는 객체로 시작해서 객체로 끝난다.. 이렇게 객체만 사용하다 보면 객체에 대한 감을 못잡을 리가 없다.

  다음 코드를 보자.

public class Equivalence {
 public static void main(String[] args)
 {
  Integer n1 = new Integer(10);
  Integer n2 = new Integer(10);
  System.out.println(n1==n2);
 }
}
  이 코드의 결과값은 무엇일까? 언뜻 보면 true일 것 같지만 답은 false이다. 왜 그럴까? 조금만 생각해보면 알 것이다. 위에서의 비교문은 n1이 가리키고 있는 객체와 n2가 가리키고 있는 객체가 같은 객체인가를 묻는 것이다. 그러니 당연히 false가 나올 수밖에.

  그렇다면 n1과 n2의 값을 비교하려면 어떻게 해야 할까? 답은 equals()메소드에 있다. n1==n2를 다음과 같이 고치면 true가 나올 수 있다.

n1.equals(n2)

  의미는 금방 파악이 갈 것이다. 값의 비교를 해 주는 메서드이다.

Posted by 머리
Study - Programming/JAVA2007. 9. 7. 21:45
다음 코드가 있다.

int a;
a = 3;

  이렇게 하면 a의 값은 무엇일까? 당연히 1이다. 하지만 Test라는 클래스가 있고 이런 코드가 있다면 어떨까?

Test ex;

  ex는 아무것도 가리키고 있지 않다. Test형으로 변수를 만들었을 뿐이지만 이것은 아무 의미없는 객체라는 것이다. 단지 Test라는 형태의 틀만 가지고 있을뿐. 이럴 때 Test클래스 안에 Show라는 메소드가 있다고 치고, 다음과 같이 실행하면 에러가 발생한다.

ex.Show(); //에러

왜냐하면 ex는 아무것도 가리키고 있지 않기 때문이다. 이럴 떄는 새로운 인스턴스를 생성해 주어서 이 인스턴스를 가리키게 해 주어야 한다.

Test ex = new Test();

  잠깐 메모리 구조를 확인해보자.
  앞에서 int형 변수 a의 값은 바로 3이다. 그러나, ex의 값은 다르다. 메모리상으로 Test라는 클래스의 인스턴스가 하나 새로 생성되었고, ex는 이 인스턴스의 메모리 주소를 가리키고 있다. 즉 ex의 값은 인스턴스 자체는 아니라는 이야기다.

  ex와 같은 변수를 레퍼런스 변수라고 한다. C++의 레퍼런스와 상당히 비슷한 개념이다. 그렇다고 포인터는 아니다. 포인터는 주소에 직접 접근해서 그 값을 바꿀 수 있지만, 레퍼런스는 오로지 레퍼런스 변수를 통해서 그 안의 메소드와 멤버 변수만 사용할 수 있다.

  알아두자.일반 데이터형은 바로 그 값을 가리키지만 레퍼런스 변수는 그렇지 않다.
Posted by 머리
Study - Programming/JAVA2007. 9. 5. 01:22

  JAVA SDK 설치하고 나서 메모장으로 대충 코딩하면서 살아 보자고 하려 했더만 도저히 답답해서 안되겠더라. 특히 들여쓰기! 진짜 이건 너무하다 싶었다.
  그래서 울트라 에디트나 에디트 플러스 같은거 깔아 볼까 생각도 해봤지만 결론은 IDE를 깔자,그래서 뭐 별거 있나? 이클립스를 깔았다.
  맨 처음에는 이클립스를 설치하면 JAVA SDK를 자동으로 깔아 줄 줄 알았는데 아니더군.. 포맷한 직후라 깔려 있지도 않았는데.. 귀찮아하며 JAVA SDk 깔고,이클립스를 깔았다.
  확실히 내가 MS 관련 개발 툴에 많이 잡혀 있나 보긴 보다. MS 툴이 아니면 다른 툴은 사용하기가 낯설다. 아까 델파이도 그랬고, 지금 이클립스도 그랬다.
  뭐 대충 코딩 간단히 하고 컴파일을 해 보았다.

사용자 삽입 이미지


  이게 코딩하고 컴파일한 화면. 개발 환경은 놀랄만큼 잘 되어 있다. 프로젝트를 생성하면 자동으로 메인 클래스 하나를 만들어 준다. 여기서 메인 함수를 적어 주면 된다.
  코딩 환경도 매우 맘에 들더라. 우선 당연히 들여쓰기는 지원해주고, 함수의 괄호들도 알아서 닫아 준다.
  또 마음에 드는건 오른쪽에 아웃라인. VC++의 클래스 뷰어와 비슷한 기능을 하더라. 마음에 너무 든다. 그리고 콘솔 화면도 따로 명령 프롬프트 창을 보여주는게 아니라 아래쪽에 콘솔 탭이 하나 있다. 이것도 좋은 기능이라고 생각한다.
  이렇게 강력한데 어찌 오픈소스를 무시하겠는가. 이클립스, 반했다 너한테, 덕분에 자바공부 안하고 있었는데 하고 싶어 졌잖아!!
Posted by 머리