'Programming/Java'에 해당되는 글 9건

  1. 2012/03/29 Java 7 Virtual Developer Day
  2. 2012/01/13 개발자가 놓치기 쉬운 자바의 기본원리
  3. 2011/06/29 자바 실행 파일(EXE) 만들기
  4. 2011/06/21 생성자 오버로딩과 메소드 오버로딩의 차이점
  5. 2011/06/21 Call by Value, Call by Reference
  6. 2011/06/19 자바 상속 (1)
  7. 2011/06/14 Java SE 6.0 API
  8. 2011/06/08 자바에서 키보드로 입력받기, 정수, 문자열. BufferedReader 와 Scanner
  9. 2011/04/30 SJCP 덤프

Java 7 Virtual Developer Day

|

 

 

Java 7 Virtual Developer Day

 

http://oracle.6connex.com/vep/index.html?eventname=Java&langR=en_US#cid=;nid=hub

저작자 표시
TRACKBACK 0 And COMMENT 0

Trackback http://babe9990.tistory.com/trackback/116 관련글 쓰기

개발자가 놓치기 쉬운 자바의 기본원리

|
원본  http://dna.daum.net/technote/java/PrincipleOfJavaInternalForDeveloperEasyToLost

http://blog.naver.com/etwas0227/60037531696
저작자 표시
TRACKBACK 0 And COMMENT 0

Trackback http://babe9990.tistory.com/trackback/105 관련글 쓰기

자바 실행 파일(EXE) 만들기

|

자바 실행 파일 만들기

 export -> JAR File -> export할 프로젝트 선택 -> next -> 메인클래스를 꼭 지정해준 후 (하지 않으면 에러남) ->  Finish -> JAR 파일 생성 완료

JSmooth 실행
Skeleton -> Console프로그램이면 Console Wrapper, 윈도우 프로그램(awt,swing)이면 Windowed Wrapper
Executable -> Executable Binary에서 경로와 만들 파일 이름 지정, 아이콘 지정(옵션)
Application -> Main Class(꼭 지정), Embedded jar 에서 불러올 jar파일 지정
JVM Version -> 1.6.2
JVM Config  X
톱니바퀴 눌러서 실행
저작자 표시
TRACKBACK 0 And COMMENT 0

Trackback http://babe9990.tistory.com/trackback/70 관련글 쓰기

생성자 오버로딩과 메소드 오버로딩의 차이점

|
자바는 하나의 클래스에 매개변수와 자료형과 개수가 서로 다른 다수의 생성자를 포함하여, 같은 클래스로부터 속성이 서로 다른 객체를 생성할 수 있다. 이와 같이 하나의 클래스에 매개변수의 자료형과 개수가 서로 다른 다수의 생성자를 포함하는 것을 오버로딩이라고 한다.
예) 가죽시트, 에어백등의 선택품목에 따라 다양한 자동차 객체를 생성하기 위한 다수의 생성자를 포함하는 클래스이다. 예제는 아래와 같다.

public class Car
{
String standard = "기본형"; //문자열 객체변수
String option1; //문자열 객체변수
String option2; //문자열 객체변수

public Car() //기본형차를 생성하는 매개변수가 없는 생성자
System.out.println(standard+ "자동차이다");
}
public Car(String opt1){
option1 = opt1;
System.out.println(standard+"+" +option1+ "자동차이다");
}
public Car(String opt1, String opt2) //기본형 +opt1+opt2 선택품목을 가진 자동차.
option1 = opt1;
option2 = opt2;
System.out.println(standard+"+" +option1+"+" +option2+ "자동차이다");
}
public void drawCar(String opt1, String2) { //자동차를 그리는 메소드
}
}

위의 Car클래스는 3개의 생성자로 구성되며, 각각의 생성자는 메개변수의 수가 다르다. 따라서 같은 Car 클래스에서 선택하는 생성자에 의하여 서로 다른 3개의 객체를 생성할 수 있다.
예 를들면, Car car2 = new Car("가죽시트"); 수행문은 car2객체를 생성하기 위하여 메개변수가 하나인 생성자를 시행하므로 두번째 생성자를 실행한다. 따라서 인자 "가죽시트"는 생성자의 opt1의 매개변수에 절달되고, 첫번째 수행문 optiion1=opt1; 및 출력문에 의하여 화면에 [기본형+가죽쉬트 자동차이다]를 출력한다.

