전 내용 정리
1. 자바 3가지 환경
- Java SE: 기본개발 환경, JDK 설치(2개의 환경변수: JAVA_HOME, PATH )
- Java EE: 웹 개발 환경 ( 서블릿/jsp ), Tomcat설치
- Java ME: 모바일 환경
2. 자바 특징
- 플랫폼(OS)에 독립적==> 생성된 class 파일을 어떤 OS에서도 그냥 실행이 가능하다.
- 객체지향 프로그래밍(Object Oriented Programming: OOP )
3. 자바 프로그램 개발 순서
1) 소스작성 ( Hello.java )
- 개발자가 이해할 수 있는 영단어 코드로 구성
2) 컴파일 단계 ( javac.exe 컴파일러 이용 )
Hello.java ----------> Hello.class ( bytecode )
문법: javac Hello.java
3) 실행 단계 ( java.exe 인터프리터 이용 )
Hello.class ----------------> 결과값 출력
문법: java Hello
4. JVM ( Java Virtual Machine)
- 역할: bytecode인 class 실행시킴
- JDK설치하면 JVM이 구축됨
- S/W이지만 H/W 특징을 가짐 ( 다양한 메모리 포함 )
주요 메모리: stack, heap, method area
5. 자바에서 사용 가능한 데이터 종류 ( ***************** )
가. 기본형 데이터 ( 데이터종류, data type )
- Primitive Data Type: PDT
- 종류:
수치형 - 정수형 : byte (1byte)
short (2byte)
int (4byte): 기본
long (8byte)
정수값(리터럴)표현: 10진수, 2진수(0|1), 8진수(0~7),
16진수(0~9,A,B,C,D,E,F) 모두 사용 가능
예> 10 0b값 0값 0x값
만약에 100 정수를 쓰면 기본인 int로 처리가 된다.
long으로 처리하고 싶으면 100L 지정한다.
-실수형 : float (4byte)
double (8byte): 기본
실수값(리터럴)표현: 소수점이용, 지수표현 가능
예> 31.4, 31.4D ===> double 처리
31.4F ==> float 처리
문자형 : char(2byte)
-문자형(리터럴)표현: 반드시 '' 사용
예> 'A', '남'
- escape 문자 ( \t, \n, \\, \', \" )
- 전세계의 모든 문자 표현 가능
논리형 : boolean (1byte)
논리형(리터럴)표현: true, false
나. 참조형 데이터
- Reference Data Type: RDT
- 기본형 8개 제외한 나머지 모두
대표적: 클래스, 인터페이스, 배열
1. 정수에서 long 타입으로 사용할 때는 다음과 같이 정수값L 지정한다.
예> 300L
2. 기본형 8개에 해당되는 클래스 8개를 제공한다.
기본형 참조형(클래스) ==> wrapper 클래스라고 부른다.
----------------------------
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
3. 변수 ( variable )
1) 용도
- 데이터 저장 ( 기본형 데이터 및 참조형 데이터 저장용도 )
- 언제든지 값이 변경될 수 있음.
2)사용방법 3단계
(1) 변수선언
- 데이터가 저장된 영역 확보 작업 ( 메모리에 저장되고 메모리 위치에 해당되는 이름 지정)
- 문법:
데이터타입 변수명;
예> int num; // int 때문에 4byte 영역확보
String name; // String 참조형이기 때문에 4byte 영역확보
(2) 변수초기화
- 생성된 변수에 처음 값을 저장하는 작업
- 문법:
변수명=값;
예> num = 19;
name = "홍길동";
(3) 변수 사용
System.out.println(num); // 19
System.out.println(name); // 홍길동
(4) 변수값 변경
num=29;
System.out.println(num); // 29
4. 기본형 변수 vs 참조형 변수
1) 기본형 변수
- 기본형 데이터를 저장하는 변수
예>
int num; // 실제값이 저장
num = 20;
==> num 변수안에 20이 저장됨.
2) 참조형 변수
- 참조형 데이터를 저장하는 변수
예>
String name; // 주소값이 저장
name ="홍길동";
==> name 변수 안에 "홍길동"이 저장된 주소값이 저장됨.
5. 변수 종류 ( **************************)
- 변수 선언 위치와 용도에 따른 분류
가. 로컬 변수 ( local variable )
- 메서드안에서 선언
- 생성시점: 메서드 호출시 변수생성됨
제거시점: 메서드 호출후 작업이 모두 끝났을 때
- 생성횟수: 메서드 호출할때마다 매번 생성되고
메서드 작업이 끝나면 매번 삭제됨. ( 일시적으로 사용할 목적으로 주로 사용됨 )
- 저장메모리: stack 메모리
- 선언만하고 초기화하지 않으면 자동초기화 안됨.
반드시 사용전에 초기화해야 된다. (******************)
나. 인스턴스 변수 ( instance variable )
- 메서드 밖에서 선언
- 생성시점: 클래스 객체 생성(new 키워드 이용)시 변수생성됨
제거시점: 클래스 객체가 제거될 때 변수가 삭제됨.
==> 개발자가 클래스를 사용하기 위해서 new 이용한다. ( 클래스 영역 확보 )
사용된 클래스 영역을 제거는 개발자가 하지 않고 자바가 자동으로 제거해준다.
제거해주는 프로세스는 GC ( Garbage Collector)가 해준다.
==> C 언어는 영역 확보 및 제거를 개발자가 모두 직접 해야된다.
- 생성횟수: new 할때마다 매번 생성.
- 저장메모리: heap 메모리
- 선언만하고 초기화하지 않으면 자동으로 기본값으로 초기화된다.
기본형:
정수: 0
실수: 0.0
문자: \u0000
논리: false
참조형: null
다. 클래스 변수 ( class variable, static variable)
- 메서드 밖에서 선언 + static 키워드 추가
- 생성시점: 프로그램 실행시 변수 생성됨
제거시점: 프로그램 종료시 변수가 삭제됨.
- 생성횟수: 1 번
- 저장메모리: method area 메모리
- 선언만하고 초기화하지 않으면 자동으로 기본값으로 초기화된다.
기본형:
정수: 0
실수: 0.0
문자: \u0000
논리: false
참조형: null
예시
public class VariableExample {
// 클래스 변수 (static 변수)
// 프로그램 시작 시 생성되며, 프로그램 종료 시 제거됨.
// 모든 객체에서 공유하는 변수로 메모리의 method area에 저장됨.
static int classVar = 10;
// 인스턴스 변수
// 객체가 생성될 때 생성되며, 객체가 제거될 때 함께 삭제됨.
// heap 메모리에 저장되며, 각 객체마다 따로 생성됨.
int instanceVar = 20;
public static void main(String[] args) {
// 로컬 변수
// 메서드가 호출될 때 생성되고, 메서드가 끝나면 삭제됨.
// stack 메모리에 저장되며, 반드시 초기화되어야 함.
int localVar = 30;
// 로컬 변수 출력
System.out.println("로컬 변수(localVar): " + localVar);
// 클래스 변수 출력 (클래스 이름을 통해 접근)
System.out.println("클래스 변수(classVar): " + VariableExample.classVar);
// 인스턴스 변수는 객체 생성 후 접근 가능
VariableExample example = new VariableExample();
System.out.println("인스턴스 변수(instanceVar): " + example.instanceVar);
}
}
6. 변수 특징
1) 변수명이 동일하면 안됨
2) 로컬변수는 사용전에 반드시 초기화
초기화 안하면 컴파일 에러가 발생됨.
3) 변수를 인식하는 범위 ( scope )
==> 블럭(중괄호{})
7. 상수 ( Constant )
- 상수는 값 변경 불가
- final 키워드 이용함.
- 변수와 구별하기 위해서 대문자로 지정 ( 관례 )
예> final int NUM=100;
8. 데이터형 변환
1) 개념
- 한번 선언된 데이터형은 언제든지 변경이 가능하다.
- 큰박스에 작은 박스는 저장이 가능하고
역은 저장불가
2) 형변환 종류
(1) 자동 형변환( 묵시적, promotion, up-casting )
가. byte(1byte) > short(2byte) > int > long > float > double
나. char(문자형) > int(정수형 )
예> int n = 'A'; //가능
다. 정수형중에서 int보다 작은 타입의 연산결과는 기본값인 int로 반환된다.
라. 작은 데이터형과 큰 데이터의 연산결과는 큰 데이터형으로 반환된다.
예> 정수형하고 실수형하고 연산결과는 실수형으로 반환된다.
마. 문자열+비문자열(문자열)=====> 문자열로 반환
(2) 강제형변환 ( 명시적, type casting, down-casting, 일반적으로 의미하는 형변환 )
- 작은타입 = 큰타입; //에러
- 작은타입 = (작은타입)큰타입; // 형변환 연산자: (타입)
3) 현재는 기본형만 형변환 실습을 했음.
하지만 참조형(클래스)도 형변환이 가능하다. (*************************)
결론은 자바의 모든 데이터(기본형,참조형)는 형변환이 가능하다.
9. 콘솔(console)에 값을 출력하는 방법
- 출력 대상은 다양하다.
모니터에 출력하는 경우를 표준출력(standard output) 이라고 한다.
반대 개념인 표준입력(standard input)은 키보에서 입력받는것을 의미한다.
1) System.out.println(값);
- 새로운 줄(new line)에 출력한다.
- 반드시 하나의 값만 지정한다.
2) System.out.print(값);
- 새로운 줄 없이 현재줄에 출력한다.
- 반드시 하나의 값만 지정한다.
3) System.out.printf(" ", ...); // ... 는 가변인자라고 하고 갯수는 정해져 있지 않음
예> System.out.printf( " ", 값);
System.out.printf( " ", 값1, 값2);
System.out.printf( " ", 값1,값2,값3,값4,값5);
String name ="홍길동";
int age = 20;
System.out.printf( "이름:%s, 나이:%d", name, age);
참고할만한 사이트 소개
# Java 타입 형변환 원리 & 방법
https://inpa.tistory.com/entry/JAVA-%E2%98%95-%ED%83%80%EC%9E%85-%ED%98%95%EB%B3%80%ED%99%98-%EC%A2%85%EB%A5%98-%EB%B0%A9%EB%B2%95-%F0%9F%92%AF-%EC%B4%9D%EC%A0%95%EB%A6%AC
# final 키워드
https://www.devkuma.com/docs/java/final/
https://sudo-minz.tistory.com/135
# printf(), 이스케이프 문자, 형식 지정자
https://damy.tistory.com/3
# 그림으로 보는 자바 코드의 메모리 영역 (스택 & 힙)
https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EA%B7%B8%EB%A6%BC%EC%9C%BC%EB%A1%9C-%EB%B3%B4%EB%8A%94-%EC%9E%90%EB%B0%94-%EC%BD%94%EB%93%9C%EC%9D%98-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%98%81%EC%97%AD%EC%8A%A4%ED%83%9D-%ED%9E%99
'JAVAs' 카테고리의 다른 글
[이클립스] 자바 입문(자바 기본 세팅 jdk 11, java 개발환경, eclipse 설치 후 설정, 단축키 ,자바 식별자, 데이터 종류) (0) | 2024.03.19 |
---|