[java 기초] create text file

import java.io.*;

public class TextWrite {
public static void main(String args[]) {

try {
////////////////////////////////////////////////////////////////
BufferedWriter out = new BufferedWriter(new FileWriter(“out.txt”));
String s = “출력 파일에 저장될 이런 저런 문자열입니다.”;

out.write(s); out.newLine();
out.write(s); out.newLine();

out.close();
////////////////////////////////////////////////////////////////
} catch (IOException e) {
System.err.println(e); // 에러가 있다면 메시지 출력
System.exit(1);
}

}
}

 

결과

생성된 out.txt 파일의 내용:
출력 파일에 저장될 이런 저런 문자열입니다.
출력 파일에 저장될 이런 저런 문자열입니다.

 

참고 http://mwultong.blogspot.com/2006/10/java-text-file-write.html

Advertisements

[java] swap

C 의 방법

  1. void swap( int& a, int& b)
  2. {
  3.    int tmp;
  4.    tmp=a;
  5.    a=b;
  6.    b=tmp;
  7. }
  8. void swap( int* a, int* b)
  9. {
  10.    int tmp;
  11.    *a=*b;
  12.    *b=tmp;
  13. }

 

Java의 방법

  1. public class SwapTest
  2. {
  3.    public static void main(String[] args)
  4.    {
  5.        Int aa = new Int(1234);
  6.        Int bb = new Int(2345);
  7.        aa.swap(bb);
  8.        System.out.println(aa.getNum());
  9.        System.out.println(bb.getNum());
  10.    }
  11. }
  12. class Int
  13. {
  14.      private int num;
  15.     Int(int num) {
  16.       this.num = num;
  17.     }
  18.     public void swap(Int n) {
  19.        Int temp = new Int(this.num);
  20.        n.setNum(temp.getNum());
  21.     }
  22.     public int getNum() {
  23.        return num;
  24.     }
  25.     public void setNum(int num) {
  26.        this.num = num;
  27.     }
  28. }

클래스의 멤버 함수로해서 값을 바꿔야 한다.

사이트: http://edwards.tistory.com/212

[java] swap

기본형과 객체가 있는데
기본형은 call by value 이고 객체는 call by refence 라는 것은 대부분의 java 개발자들이 알고 있을꺼라 생각한다.

그 예로 swap 함수를 가장 많이 설명하는데..

예제 1)

class Test {
private static void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}

public static void main(String args[]) {
int a = 1;
int b = 2;

System.out.println(“a => ” + a);
System.out.println(“b => ” + b);

swap(a, b);

System.out.println(“——- swap 후 ——-“);

System.out.println(“a => ” + a);
System.out.println(“b => ” + b);
}
}

예제 1 의 경우 원하던 결과가 아닌 것을 바로 알아 낼 수 있을 것이다.
swap 메소드에 넘기는 것은 reference 가 아닌 value 이기 때문에…
쉽다. 넘어가자.

다음 예제 2 를 보자

예제 2)

class Test {
private static void swap(Integer a, Integer b) {
Integer temp = a;
a = b;
b = temp;
}

public static void main(String args[]) {
Integer a = new Integer(1);
Integer b = new Integer(2);

System.out.println(“a => ” + a.intValue());
System.out.println(“b => ” + b.intValue());

swap(a, b);

System.out.println(“——- swap 후 ——-“);

System.out.println(“a => ” + a.intValue());
System.out.println(“b => ” + b.intValue());
}
}

예제 2 의 경우 Integer 는 Object 이다. Object 는 call by reference 다.
따라서 위의 예제는 원하는 결과를 가져올 것이다.
그러나 실행을 하면 예제 1과 전혀 다르지 않다는 것을 알 수 있다.

왜? 객체는 call by reference 라며 사기친거야?

결론부터 말하면 객체는 call by reference 맞다

그러나 해당 객체를 보는 새로운 reference 를 참조해서 넘기는 것이다.

따라서 동일한 객체를 가르키고 있지만
main 에서의 reference 값과 swap 함수에서의 reference 값은 다르다.