Car car1 = new Car(); 및 Car car3 = new Car("가죽시트", "에어팩"); 수행문도 같은 원리로 매개변수의 수가 같은 생성자를 실행하여 객체를 생성한다. 이와 같이 클래스는 매개변수의 자료형 및 개수가 서로 다른 다수의 ㅐㅇ성자를 가질수 있고, 그중에서 개게를 생성할 때 호ㅜㄹ되는 생성자는 자동으로 매개변수의 자료형과 수가 일치하는 생성자가 실행딘다. 아래의 예제는 위에서 설명한 내용을 구현하는 실행 클래스이다.

예제)
public class ExecuteCar
{
public static void main(String args[]){
Car car1 = new Car();
Car car2 = new Car("가죽시트");
Car car3 = new Car("가죽시트", "에어백");
}
}


메소드 오버로딩(메소드 중복이라고도 합니다.)
메소드 중복(overloading)

자바의 특징중 하나가 다형성(polymorphism)이며, 다형성이란 메소드의 이름은 같으나 자료형 또는 개수가 다른 매개변수를 사용하여 다양한 기능을 제공하는 기능을 의미한다.
이와 같이 메소드의 이르은 같으나 매개변수의 자료형 또는 개수가 서로 다른 메소드를 사용하는 것으 메소드 오버로딩(생성자의 오버로딩과 같은 개념)이다. 아래의 예제는 메소드 오버로딩을 보여준다.

class Arithmetic
{
double result;
public void sum(int a, int b){
result = a+b;
System.out.println("두 정수의 합은 " +result);
}
public void sum(int a, int b, int c){
result = a+b+c;
System.out.println("세 정수의 합은 " +result);
}
public void sum(double a, double b){
result=a+b;
System.out.println("두 실수의 합은 " +result);
}
}
public class ExecuteArithmetic
{
public static void main(String args[]){
Arithmetic hap = new Arithmetic();
hap.sum(10, 20);
hap.sum(100, 200, 300);
hap.sum(27.7, 60.6);
}
}

위의 예제설명)
Arithmetic 클래스에는 3개의 sum 메소드가 존재하고, 각각의 매개변수는 서로다른 자료형 또는 개수르 가진다. 이와 같이 자바에서는 매개변수만 다르면 얼마든지 같은 이름의 메소드를 작성할 수 있으며, 컴파일러는 호출한 메소드의 매개변수와 자료형 및 개수가 일치하는 메소드를 자동으로 실행한다.
따라서 ExecuteArithmetic 실행 클래스의 hap.sum(10, 20);는 sum(int a, int b) 메소드를 실행하고, hap.sum(100, 200, 300);는 sum(int a, int b, int c); 메소드를 실행하며, hap.sum(27.7, 60.6);는 sum(double a, double b); 메소드를 실행하므로 다음의 결과를 화면에 출력한다.

두 정수의 합은 30.0
세 정수의 합은 600.0
두 실수의 합은 88.3

저작자 표시

'Programming > Java' 카테고리의 다른 글

개발자가 놓치기 쉬운 자바의 기본원리  (0) 2012/01/13
자바 실행 파일(EXE) 만들기  (0) 2011/06/29
생성자 오버로딩과 메소드 오버로딩의 차이점  (0) 2011/06/21
Call by Value, Call by Reference  (0) 2011/06/21
자바 상속  (1) 2011/06/19
Java SE 6.0 API  (0) 2011/06/14
TRACKBACK 0 And COMMENT 0

Trackback http://babe9990.tistory.com/trackback/67 관련글 쓰기

Call by Value, Call by Reference

|
테스트 없이 눈으로만 코딩할 때 가장 틀리기 쉬운 부분이 call by value 와 call by refence 를 정확히 이해하지 못할 때 생기는 오류가 아닐까 싶다.

기본형과 객체가 있는데
기본형은 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

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



자바는 Call by Value? Call by Reference?




