yoni
[03] 컴파일, 자바 프로그램의 구조, 데이터 형(data type), 연산자(Operator), 사칙연산 본문
java of educational by contents
[03] 컴파일, 자바 프로그램의 구조, 데이터 형(data type), 연산자(Operator), 사칙연산
yoni-1117 2018. 12. 1. 12:25[01] 컴파일 단계
- 파일 확장자 java: 자바 소스 파일 예) Hello.java
- 파일 확장자 class: 1차 컴파일(변환)된 파일, 바이트 코드,
Cross Platform 지원(Unix, Linux, Mac등 대부분 OS 지원)
. 개발 환경: Windows/Mac/Ubuntu, 서비스 운영: Linux, Unix 주로 이용
- 컴파일: 영문 숫자나 특수문자로 구성된 프로그램 명령어를 기계어로
변환하는 과정, 단순 문장을 기능이 있는 문장으로 변환하는 과정
- 단계: JAVA 소스(문장) -> JDK(javac.exe) 컴파일 -> class 파일(바이트 코드)
-> JVM(java.exe, JRE) -> 메모리상에서 기계어로 재 컴파일후 -> 실행
- 파일 확장자 class: 1차 컴파일(변환)된 파일, 바이트 코드,
Cross Platform 지원(Unix, Linux, Mac등 대부분 OS 지원)
. 개발 환경: Windows/Mac/Ubuntu, 서비스 운영: Linux, Unix 주로 이용
- 컴파일: 영문 숫자나 특수문자로 구성된 프로그램 명령어를 기계어로
변환하는 과정, 단순 문장을 기능이 있는 문장으로 변환하는 과정
- 단계: JAVA 소스(문장) -> JDK(javac.exe) 컴파일 -> class 파일(바이트 코드)
-> JVM(java.exe, JRE) -> 메모리상에서 기계어로 재 컴파일후 -> 실행
- 클래스명(파일명)의 첫자는 대문자로 지정합니다.
예) hello 소문자는 객체명으로 주로 사용합니다.
예) hello 소문자는 객체명으로 주로 사용합니다.
- 클래스명과 파일명은 대소문자를 포함해 일치해야합니다.(Eclipse 자동 지원)
- 문장 마지막의 ';'은 하나의 명령의 종료를 뜻함, 생략시 에러 발생합니다.
* 컴퓨터의 구조: 폰 노이만 구조
- 프로그램을 메모리에 저장한후 실행
- 문장 마지막의 ';'은 하나의 명령의 종료를 뜻함, 생략시 에러 발생합니다.
* 컴퓨터의 구조: 폰 노이만 구조
- 프로그램을 메모리에 저장한후 실행
[실습 1] 컴파일/실행 테스트
[실행 화면]
자바 컴파일
자바 실행
15
35
55
27
127
매출액: 1000500
1500 원
매출액: 1500
▷ /src/One.java <- 대소문자 주의
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
public class One {
public static void main(String[] args) {
System.out.println("자바 컴파일");
System.out.println("자바 실행");
System.out.println(10 + 5);
System.out.println(10 + 5 + 20);
System.out.println(10 + 5 + 20 * 2);
System.out.println((10 + 5 + 20 * 2)/2);
System.out.println((10 + 5 + 20 * 2)/2 + 100);
System.out.println("매출액: " + 1000 + 500); // 문자열로 변환
System.out.println(1000 + 500 + " 원");
System.out.println("매출액: " + (1000 + 500));
}
}
[02] 변수명(식별자, Identifier) 규칙
- 할당된 메모리에 붙이는 이름(별명), 이름으로 메모리 접근
- 첫 문자가 영문자나 '_', '$'의 일부 특수문자로 시작되어야 한다.
숫자로 시작할 수 없다.
- 할당된 메모리에 붙이는 이름(별명), 이름으로 메모리 접근
- 첫 문자가 영문자나 '_', '$'의 일부 특수문자로 시작되어야 한다.
숫자로 시작할 수 없다.
- 자바의 예약어(boolean, class, public...)는 식별자로 사용할 수 없다.
- 자바의 식별자(변수명)는 대소문자를 구분한다.
- 식별자(변수명) 길이는 제한이 없고 공백은 포함할 수 없다.일반적으로 5 ~ 15자를 권장합니다. (의미에따라 4자 이하도 상관 없음)
- 변수명은 값을 연상 할 수 있도록 의미있게 지정해야한다.
. abc X 의미 없음.
. abc1 X 의미 없음.
. my name X 공백 존재
. korean O
. trip O
예) String name = "왕눈이"; ← name 이란 이름의 메모리에 "왕눈이"를 저장
int java = 90; ← java란 이름의 메모리에 90을 저장
[과제] 수치형 데이터 타입을 이해하기위해 2진수를 이해할 필요가 있음.
- 2진수, 8진수, 10진수, 16진수의 변환 파악
- 2진수, 8진수, 10진수, 16진수의 변환 파악
* 컴퓨터 저장 용량의 사용예
1) 1 Bit: 0(0v), 1(5v) -> 건전지에 연결된 전구의 구조, 스위치를 이용한 전원 차단, TR -> IC
2) 1 Byte: 8 bit -> 한글 1자: 2 Byte, 영숫자: 2 Byte, 전구 8개 연결, 네트워크 전송 단위,
Arduino ARM process 크기 (C 언어: 한글 1자: 2 Byte, 영숫자 1 Byte)
Arduino ARM process 크기 (C 언어: 한글 1자: 2 Byte, 영숫자 1 Byte)
3) 1 KByte: 1024 Byte -> 한글 512자, 영숫자: 512 자, OS 저장 단위
4) 1 MByte: 1024 KByte -> MP3 음악 1곡 6 MByte, 사진 1장 1~1.6MB
5) 1 GByte: 1024 MByte -> MP4 영화 1편 3.5 GByte (Smartphone: 32 GB, 64 GB, 128 GB...)
6) 1 TByte: 1024 GByte -> 한국인이 하루에 마시는 지역별 커피의 시간대/브랜드/종류/용량,
Bigdata 파일, 국가 단위 데이터
Bigdata 파일, 국가 단위 데이터
7) 1 PByte: 1024 TByte -> 국가 및 대륙단위 데이터
8) 1 EByte: 1024 PByte -> 전세계의 통계
8) 1 EByte: 1024 PByte -> 전세계의 통계
[03] 데이터 형(data type)
- 프로그램: 데이터 입력 기능 → 데이터 처리 기능 → 처리 결과 출력 기능
데이터 입력 기능 → 규칙 발견 → 모듈 검증 및 예측 출력
- 데이터를 입력하여 메모리에 저장하며,
메모리에 저장된 데이터를 처리할 때 자바는 데이터의 타입을 알아야 처리가 진행됩니다.
사전에 자바 내부에 지정된 데이터 타입을 기준으로 데이터에 타입을 선언하며,
자바가 메모리를 할당하는 기준이됩니다.
- 요약하면 메모리를 사용하는 기준이됩니다.
- CPU와 메모리의 한계 때문에 데이터타입은 정확하게 지정하는것을 권장합니다.
(많이 사용되는 데이터 타입이 있음)
- Javascript(Web), R(데이터 분석), Python(인공지능)등의 언어는 자동으로 데이터 타입 처리됨.
- Primitive type: 고전적인 타입, 원시 타입, 크기가 지정되어 있어 크기 변경을 못합니다.
예) int: 정수, 4 byte
- Reference type: 메모리 참조타입, 복합 타입으로 Primitive type이 1개이상 결합되어
사용되는 경우가 많습니다. 크기를 필요에따라 변경 할 수 있습니다.
예) String, 개발자 정의 타입 가능: Student, Korea, Seoul...
(많이 사용되는 데이터 타입이 있음)
- Javascript(Web), R(데이터 분석), Python(인공지능)등의 언어는 자동으로 데이터 타입 처리됨.
- Primitive type: 고전적인 타입, 원시 타입, 크기가 지정되어 있어 크기 변경을 못합니다.
예) int: 정수, 4 byte
- Reference type: 메모리 참조타입, 복합 타입으로 Primitive type이 1개이상 결합되어
사용되는 경우가 많습니다. 크기를 필요에따라 변경 할 수 있습니다.
예) String, 개발자 정의 타입 가능: Student, Korea, Seoul...
- boolean: 1 Byte(8 Bit)
- 초기값 : false
- 갖을 수 있는 값의 범위: true, false
- 조건문(제어문)에서 조건이 참/거짓인지 판별하는 기준으로 쓰입니다.
- 제어문에서 많이 사용됩니다.
예)
boolean sw = true; 타입 변수명 = 값;
2. 문자 관련 자료형
1) 문자형(character)
1) 문자형(character)
- char: 2 Byte(16 Bit)
- 초기값 : \u0000
- 범위: \u0000 ~ \uFFFF(Unicode 0~65535)
- 한 문자만 저장가능하며 ''(single quotation)으로 시작과 끝을 명시합니다.
- 한 문자만 저장가능하며 ''(single quotation)으로 시작과 끝을 명시합니다.
예)
char grade = 'A';
char grade = '수';
2) 문자열 형(Stirng)(*)
- 가변 길이, 문자열에따라 메모리가 할당됩니다.
- ""(double quotation)으로 시작과 끝을 명시합니다.
- char 문자가 나열된 형태
예)
예)
String str = "ABCD";
3. 정수 숫자형(음의 정수, 양의 정수)(integer)(*)
- 2진수의 원리
2^8 = 256가지 표현 ( 2 X 2 X 2 X 2 X 2 X 2 X 2 X 2) (8개의 스위치)
10진수로 변환: 0 ~ 255
- 2진수의 원리
2^8 = 256가지 표현 ( 2 X 2 X 2 X 2 X 2 X 2 X 2 X 2) (8개의 스위치)
10진수로 변환: 0 ~ 255
- byte: 1 Byte
. 초기값: 0(양수)
. 값의 범위: -128 ~ 127, -(2^7) ~ 0 ~ 2^7-1
0 0 0 0 0 0 0 0 --> 0
+1
0 0 0 0 0 0 0 1 --> 1
+1
0 0 0 0 0 0 0 2 --> X
0 0 0 0 0 0 1 0 --> 2
+1
0 0 0 0 0 0 1 1 --> 3
0 0 0 0 0 1 1 1 --> 7
0 0 0 0 1 1 1 1 --> 15
0 0 0 1 1 1 1 1 --> 31
0 0 1 1 1 1 1 1 --> 63
0 1 1 1 1 1 1 1 --> 127 양수
첫번째 비트를 부호 비트: 0-양수,1-음수
1 0 0 0 0 0 0 0 --> 128 -> -128 음수
1 0 0 0 0 0 0 1 --> 129 -> -128+1 -> -127 음수
1 0 0 0 0 0 1 0 --> 130 -> -128+2 -> -126 음수
.....
1 1 1 1 1 1 1 1 --> 255 -> -128+127 -> -1 음수
0 0 0 0 0 0 0 0 --> 0
0 0 0 0 0 0 0 1 --> 1
순환
.....
- short: 2 Byte, 2^16 = 65536가지 표현
. 초기값: 0(양수)
. 값의 범위: -32768 ~ 32767, -(2^15) ~ 0 ~ 2^15-1
- int: 4 Byte, 2^32(*)
. 초기값: 0(양수)
. 값의 범위: -2147483648 ~ +2147483647, -(2^31) ~ 2^31-1
- long: 8 Byte, 2^64
. 초기값: 0(양수)
. 값의 범위: -(2^63) ~ 2^63-1
예)
예)
int java = 80;
int jsp = 90;
int spring = 70;
int project = 100;
long sales = 100000000000L;
long sales = 100000000000L;
4. 실수 숫자형(real number)
- 지수: 1e+5 -> 1 * 10^5, 12345 -> 1.2e+4 -> 12000
1e-5 -> 1 * (10^-5) 0.00001 -> 1.0e-4 -> 0.00001
- 지수: 1e+5 -> 1 * 10^5, 12345 -> 1.2e+4 -> 12000
1e-5 -> 1 * (10^-5) 0.00001 -> 1.0e-4 -> 0.00001
- float: 4 Byte
. 초기값: 0.0f
. -1.40e-45 ~ +3.40e+38
- double: 8 Byte(*)
. 초기값: 0.0
. 값의 범위: -4.94e-324 ~ 1.79e+308
. 기본적으로 인식되는 타입
. 기본적으로 인식되는 타입
- 보통 소수점은 소수이하 3자까지 사용됨, 머신러닝은 6자리 이하도 사용됨.
200.123
5. 데이터 타입 실습
[실행 화면]
200.123
5. 데이터 타입 실습
[실행 화면]
sw
true
false
sw=false
------------------------
chr=A
movie=부산행
컨저링 2(★★★★★)
------------------------
급여1: 2000000
급여2: 2000000500000
급여3: 2500000
연봉: 26000000
------------------------
100의 100%: 100
100의 50%: 50
100의 50%: 0
100의 100%: 100
100의 100%: 100.0
100의 50%: 50.0
100의 95%: 95.0
100의 10%: 10.0
100의 1.96%: 1.96
100의 1.64%: 1.6400000000000001
100의 1.28%: 1.28
1
1
100의 0.15%: 0.15
100의 0.075%: 0.075
▷ Test.java
- 정수 / 정수 = 정수, 소수점 짤림, 반올림 안됨
예) 10 / 3 = 3.3 (X)
10 / 3 = 3 (O)
5 / 10 -> 0.5 -> 0
- 정수 / 실수 = 실수, 소수점 출력
예) 10 / 3.0 = 3.3333333 (O)
- 정수 / 정수 = 정수, 소수점 짤림, 반올림 안됨
예) 10 / 3 = 3.3 (X)
10 / 3 = 3 (O)
5 / 10 -> 0.5 -> 0
- 정수 / 실수 = 실수, 소수점 출력
예) 10 / 3.0 = 3.3333333 (O)
-----------------------------------------------------------------------------------
[04] 연산자(operator: 기사, 조작자, 데이터 조작자)
- 단항 연산자: 하나의 변수로 연산이 진행
- 산술 연산자: 사칙연산(*)
- 비교 연산자: 대소비교, 동일한지 비교(*)
- 논리 연산자: 참, 거짓 연산자(*)
- 삼항 연산자: 조건식, 참, 거짓 결합
- 대입 연산자: 값의 대입(*)
1. 산술(수치) 연산자 : +, -, *(×: 곱하기), /(÷: 나누기), %(나머지, 모듈러스 연산자)
어떤수를 나누었을때 나머지가 0이면 어떤수의 배수입니다.
3. 기타 연산자
public class Test {
public static void main(String[] args) {
}
}
-----------------------------------------------------------------------------------
[04] 연산자(operator: 기사, 조작자, 데이터 조작자)
- 단항 연산자: 하나의 변수로 연산이 진행
- 산술 연산자: 사칙연산(*)
- 비교 연산자: 대소비교, 동일한지 비교(*)
- 논리 연산자: 참, 거짓 연산자(*)
- 삼항 연산자: 조건식, 참, 거짓 결합
- 대입 연산자: 값의 대입(*)
1. 산술(수치) 연산자 : +, -, *(×: 곱하기), /(÷: 나누기), %(나머지, 모듈러스 연산자)
- 정수 / 정수 = 정수
예) 10 / 3 = 3.3333(X)
10 / 3 = 3(O) 소수점 짤림, 반올림 안됨.
예) 10 / 3 = 3.3333(X)
10 / 3 = 3(O) 소수점 짤림, 반올림 안됨.
- float n = 0.0f; f를 제거하면 double 8바이트가 되어 에러가 발생함.
double n = 0.0; <- 기본 형식
1) 나누기 연산자: 몫만 산출됨, 소수점 짤림, 반올림 안됨.
0 / 3 = 0
1 / 3 = 0 <- 주의 0.3 아님
2 / 3 = 0 <- 주의 0.6 아님
3 / 3 = 1
4 / 3 = 1 <- 주의 1.3 아님
5 / 3 = 1 <- 주의 1.6 아님
6 / 3 = 2
7 / 3 = 2
7 / 3 = 2
2) 몫을 뺀 나머지 연산자, 13으로 나누었을 때의 나머지는 0 ~ 12가됨
1 % 3 = 1
2 % 3 = 2
3 % 3 = 0
4 % 3 = 1
4 % 3 = 1
5 % 3 = 2
6 % 3 = 0
7 % 3 = 1
8 % 3 = 2
9 % 3 = 0
어떤수를 나누었을때 나머지가 0이면 어떤수의 배수입니다.
2. 대입 연산자 : =
- 좌변은 상수(숫자, 문자, 문자열)값이 아니라 기억장소(변수(식별자, 메모리))가
와야합니다.
- 할당(대입) 연산자의 양면성
int year = 2016;
int festival = year;
'='을 기준으로 오른쪽의 변수는 메모리에서 값을 가져오는 역활을하며,
왼쪽의 변수는 값이 저장될 메모리 역활을 합니다.
와야합니다.
- 할당(대입) 연산자의 양면성
int year = 2016;
int festival = year;
'='을 기준으로 오른쪽의 변수는 메모리에서 값을 가져오는 역활을하며,
왼쪽의 변수는 값이 저장될 메모리 역활을 합니다.
1) int value1 = i + j;
2) int value2 = 10 + 20;
3) int 100 = i + 10; // ERROR, 숫자 100은 기억 장소 아님
4) int value3 = 10.5; // ERROR, 10.5는 double 8 byte, value3: int 4 byte
5) double value4 = 10.5;
6) long year = 2015; // long: 8 byte
7) int avg = 95.5; // ERROR, int 4 byte <- double 8 byte
8) int avg = (int)95.5; // (int 4 byte)(double 8 byte) 소수점이하 삭제되고 95 할당
5) double value4 = 10.5;
6) long year = 2015; // long: 8 byte
7) int avg = 95.5; // ERROR, int 4 byte <- double 8 byte
8) int avg = (int)95.5; // (int 4 byte)(double 8 byte) 소수점이하 삭제되고 95 할당
3. 기타 연산자
- 연산후대입 연산자: +=, -=, *=, /=, %=
- 증가/감소 연산자: ++(1씩 증가), --(1씩 감소)
[출력 화면]
0
0.6666666666666666
2
0
2010
2011
2012
2013
2014
2015
2014
su1: 1
su2: 1
sum: 1
▷ /src/Year.java
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
public class Year {
public static void main(String[] args) {
System.out.println("su1: " + su1);
System.out.println("su2: " + su2);
System.out.println("sum: " + sum);
}
}
'java of educational by contents' 카테고리의 다른 글
[06] if문 실습, 문자열 비교 1 ★ (0) | 2018.12.01 |
---|---|
[05] 제어문 - 분기문(if) - 다양한 if문 ★ (0) | 2018.12.01 |
[04] 콘솔(cmd, command, shell) 실행을 위한 환경 변수 설정, Console에서의 컴파일 및 실행, 콘솔에서의 입력 (0) | 2018.12.01 |
[02] Eclipse Neon 3 JAVA Application 개발 환경 설정 (0) | 2018.12.01 |
[01] Software 개론, 자바 언어의 이해, JDK1.8.0 설정 (0) | 2018.12.01 |
Comments