따라서 위의 예제의 경우 원하는 결과가 나오지 않는다.

그렇다면 어떻게 해야 해?

예제 3 을 보자.

예제 3)

class Test {
int value;

Test(int value) {
this.value = value;
}

private static void swap(Test a, Test b) {
int temp = a.value;
a.value = b.value;
b.value = temp;
}

public static void main(String args[]) {
Test a = new Test(1);
Test b = new Test(2);

System.out.println(“a => ” + a.value);
System.out.println(“b => ” + b.value);

swap(a, b);

System.out.println(“——- swap 후 ——-“);

System.out.println(“a => ” + a.value);
System.out.println(“b => ” + b.value);
}
}

예제 2와 같이 객체의 reference 를 넘긴다.
reference 를 직접 변경하는 게 아니라.
reference 가 참조하는 객체의 value 를 변경하고 있다.
따라서 같은 객체를 보고 있는 main 에서도 값이 바뀌는 것을 알 수 있다.

call by reference : 해당 객체의 주소값을 직접 넘기는 게 아닌 객체를 보는 또 다른 주소값을 만들어서 넘기다는 사실을 잊지 말자~

사이트: http://trypsr.tistory.com/74

 

[java] hashmap example

import java.util.HashMap;
import java.util.Iterator;

public class HashMapSample
{
public static void main(String[] args)
{
HashMap<Integer, String> hm = new HashMap<Integer, String>();

hm.put(1, “일”);
hm.put(2, “이”);
hm.put(3, “삼”);
hm.put(4, “사”);
hm.put(5, “오”);

Iterator iter = hm.keySet().iterator();

while(iter.hasNext())
{
int nCount    = iter.next();
System.out.println(hm.get(nCount));
}
}
}

result




ultra edit + ctags

UltraEdit-32 와 ctags 사용
==================================================

UltraEdit를 설치한후 ctags (http://ctags.sourceforge.net)에서
ctags.exe를 울트라에디트 설치 폴더에 놓는다.

프로젝트/CTag 옵션에서

-f %fo -R D:\bro\study\u-boot

마지막 인자로 자신의 프로젝트 폴더를 놓으면 된다.

그리고 원하는 심볼에서 F11을 누르면 태그를 찾는다.

태그를 찾고 뒤로 가기 위해서

고급/설정/키정의에서

검색 뒤로 를 Shift+F11로 연결하면 편리하게 쓸 수 있다.

원문: http://neri.cafe24.com/menu/bbs/view.php?id=kb&page=5&sn1=&divpage=1&category=3&sn=off&ss=on&sc=on&select_arrange=hit&desc=asc&no=221&PHPSESSID=d59cade76d929b2521f7ac8dd2cc7519

do while(0) MACRO

#define MACRO do { printf(“first”); printf(“second”); } while(0)

소스코드를 보다 보면,  위와  같은 소스코드를 볼 수 있습니다.

조건문 if … else … 문에서

중괄호를 사용하지 않는 분들이 위의 매크로를 사용하지 않고,

#define MACRO printf(“first”); printf(“second”);

이렇게 정의된 매크로를 사용한다면,

if( 조건 )

MACRO;

else

printf(“third”);

위와같은 소스코드를 실행할 때, else에서 문법 에러가 납니다.

(illegal else without matching if 에러가 나지요…)

한 문장인것 처럼 중괄호로 묶어주면 되려나?

하고서 아래와 같이 매크로를 정의하면

#define MACRO { printf(“first”); printf(“second”); }

MACRO 뒤의 세미콜론이 문제가 되어 역시 else에서 문법 에러가 나지요…

(역시 같은 illegal else without matching if 에러가 납니다.)

그래서

#define MACRO do { printf(“first”); printf(“second”); } while(0) 식의

do while(0) 매크로를 쓴다고 하네요^^

한 번은 실행되면서, 영역도 구성이 되고, 매크로 상수 뒤의 세미콜론까지 처리할 수 있는

좋은 방법이니까요^^

원문 http://guntn.blog.me/100045877821