컴파일 관련 기초적인 실수
시행착오
- 컴파일: javac filename.java
- 실행: java filename.class
- 오류: 오류 : 메인 클래스 JavaEx01.class를 찾을 수 없거나 로드할 수 없습니다(エラー: メイン・クラスJavaEx01.classが見つからなかったかロードできませんでした)
환경 변수 확인
덧: 혹시나 환경 변수 때문에 실행이 제대로 되지 않나 했지만… 큰 관련은 없는 것 같다.
자바 실습
어제에 이어…
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, 부호비트)
최상위 비트 (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.
숫자(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);
}
}
실행결과