java는 자바 소프트웨어의 실행 도구
javac는 자바 소프트웨어의 개발 도구
charset
character set
글자 조합
키보드 0과 1의 신호를 컴이 글자로 만든다
글자를 만드는 방법이 많다(수천개)
알파벳은 문제 없으나, 한글 조합이 문제!
글자 조합 방법 : utf8, ms949, euc-kr
이클립스 기본 글자 조합 방법 : ms949 : 범용성 없음
범용성 있는 글자 조합 방법 : utf8
eclipse.ini 파일의 마지막 줄에 추가
-Dfile.encoding=UTF-8
package : 포장하다
자바에서 패키지는 폴더를 의미합니다.
그런데, 자바는 컴파일을 해야 합니다.
컴파일 한 결과 생성되는 class 파일들은???
source는 소스끼리 폴더화 하고,
컴파일 한 결과 생성되는 class 파일들은
class 파일들끼리 폴더화 한다.
--->package 의 개념
1bit - 0 또는 1을 저장하는 공간
1byte - 8bit
1kb - 1000byte
1mb - 1000kb
1gb - 1000mb
컴이 이해하는 언어 - 0 1 011101011100111 (기계어)
만들 때는 인간이 이해하는 언어로 만들고 -> 변환 과정 -> 실행할 때는 0 1로 실행
High Level Language - 인간이 이해하기 쉬운 언어, java, phython
Low Level Language - 컴이 이해하기 쉬운 언어, assembly
assembly도 기계어는 아니라서 다시 assembler를 통해 기계어로 변환
High Level Language와 Low Level Language는 상대적 개념이다.
변환 과정인 compile을 거쳐서 기계어에 가깝게 변환.
자바의 변환 과정 : javac -> 주석과 공백 제거 + 기계어에 가깝게 변환.
javac를 통해 기계어에 가깝게 변환한 결과(byte code, 중간 코드)가 class 파일.
자바의 실행 : java
Test.java -> javac -> Test.class (byte code 중간 코드) -> java -> 기계어 실행
탐색기 파일 확장자 보고 싶을 때
탐색기 > 메뉴 보기 > 옵션 > 보기 > 알려진 파일 형식의 확장자 체크 해제
이클립스 단축키
ctrl + space bar = 자동 완성
ctrl + z = 코딩 취소 (이전 상태로 가기, 뒤로 가기)
ctrl + y = 코딩 취소 (앞으로 가기)
ctrl + d : 한 줄 삭제
F2 : 이름 바꾸기
코드 이동 : alt + 위방향, alt + 아래방향
ctrl + - 텍스트 크기 축소
ctrl + + 텍스트 크기 확대
//한 줄 주석
/*
여러 줄 주석
자바는 공백과 주석을 무한히 허용 -> 컴파일에서 제거
주석과 공백을 최대한 활용하여 가독성 높은(readable, 읽기 쉬운) 코드를 만들어라
/
/
작성일 : 2022.04.15.
작성자 : rojaiho
클래스 개요 : 오버뷰를 확인한다.
요청자 : 임팀장
요처 근거 : email, 공문 XX기관코드2022-04001호
/
package ch1;
/
package
소스는 소스끼리, 컴파일 결과 생성되는 class파일은 class파일끼리 묶어라.
패키지 이름은 소문자로...
패키지 이름 규칙은 안지켜도 에러는 안나지만, 현장에서 욕을 먹고 고쳐야 함.
/
public class Ch01Ex01 {
/
public : 보안 등급 : 누구나 접근 가능
public - protected - default - private
/
/
class : 설계도
프로그램 : 진행 계획, 진행 순서.
프로그래머 : 진행 계획이나 진행 순서를 계획하는 사람.
class : 우리가 계획하는 진행 계획이나 진행 순서를 설계헤 놓는 문서.
{} : 중괄호 : 영역 표시
{ : 영역 시작
} : 영역 종료
모든 자바의 코딩은 class 내부에 하여야 함.
예외는 package, import의 단 두개.
/
/*
Ch1Ex01 : 이름이 오는 자리
여러분 맘대로 지으세요. 단, 규칙이 있음.
class 이름을 만드는(명명) 규칙 - 파스칼 표기법(pascal case)
- 첫문자 대문자
- 이어지는 단어의 첫문자도 대문자
- 나머지는 소문자
- 숫자 가능하지만, 맨 앞은 안됨.
- 특수문자는 $와 _만 가능하지만, 권장 X.
- 파일 이름과 class의 이름이 대소문자 포함여 완전히 일치해야 한다.
- 안지켜도 에러는 안나지만, 현장에서 욕을 먹고 고쳐야 함.
/
/
class의 member (구성 요소)
- variable (변수) : data. 정적이다.
- method : 동작. 동적이다.
/
public static void main(String[] args) {
// void : 없다.
/*
* public static void main(String[] args) - 시작 점
* main : 메소드 이름 - 시작 메소드의 이름은 반드시 main.
* 현재 클래스를 실행하면, main의 첫 줄에서 마지막 줄까지를 한 줄씩 순서대로 수행.
* 이것이 시작 메소드의 의미.
*/
System.out.println(123);
System.out.print(456);
System.out.println(789);
/*
* System
* - jdk가 제공하는 class.
* - 이 코드가 실행되는 컴퓨터를 지칭.
* . : ~의 내부에.
* out
* - jdk가 제공.
* - 이 코드가 실행되는 컴퓨터의 out buffer(출력 메모리)를 지칭.
* print : 화면에 출력.
* println : 화면에 출력한 다음에 줄 바꿈을 해라. print + line new.
* print() : ()안의 내용을 출력해라.
* ; : semicolon : 한 줄의 끝을 표시. 안 쓰면 에러.
*/
}//end of main//main
}//end of class//class
넓은 의미에서 데이터
데이터의 예 1
이름 홍길동, 나이 25세, 키 180cm, 몸무게 80kg, 혈액형 B형.
쇼핑몰A의 판매 데이터의 예 2
01.01. 고객 홍길동, 상품 생수2L, 수량 30개
02.01. 고객 홍길동, 상품 생수2L, 수량 30개
03.01. ...
04.01. ...
package ch02;
/*
자바가 다루는 데이터의 형태
정수 : 음수, 양수, 0을 포함하는 소수점이 없는 숫자.
실수 : 음수, 양수, 0.0을 포함하는 소수점이 있는 숫자.
논리 : true, false.(오직 두개)
문자 : character : 오직 문자 하나.
자바의 문자는 다국어 지원을 위해 유니코드(16bit)를 사용.
문자열 : character string : 문자를 줄지어 놓은 것 : 문자 집합.
*/
public class Ch02Ex01 {
public static void main(String[] args) {
System.out.println(123);//정수
System.out.println(3.14);//원주율//실수
System.out.println(true);//논리
System.out.println('A');//문자
System.out.println('한');//문자
System.out.println("문자열");//문자열
}//main
}//class
/ 자바에서 데이터를 사용하는 방법.
- 변수를 적극 활용해라.
/
/
변수의 개념 : variable : various(다양함) + able(가능성)
- 다양한 값을 가질 수 있다.
- 데이터를 저장하는 저장 공간
- 데이터를 저장하는 공간에 들어 있는 값을 바꿀 수 있다.(반드시 바꾼다 아님.)
*/
package ch02;
public class Ch02Ex02 {
public static void main(String[] args) {
int data1 = 9876;
int data2 = 8765;
System.out.println(data1 + data2);
System.out.println(data1 - data2);
System.out.println(data1 * data2);
data2 = 4;
System.out.println(data1 / data2);
}//main
}//class
package ch02;
/*
변수의 생성
int : 자바에서 정수를 변수로 사용하는 방법 중의 하나.
*/
public class Ch02Ex03 {
public static void main(String[] args) {
int data1;
/*
* int data1; //변수의 선언.
* - 메모리에 정수를 담는 공간 하나를 만들고, 그 공간의 이름을 data1이라고 해라.
*/
data1 = 9876;
/*
* data1 = 9876; //변수의 초기화.
* - data1이라고 이름 붙은 공간에 9876을 넣어라.
* - equal 기호(=)는 같다라는 의미가 아니다.
* - equal 기호(=)는 대입 연산자.
* - equal 기호(=)는 우항의 값을 좌항에 넣어라.
*/
int data2 = 8765;//선언과 초기화를 한방에 할 수도 있다.
int a=1, b=2, c=3, d=4, e=5;//여러 개 동시 처리 가능.
}//main
}//class
package ch02;
/*
자바에서 사용하는 변수의 종류 : primitive data type : 자바의 기본 데이터 종류 8가지.
꼭 기억할 타입 : int, long, double, boolean.
*/
public class Ch02Ex04 {
public static void main(String[] args) {
byte byteVar = 127;//메모리에 정수 8bit 공간 확보.
short shortVar = 30000;
int intVar = 2100000000;
long longVar = 2200000000L;//L을 넣어야 long value.
float floatVar = 0.123456789F;//F를 넣어야 float value.
System.out.println(floatVar);
double doubleVar = 0.1234567890123456789D;//D를 넣지 않아도 됨.
System.out.println(doubleVar);
boolean boolVar = false;
System.out.println(boolVar);
System.out.println(longVar > intVar);//true
char charVar = 'A';
System.out.println(charVar);
}//main
}//class
/*
정수 타입의 변수 - byte (8bit)
정수 타입의 변수 - short (16bit)
정수 타입의 변수 - int (32bit)
정수 타입의 변수 - long (64bit)
변수와 메소드의 이름을 만드는(명명) 규칙 - 카멜(Camel) 표기법
특수문자 권장하지 않음
*/
package ch02;
public class Ch02Ex05 {
public static void main(String[] args) {
byte byteVar1 = 1, byteVar2 = 2;
//byte byteVar3 = byteVar1 + byteVar2;//왜 에러일까?
// -> 정수 변수의 기본형은 int. (아무 생각 없이 코딩하면 다 int가 된다.)
// -> 연산을 할 때 int형으로 변화가 발생.
byte byteVar4 = 1 + 2;
byte byteVar5 = byteVar1;
short shortVar1 = 1, shortVar2 = 2;
//short shortVar3 = shortVar2 - shortVar1;
// -> 정수 변수의 기본형은 int. (아무 생각 없이 코딩하면 다 int가 된다.)
// -> 연산을 할 때 int형으로 변화가 발생.
short shortVar4 = 1 + 2;
short shortVar5 = shortVar1;
long longValue1 = 1L, longValue2 = 2L;
long longValue3 = longValue1 * longValue2;
}//main
}//class
/*
Wrapper class
정수형 Wrapper class
Byte, Short, Integer, Long.
*/
package ch02;
public class Ch02Ex06 {
public static void main(String[] args) {
System.out.println(Byte.MIN_VALUE + " ~ " + Byte.MAX_VALUE);
System.out.println(Short.MIN_VALUE + " ~ " + Short.MAX_VALUE);
System.out.println(Integer.MIN_VALUE + " ~ " + Integer.MAX_VALUE);
System.out.println(Long.MIN_VALUE + " ~ " + Long.MAX_VALUE);
}//main
}//class
package ch02;
/*
실수 타입의 변수
double는 소수점 15번째까지 신뢰.
*/
public class Ch02Ex07 {
public static void main(String[] args) {
float floatVar1 = 0.9F, floatVar2 = 0.5F;
System.out.println(floatVar1);
double doubleVar1 = floatVar1;
System.out.println(doubleVar1);
double doubleVar2 = floatVar1 + floatVar2;
System.out.println(doubleVar2);
}//main
}//class
package ch02;
/*
Data Type Casting : 데이터의 형태를 바꾼다.
Promotion, 자동 형태 변환, 묵시적 형태 변환
Demotion, 강제 형태 변환, 명시적 형태 변화
데이터가 손실될 수 있는 부작용을 각오해야 한다.
*/
public class Ch02Ex08 {
public static void main(String[] args) {
byte byteVar1 = 1, byteVar2 = 2;
int intVar1 = byteVar1;
System.out.println(intVar1);
byte byteVar3 = (byte) intVar1;
System.out.println(byteVar3);
byte byteVar4 = (byte) (byteVar1 + byteVar2);//연산을 하면 자동으로 int.
System.out.println(byteVar4);
int intVar2 = 129;
byte byteVar5 = (byte) intVar2;
System.out.println(byteVar5);
}//main
}//class