자바 프로그래밍

예제 8월 13일

2009. 8. 17. 01:14
class 가산기 {
  public static void main(String[] args) {
    System.out.println("결과: " +
        (new Integer(args[0]) + new Integer(args[1])));
  }
} /* run: java 가산기 50 60 */
/*
두수를 입력받아 큰 수를 출력하는 프로그램
(실행)
java GT 68 78
(출력)
78이 68보다 큽니다.
/*
class GT {
  public static main(String[] args) {
    if (Integer.parseInt(args[0]) > Integer.parseInt(args[1])) {
      System.out.println(args[0] + "은 " +
          args[1] + "보다 큽니다.");
    } else {
      System.out.println(args[1] + "은 " +
          args[0] + "보다 큽니다.");
    }
  }
}

class GT {
  public static main(String[] args) {
    int a = Integer.parseInt(args[0]);
    int b = Integer.parseInt(args[1]);

    System.out.println(((a > b) ? a : b) + "은 " +
        ((a < b) ? a : b) + "보다 큽니다.");
  }
}
/* 세 수를 입력받아 가장 큰 수를 출력
(실행)
java Max 10 15 3
(출력)
10, 15, 3 중 가장 큰 수는 15입니다.
*/
class Max {
  public static void main(String[] args) {
    int i = Integer.parseInt(args[0]);
    int j = Integer.parseInt(args[1]);
    int k = Integer.parseInt(args[2]);
    int max = -9999;
    
    if (i > j) {
      if (i > k) {
        max = i;
      } else {
        max = k;
      }
    } else {
      if (j > k) {
        max = j;
      } else {
        max = k;
      }
    }

    System.out.println(i + ", " + j + ", " + k + "중 가장 큰수는" +
        max + "입니다.");
  }
}
class Max2 {
  public static void main(String[] args) {
    int number = Integer.parseInt(args[0]);
    int max = number;

    for (int i = 1; i < args.length; i++) {
      number = Integer.parseInt(args[i]);

      // if (max < number) max = number;
      max = (max < number) ? number : max ;
    }

    System.out.println("최대값 : " + max);
  }
}
class 계산기 {
  public static void main(String[] args) {
    int result = 0;

    if (args[1].equals("+")) {
      result = new Integer(args[0]) + new Integer(args[2]);
    } else if (args[1].equals("-")) {
      result = new Integer(args[0]) - new Integer(args[2]);
    } else if (args[1].equals("*")) {
      result = new Integer(args[0]) * new Integer(args[2]);
    } else {
      result = new Integer(args[0]) / new Integer(args[2]);
    }

    System.out.prinln(args[0] + " " + args[1] + " " + args[2] +
        " = " + result);
  }
}

예제 8월 12일

2009. 8. 17. 01:09
/*
비교 연산자
== : 같다
!= : 다르다
> : 크다
>= : 크거나 같다
< : 작다
<= : 작거나 같다
*/
class Example0812 {
  public static void main(String[] args) {
    int i = 9, j = 10;
    
    System.out.println("조건결과 : " + ((i + 1) != j));
    if ((i + 1) != j) {
       System.out.println(i + "은 " + j
           + "보다 작습니다.");
    } else {
       System.out.println(i + "은 " + j
           + "보다 큽니다.");
    }
  }
}
<연습문제>
3. 다음 조건을 만족하도록 프로그래밍하세요.
(조건)
자동차 프로그램을 만들기 위해 클래스의 이름은 Car로 지정.
속도를 저장하기 위해 speed 변수 선언후 적당한 값으로 초기화할 것.
0km 미만 속도일 경우 "후진"
0 ~ 60km 일 경우 "경제속도"
61 ~ 100km 일 경우 "고속"
100km 초과일 경우 "과속"으로 출력할 것

(출력 예)
현재 속도는 89km이며, 고속 주행 중입니다.
class Hakjum {
  public static void main(String[] args) {
    int kor = 98, eng = 80, mat = 89;
    int sum = kor + eng + mat;
    int avg = sum / 3;
    String msg = "";

    if (avg > 100) {
      msg = "입력 초과";
    } else if (avg < 0) {
      msg = "입력 초과";
    } else if (avg >= 90) {
      msg = "수";
    } else if (avg >= 80) {
      msg = "우";
    } else if (avg >= 70) {
      msg = "미";
    } else if (avg >= 60) {
      msg = "양";
    } else {
      msg = "가";
    }

    if (avg > 100 || avg < 0) {
      System.out.println(msg);
    } else {
      (System.out.println("학점은 " + msg +
        "입니다.");
    }
  }
}
<연습문제>
2. 다음 조건을 만족하는 프로그램을 작성하세요.
조건)
i = 10, j = 20, k = 30 일때
세 변수의 합이 60을 초과하면 "참 잘했습니다."
60이하이면 "분발하세요"를 출력

출력)
i : 10, j : 20, k : 30
세 변수의 합 : ??
참 잘했습니다. or 분발하세요