출처 : http://trypsr.tistory.com/74
참조:http://effortkim.tistory.com/59
저작자 표시
TRACKBACK 0 And COMMENT 0

Trackback http://babe9990.tistory.com/trackback/66 관련글 쓰기

자바 상속

|




Java로 구현한 상속

 class 파생클래스 이름 extends 기반 클래스 이름{

                      코드

};

 class employee{
private int annualSalary;

public String getName(){

}
class permanent extends employee{
private int bonus;
public void changeBasicSalary(){...}{
}


- 기반 클래스를 상속하는 파생 클래스 정의 - 오류 발생

 class employee{
private int annualSalary;

}

class permanent extends employee{
publc void changeBasicSalary(){...}{
annualSalary = ...; // 오류발생
}
}

- 파생 클래스인 permanent에서 getName()에는 접근할 수 있으나, private멤버인 annualSalary를 접근하려는 코드는 오류가 발생
- 기반 클래스의 모든 멤버는 파생 클래스로 상속 가능
- 기반 클래스의 private멤버에 대해서는 파생 클래스에서 접근 불가, public 멤버에 대해서만 접근 가능

protected
- 패생 클래스에서는 접근이 가능하지만 외부에서는 접근이 불가능한 멤버를 지정


- 기반 클래스를 상속하는 파생 클래스 정의 - 오류 수정

 class employee
protected int annualSalary;
}

class permanet extends employee{
public void changeBasicSalary(){...}{
annualSalary = ...; // 접근가능!!
}
}


자바로 구현

employee 클래스

employee 클래스


permanent 클래스

permanent 클래스


temporary 클래스

temporary 클래스

저작자 표시
TRACKBACK 0 And COMMENT 1

Trackback http://babe9990.tistory.com/trackback/65 관련글 쓰기

  1. 지나가다 2012/03/26 11:19 address edit & del reply

    permanent의 클래스에서

    class employee 대신에
    class permanent extends employee로 temporary 클래스와 같이 employee를 상속받아 선언되어야 맞는거 같습니다.

Java SE 6.0 API

|


Java SE 6.0 API Document 한글 번역
http://docs.xrath.com/java/se/6/docs/ko/api/index.html


Java SE 6.0 API Document 원서
http://download.oracle.com/javase/6/docs/api/ 


저작자 표시
TRACKBACK 0 And COMMENT 0

Trackback http://babe9990.tistory.com/trackback/63 관련글 쓰기

자바에서 키보드로 입력받기, 정수, 문자열. BufferedReader 와 Scanner

|

java.io
클래스 BufferedReader

java.lang.Object 
상위를 확장 java.io.Reader
상위를 확장 java.io.BufferedReader 

 

BufferedReader 사용

 

 

문자열 입력받기.

  InputStreamReader sr = new InputStreamReader(System.in);
  BufferedReader br = new BufferedReader(sr);  
  
  System.out.print("문자열 입력 : ");  
  String inputDate =(br.readLine());  
  System.out.println(inputDate);

 

정수 입력받기.

  InputStreamReader sr = new InputStreamReader(System.in);
  BufferedReader br = new BufferedReader(sr);


  System.out.print("숫자 입력 : ");
  int inputDate =Integer.parseInt(br.readLine());
 

 

 

 

 

java.util
클래스 Scanner

java.lang.Object 
상위를 확장 java.util.Scanner

Scanner 사용

 

문자열 입력받기.

  Scanner scan = new Scanner(System.in);
  
  System.out.print("문자열 입력 : ");  
  inputDate = scan.nextLine();
  System.out.println(inputDate);

 

 

정수 입력받기.

  Scanner scan = new Scanner(System.in);
  inputDate = scan.nextInt();

 




출처 : http://www.cyworld.com/Super_Moses/2961970



 

저작자 표시
TRACKBACK 0 And COMMENT 0

Trackback http://babe9990.tistory.com/trackback/61 관련글 쓰기

SJCP 덤프

|
http://www.examcollection.com/310-065.html


http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getCourseDesc?dc=D65287&p_org_id=15&lang=KO
저작자 표시
TRACKBACK 0 And COMMENT 0

Trackback http://babe9990.tistory.com/trackback/44 관련글 쓰기

prev | 1 | next