컴파일 관련 기초적인 실수
시행착오
- 컴파일: javac filename.java
- 실행: java filename.class
- 오류: 오류 : 메인 클래스 JavaEx01.class를 찾을 수 없거나 로드할 수 없습니다(エラー: メイン・クラスJavaEx01.classが見つからなかったかロードできませんでした)
- 해결: java filename
- 해석: 지금은 .class를 입력하면 안 된다.
- 참고: http://mwultong.blogspot.com/2006/09/java-java-class.html
환경 변수 확인
덧: 혹시나 환경 변수 때문에 실행이 제대로 되지 않나 했지만… 큰 관련은 없는 것 같다.
- 방법: JAVA_HOME 환경 변수를 추가.
- 참고: http://carfain.tistory.com/entry/JAVA-%ED%99%98%EA%B2%BD%EB%B3%80%EC%88%98-%EC%84%B8%ED%8C%85-%EB%B0%8F-%ED%99%95%EC%9D%B8
자바 실습
어제에 이어…
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)
- 변수의 선언
자료형 변수명;
- 종류
자료형
크기(Byte)
문자
char
2
숫자(정수)
byte
1
short
2
int
4
long
8
숫자(실수)
float
4
long
8
불린
Boolean
1
- 사용법
int score;
char ch; - 값 대입(초기화)
변수명 = 상수;
변수: 무엇인가를 기억시키고, 사용할 수 있다는 것.
- 이러한 방식을 개발함: 폰 노이만
예제
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); } }
실행결과.
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); } }
실행결과