코딩 이야기
JAVA 1일 본문
JAVA
- 객체 지향 프로그래밍
- 메모리 자동 정리
- 무료 라이브러리 풍부
자바소스파일>>바이트 코드 파일>>기계어>>실행
javac 명령어 실행 java 명령어 실행
프로그램 소스 분석
package ch01;
public class Hello {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Hello, Java");
}
}
중괄호 {}블록 앞부분 public class Hello를 클래스 선언부
public class는 공개 클래스
Hello는 클래스이름
중괄호 {}블록 앞부분인 public static void main(String[] args) 를 메소드 선언부
main은 메소드 이름, 바이트 코드 파일을 실행하면 제일 먼저 main() 메소드를 찾아 블록 내부를 실행
main()메소드를 실행 진입점이라 부른다.
자바의 변수선언
int age // 정수(int)를 저장할 수 있는 age 변수선언[소수점이 없는 숫자]
int : 타입
age 변수이름
double value; //실수(double)를 저장할 수 있는 value 변수 선언[소수점이 있는 숫자]
값 저장
자바에서는 변수에 값이 저장되지 않으면 변수가 생성되지 않습니다.
변수에 최초로 값이 저장될 때 변수가 생성됩니다. 이것을 변수 초기화라고 합니다.
이때 사용된 값을 초기값이라고 합니다.
변수 사용 범위
자바의 모든 변수는 중괄호{} 블록 내에서 선언되고 사용됩니다. 메소드 블록 내에서 선언된 변수를 로컬 변수 라고 부른다.
로컬 변수는 메소드 블록내에서만 사용하고 메소드 실행이 끝나면 메모리에서 사라진다.
메소드 블록 내에는 다른 중괄호 {} 블록들이 작성될 수 있습니다. 중괄호{] 안에서 선언된 변수는 중괄호{} 안에서만 사용이가능합니다.
- 변수가 어떤 범위에서 사용될 것인지를 생각하고, 선언 위치를 결정해야 합니다.
- 메소드 블록 전체에서 사용하고 싶다면 메소드 블록 첫머리에 선언합니다.
- 특정 블록 내부에서만 사용된다면 해당 블록 내에 선언합니다.
변수 사용 예제
package ch02;
public class VariableUseExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
int hour = 3;
int minute = 5;
System.out.print(hour + "시간" + minute + "분");
int totalMinute = (hour*60) + minute;
System.out.println("총" + totalMinute + "분");
}
}
변수 값 교환
package ch02;
public class VariableExchangeExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
int x = 3;
int y = 5 ;
System.out.println("x:" + x + "y:" + y);
int temp =x;
x = y;
y = temp;
System.out.print("x:" + x + "y:" + y);
}
}
변수의 사용 범위
package ch02;
public class VariableScopeExaple {
public static void main(String[] args) {
// TODO Auto-generated method stub
int v1 =15;
if(v1>10) {
int v2;
v2 = v1 - 10;
}
int v3 = v1 + v2 + 5; // v2 변수를 사용할 수 없기 때문에 컴파일 에러발생
}
}
정수 타입
정수형 타입할당되는 메모리의 크기데이터의 표현 범위
byte | 1바이트 | -128 ~ 127 |
short | 2바이트 | -215 ~ (215 - 1) |
-32,768 ~ 32,767 | ||
int | 4바이트 | -231 ~ (231 - 1) |
-2,147,483,648 ~ 2,147,483,647 | ||
long | 8바이트 | -263 ~ (263 - 1) |
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
또한, 언더플로우(underflow)란 해당 타입이 표현할 수 있는 최소 범위보다 작은 수를 저장할 때 발생하는 현상을 가리킵니다.
다음 예제는 오버플로우나 언더플로우가 발생하면 결과에 어떠한 영향을 주는지를 보여주는 예제입니다.
public class Datatype04 {
public static void main(String[] args) {
byte num1 = 127;
byte num2 = -128;
num1++; // 127 + 1
num2--; // -128 - 1
System.out.println(num1); // -128
System.out.println(num2); // 127
}
}
-128
127
실수형 타입
자바에서 실수란 소수부나 지수부가 있는 수를 가리키며, 정수보다 훨씬 더 넓은 표현 범위를 가집니다.
자바의 기본 타입 중 실수를 나타내는 타입은 다음과 같습니다.
1. float
2. double
과거에는 실수를 표현할 때 float형을 많이 사용했지만, 하드웨어의 발달로 인한 메모리 공간의 증가로 현재에는 double형을 가장 많이 사용합니다.
따라서 실수형 타입 중 기본이 되는 타입은 double형입니다.
실수형 데이터의 타입을 결정할 때에는 표현 범위 이외에도 반드시 유효 자릿수를 고려해야 합니다.
실수형 타입지수의 길이가수의 길이유효 자릿수
float | 8 비트 | 23 비트 | 소수 부분 6자리까지 오차없이 표현할 수 있음. |
double | 11 비트 | 52 비트 | 소수 부분 15자리까지 오차없이 표현할 수 있음. |
실수형 타입할당되는 메모리의 크기데이터의 표현 범위리터럴 타입 접미사
float | 4바이트 | (3.4 X 10-38) ~ (3.4 X 1038) | F 또는 f |
double | 8바이트 | (1.7 X 10-308) ~ (1.7 X 10308) | D 또는 d (생략 가능함) |
컴퓨터에서 실수를 표현하는 방식은 오차가 발생할 수 밖에 없는 태생적 한계를 지닙니다.
이러한 실수형 데이터의 오차는 자바뿐만 아니라 모든 프로그래밍 언어에서 발생하는 공통된 문제입니다.
문자형 타입
자바에서 문자형 데이터란 작은 정수나 문자 하나를 표현할 수 있는 타입을 의미합니다.
자바의 기본 타입 중 문자를 나타내는 타입은 다음과 같습니다.
1. char
컴퓨터는 2진수밖에 인식하지 못하므로 문자도 숫자로 표현해야 인식할 수 있습니다.
따라서 어떤 문자를 어떤 숫자에 대응시킬 것인가에 대한 약속이 필요해집니다.
C언어와 C++에서는 아스키코드(ASCII)를 사용하여 문자를 표현합니다.
아스키코드(ASCII)는 영문 대소문자를 사용하는 7비트의 문자 인코딩 방식입니다.
아스키코드는 문자 하나를 7비트로 표현하므로, 총 128개의 문자를 표현할 수 있습니다.
하지만 자바에서는 유니코드(unicode)를 사용하여 문자를 표현합니다.
아스키코드는 영문자와 숫자밖에 표현 못 하지만, 유니코드는 각 나라의 모든 언어를 표현할 수 있습니다.
유니코드는 문자 하나를 16비트로 표현하므로, 총 65,536개의 문자를 표현할 수 있습니다.
문자형 타입할당되는 메모리의 크기데이터의 표현 범위
char | 2 바이트 | 0 ~ 216 |
논리형 타입
논리형은 참(true)이나 거짓(false) 중 한 가지 값만을 가질 수 있는 불리언 타입을 의미합니다.
자바의 기본 타입 중 논리형 타입은 다음과 같습니다.
1. boolean
boolean형의 기본값은 false이며, 기본 타입 중 가장 작은 크기인 1바이트의 크기를 가집니다.
논리형 타입할당되는 메모리의 크기데이터의 표현 범위
boolean | 1바이트 | true 또는 false |
'JAVA' 카테고리의 다른 글
자바 배열 (4일) (0) | 2023.02.01 |
---|---|
JAVA 참조 타입과 참조 변수 (0) | 2023.02.01 |
JAVA 4일 (0) | 2023.02.01 |
JAVA 3일차수업 (0) | 2023.01.31 |
자바 2일차 (0) | 2023.01.30 |