2016-05-18: 주석과 자료형

컴파일 관련 기초적인 실수

시행착오

clip_image001

  • 컴파일: javac filename.java
  • 실행: java filename.class
  • 오류: 오류 : 메인 클래스 JavaEx01.class를 찾을 수 없거나 로드할 수 없습니다(エラー: メイン・クラスJavaEx01.classが見つからなかったかロードできませんでした)

clip_image002

환경 변수 확인

clip_image003

덧: 혹시나 환경 변수 때문에 실행이 제대로 되지 않나 했지만… 큰 관련은 없는 것 같다.

clip_image004

자바 실습

어제에 이어…

class JavaEx01 {
	public static void main(String[] args){
		System.out.println("Java!");
		System.out.print("Programming");
		System.out.print(" print");
	}
}

System.out.print : 줄바꿈 없음

주석

comment가 아주 중요. 자바의 주석은 두 가지. // or /**/

/*
작성자: AAA
일자: 2016-05-18
용도: 테스트
소속사: 00회사
*/

class JavaEx01 { //한 줄 주석
	public static void main(String[] args){
		/* 여러 범위 주석
		System.out.println("Java!");
		System.out.print("Programming");
		System.out.print(" print"); */
		
		System.out.println("Age: " + 10);
		// System.out.println("Height: " + 170);
		// 잠깐 실행에서 제외하고 싶을 때 주석을 사용하면 편리하다.
	}
}

변수(Variable)

메모리에 확보한 공간에 붙이는 별칭(Alias)

  1. 변수의 선언

자료형 변수명;

  1. 종류

     

    자료형

    크기(Byte)

    문자

    char

    2

    숫자(정수)

    byte

    1

     

    short

    2

     

    int

    4

     

    long

    8

    숫자(실수)

    float

    4

     

    long

    8

    불린

    Boolean

    1

  2. 사용법
    int score;
    char ch;
  3. 값 대입(초기화)
    변수명 = 상수;

변수: 무엇인가를 기억시키고, 사용할 수 있다는 것.

  • 이러한 방식을 개발함: 폰 노이만

예제

int a=10
int b;
b = a; // a는 상수화되어 b에 저장됨.(등호의 오른쪽에 넣는 순간…)

Address(번지)

  • 0x100 과 같이 표시.
    • 0x로 시작하면 16진수임
    • 이진수로 쓰면 길어지니까.
  • JVM이 변수가 저장될 메모리의 번지를 관리해준다.
    • 변수: 그 번지에 별명을 붙여서 사용

변수명

  • 소문자로 시작
    • 두 단어 이상으로 이뤄졌으면 두 번째 단어를 대문자로

‘Camel 표기법에 의거’ 변수명을 지어보자.

2의 배수

1024

512

256

128

64

32

16

8

4

2

10

9

8

7

6

5

4

3

2

1

 비트/바이트

Bit

Byte

Kilo Byte

Mega Byte

Giga Byte

Tera Byte

Peta Byte

0 or 1

8Bit

1024Byte

1024KB

1024MB

1024GB

1024TB

영문자 1

  • 참고: 숫자 자료형 처리 시 Byte나 Short를 사용한다고 처리 속도가 빠르진 않지만(오히려 int가 빠르게 처리된다고 함) 구식 컴퓨터를 위해 낮은 단위들이 남아 있는 것이라고 한다.
    byte 와 short 는 거의 예비용으로 남겨져 있다.

자료의 저장

  • 1Byte = 8Bit (0~127 저장 가능)
    Byte a;
    a=127;

 

 

 

 

 

 

 

 

MSB(Most Significant Bit, 부호비트)

  • 0이면 양수, 1이면 음수

최상위 비트 (most significant bit, msb)는 최고값을 갖는 비트 위치이다. msb는 가장 큰 숫자를 왼쪽에 기록하는 자리 표기법의 규정 때문에 가끔 “left-most bit”를 뜻하기도 한다.

출처: <https://ko.wikipedia.org/wiki/%EC%B5%9C%EC%83%81%EC%9C%84_%EB%B9%84%ED%8A%B8>

문자(CHAR형)

char -> 2Byte (자바에서는 2바이트임. UNICODE를 지원하기 때문)

ASCII

  • 미국에선 처음 PC를 설계할 때 ASCII를 사용했다.(7비트; 128자)
    • 한글, 한자는 턱없이 부족
    • 영문 윈도우 -> 3달 이후 한글 윈도우

모든 코드를 2바이트로 만들자… 유니코드

유니코드

  • 표현: \u 로 시작하면 유니코드임.(2Byte 기억 공간을 차지, 16비트)
  • 0~65535 표현 가능

A: 65, a: 97일 때 차이는 32.

  • A+32=a
  • a-32=A
  • A+1=B

숫자(int)

별다른 표시가 없는 경우

100 -> int

3.14 -> double

3.14f -> float

  • float 형은 거의 쓸 일이 없음… float형은 오차도 있음…

더 큰 자료들은 별도 클래스로 제공합니다.

지수표기법.

Boolean

Boolean: 1Byte.

참/거짓을 판별하는 용도로 사용.

예제

  • boolean isPower;
  • isPower = true;

문자(String, Char)

String: 문자열 저장. 기본 자료형은 아니지만, 사용의 편의를 위해 만든 클래스라고 함.

String name;

name=”홍길동”;

String name=””; // 백지상태로 clear

전화번호

String tel = “010-0000-0000”; // 전화번호를 String으로 저장

System.out.println(tel); // 출력

참고: C언어에서는 문자열을 배열로 만들어서 번거로움

Char: 한 글자 표기

char ch;

ch = ‘A’; // 작은 따옴표로

char name=’ ‘; // char을 clear하는 경우 한 칸 띄움.(스페이스바를 저장하는 건가?)

실습1

개인 정보를 변수에 저장해 출력하기

class JavaEx02 {
	public static void main(String[] args){
		String name, tel, address, email;
		int age;
		
		name="Gil-Dong Hong";
		tel="010-9999-9999";
		address="Seoul, South Korea";
		email="aaaa@bbb.com";
		age=31;
		
		System.out.println("----- " + name + "'s Profile -----");
		System.out.println("Age: " + age);
		System.out.println("Tel: " + tel);
		System.out.println("Address: " + address);
		System.out.println("Email: " + email);
	}
}

clip_image012

실행결과.

Syntax Error(문법 오류)는 찾기 쉬움. 논리적 오류는 구조적인 문제이므로 발견하기 어렵다.

실습2

직급, 기본급 출력

class JavaEx03 {
	public static void main(String[] args){
		String name, position;
		int basePay;
		
		name="Gildong Hong";
		position="manager";
		basePay=300000000;
		
		System.out.println("----- " + name + "'s Profile -----");
		System.out.println("Position: " + position);
		System.out.println("Base Pay: " + basePay);
	}
}

clip_image013

실행결과