class Ex0812b {
  public static void main(String[] args) {
    int i = 10, j = 20, k = 30;
    System.out.println("세 변수의 합" +
        (i + j + k));
    System.out.println(
      ((i + j + k) > 60) ? "참 잘했습니다." : "분발하세요.");
    /* if ((i + j + k) > 60) {
      System.out.println("참 잘했습니다.");
    } else {
      System.out.println("분발하세요.");
    } */
  }
}
class LogicalTest {
  public static void main(String[] args) {
    boolean bVal1 = true;
    boolean bVal2 = false;
    int iVal1 = 10, iVal2 = 20;

    System.out.println(bVal1 || bVal2);
    System.out.println(bVal1 && !bVal2);
    System.out.println(!(bVal2 || bVal1));
    System.out.println(!bVal2 && !bVal1);
    System.out.println((iVa1 > iVal2) && (iVal2 < iVal1));

    iVal1 = true; /* IVAL = 1 , ival1 = true; */
    MYBIRTHDAT myBirthday
  }
}
<연습문제>
1. 다음 조건을 만족하는 프로그램을 작성하세요.
i = 10, j = 20 일때
i * j > j * (i - 3) 의 결과를 출력
(출력예)
i와 j의 값은 각각 '10'과 '20'입니다.
조건 결과는 ?? 입니다.

class Ex0812a {
  public static void main(String[] args) {
    int i = 10, j = 20;
    System.out.println("i와 j의 값은 각각 '" +
        i + "'과 '" + j + "입니다.");
    System.out.println("조건 결과는 " +
        i * j > j * (i - 3) + "입니다.");
  }
}

변수와 리터럴

변수는 한 마디로 그릇입니다. 그리고 그 그릇에 담기는 값을 리터럴이라고 합니다.

int i = 10;

위의 구문을 풀어보면 변수 'i'를 선언하는데 변수의 타입은 'int'이며 정수(Integer)를 의미합니다. 그리고 변수 'i'에 초기값으로 '10'을 담고 있습니다. '='를 '대입연산자'라고 하며 변수에 값을 담을 때 사용하는 연산자입니다.

변수를 사용할 때는 다음 2가지 원칙을 지키도록 합니다.

  1. 변수를 사용하기 전에 반드시 선언해야 한다.
    int i;
  2. 선언된 변수는 초기화를 한다. 선언된 변수에는 쓰레기 값이 들어 있으므로 그대로는 사용할 수 없습니다.
    i = 0;

위의 설명처럼 2행에 걸쳐 선언과 초기화를 해도 되지만 보통은 처음 예처럼 선언과 동시에 초기화를 해줍니다.

데이터 타입

Java의 데이터 타입은 크게 기본 타입(primitive type)과 참조 타입(reference type)으로 나눌 수 있습니다. 기본 타입은 논리값, 정수값 등의 데이터 타입을 말하며, 참조 타입은 나중에 배우게 될 객체를 가리키기 위한 데이터 타입입니다.

기본 타입은 다음과 같이 구분할 수 있습니다.

기본 테이터 타입
타입 예약어 크기 범위
논리형 boolean 1 bit true, false
문자형 char 2 byte 0 ~ 65535 (유니코드 값)
정수형 byte 1 byte -128 ~ 127
short 2 byte -32,768 ~ 32,767
int 4 byte -2,147,483,648 ~ 2,147,483,647
long 8 byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
실수형 float 4 byte -3.4E38 ~ 3.4E38
double 8 byte -1.7E308 ~ 1.7E308

 

Java의 세계에 첫 발걸음을 해주신 여러분을 환영합니다!
Java는 1991년 경 Sun Microsystems(썬 마이크로시스템즈)의 연구원인 James Gosling(제임스 고슬링)의 주도하에 Oak(오크)라는 이름의 가전제품을 제어하기 위한 목적의 언어로 탄생되었습니다. 하지만 WWW(월드와이드웹)이라는 새로운 패러다임의 탄생으로 Java는 웹사이트를 개발하기 위한 주 언어로써 자리를 잡았고 오늘날 가장 거대한 시스템을 안정적으로 지원하는 기술로 자리매김을 하게 되었습니다.
Java는 다음과 같은 특징을 갖습니다.
플랫폼 독립성
Java는 윈도우와 리눅스, 유닉스 등 다양한 운영체제에 이식되어 "Write Once, Use Anywhere(한 번 작성하면 어디서든지 사용할 수 있다.)"를 실현하고 있습니다.
객체지향 언어
프로그램을 안전하고 체계적으로 개발하기 위해 구조적 프로그래밍 언어의 개념이 나왔다면 거대한 규모의 프로그래밍을 안정적으로 지원하기 위한 목적으로 객체지향 언어라는 개념이 개발되었습니다. 객체지향 언어는 객체를 기반으로 작성되는 프로그래밍 언어로써 실세계에 가까운 개념의 프로그래밍 작성을 가능하게 해줍니다. 구조적 프로그래밍이 코드의 재사용을 편리하게 해준다면 객체지향 프로그래밍은 객체의 재사용을 통해 좀 더 강력하고 유연한 재사용과 다양한 특성을 제공합니다.
가비지 컬렉션
같은 객체지향 언어인 C++의 경우 메모리의 할당과 해제에 대한 관리는 전적으로 프로그래머에게 맡겨집니다. 따라서 프로그래머의 실수나 버그로 인해 메모리의 해제가 정상적으로 이뤄지지 않아 메모리 소모가 발생하게 됩니다. Java의 경우 메모리의 해제를 가상머신이 자동으로 해주기 때문에 더이상 프로그래머는 메모리 해제를 신경쓰지 않아도 됩니다.
멀티쓰레드
Java는 멀티쓰레드 개념을 도입하여 태스크보다 더 작은 실행 단위들을 동시에 실행시킬 수 있으므로 네트워크 서비스에 좀 더 최적화된 서버용 프로그램을 작성할 수 있도록 지원합니다.
이밖에서 Java는 다양한 기능들을 제공하여 다양한 작업을 손쉽게 할 수 있도록 프로그래머에게 강력한 코딩 능력을 지원합니다.

+ Recent posts