학습목표
- 자바 기초문법 이해
- 문자열 메서드사용법
- 변수와 자료형에대한 이해와 자료형 변환
- 산술, 비교, 논리 연산자
배운 내용
Java
- 객체지향 프로그래밍(Object Oriented Programming, OOP)언어(~1996)
특징
1. 운영체제에 독립적
- JRE(Java Runtime Environment: JVM(자바 가상머신) + 표준 클래스 라이브러리)가 설치되어 있는 모든 운영체제에서 실행이 가능
2. 객체 지향 언어(Object Oriented Programming, OOP)
- 객체는 프로그램이 동작하는 부품으로, 모든 기능은 객체로 만들어 사용해야 한다
- 여러 부품(객체)들을 만들고 조립하여 하나의 프로그램을 실행
- 객체 지향적으로 설계된 프로그램은 유지보수가 쉽고 확장성이 높습니다.
3. 함수형 프로그래밍 지원
- 람다식과 스트림을 사용해 컬렉션의 요소를 필터링, 매핑, 집계 처리하기 쉬워지고 코드가 간결해진다.
4. 자동 메모리 관리(Garbage Collection)
- 가비지 컬렉터(Garbage Collector)를 실행시켜 자동으로 사용하지 않는 메모리를 수거
JVM(Java Virtual Machine)
- 자바는 컴파일러(Compiler)를 통해 기계어(Machine Language)로 변환되는 언어
- 자바 언어를 JVM(Java Virtual Machine)이 이해할 수 있는 코드(바이트코드, Bytecode)로 변환
- JVM은 바이트코드를 운영체제에 맞는 기계어로 변환
- 프로그램이 제대로 실행되기 위해서는 컴퓨터의 다양한 자원(CPU, RAM, 각종 입출력 장치 등)을 활용해야 하는데, 이런 자원을 OS가 관리한다.
- OS별 규칙을 따르는 별도의 절차가 필요한데, JVM으로 문제 해결
JDK(Java Development Kit)
- JRE(Java Runtime Environment) : JVM + 표준 클래스 라이브러리
- JDK(Java Development Kit) : JRE + 개발에 필요한 도구
메서드
- 어떤 기능을 수행하기 위한 코드들을 묶어놓은 것’이며, 여기에서 ‘어떤 기능을 수행한다’는 것은 데이터를 입력받아 입력 받은 데이터에 일련의 처리를 가한 후, 그 결과값을 반환하는 것을 의미
반환_타입 메서드_이름(매개변수_타입 매개변수_이름) {
메서드_바디
}
- 함수 : 특정 기능을 수행하는 코드들을 묶은 것
메서드 : 클래스 내에 포함되어 있는 함수
- 매개변수 : 메서드 외부에서 메서드 내부로 전달한 값을 할당받아 저장함으로써, 메서드 내부에서 사용할 수 있게 해준다.
메서드 호출
- 메서드는 정의하는 것만으로는 실행되지 않는ㄷ.
- 메서드를 실행시키려면 호출을 해주어야 합니다.
- 자바에서
main
메서드는 진입점 함수이며, 자바로 어떤 소스 코드를 작성할 때 반드시 main
메서드가 있어야 하고, main
메서드로부터 코드의 흐름이 시작
컴퓨터가 메모리에 어떤 값을 저장하는 과정
- 기억하고자 하는 값이 얼만큼의 메모리 공간을 필요로 하는지 파악합니다.
- 기억하고자 하는 값이 차지하는 용량만큼의 메모리 공간을 확보합니다.
- 확보한 메모리 공간에 기억하고자 하는 값을 저장합니다.
- 값을 저장한 공간에 이름을 붙입니다.
- 메모리는 1byte 크기의 데이터를 저장할 수 있는 메모리 셀들이 모여서 만들어지며, 각 메모리셀에는 고유 번호가 오름차순으로 매겨져 있습니다. 이처럼 메모리셀에 붙여져 있는 고유 번호를 메모리 주소라고 합니다.
변수
- 값이 변할 수 있는 데이터를 임시적으로 저장하기 위한 수단
변수 선언
- 데이터 타입과 함께 변수 이름을 작성
- 변수를 선언하면 컴퓨터는 값을 저장할 메모리 공간을 확보하고, 확보한 메모리 공간에 사용자가 입력한 변수 이름으로 이름을 붙입니다.
값 할당
int num;
num = 1;
num = 2;
int num = 1;
상수(Constant)
- 변하지 말아야 할 데이터를 임시적으로 저장하기 위한 수단
- 재할당 금지
final
이라는 키워드를 사용해 선언
- 관례적으로 대문자에 언더바(_)를 넣어 구분(스네이크기법)
상수를 사용하는 이유
- 프로그램이 실행되면서 값이 변하면 안되는 경우
- 코드 가독성을 높이고 싶은 경우
- 코드 유지관리를 손쉽게 하고자 하는 경우
- 상수를 사용하면 상수에 할당할 값만 바꿔주면 된다.
타입
- 값이 차지하는 메모리 공간의 크기와, 값이 저장되는 방식 결정
기본 타입(primitive type)
- 값을 저장할 때, 데이터의 실제 값이 저장
- 정수, 실수 ,문자, 논리
참조 타입(reference type)
- 값을 저장할 때, 데이터가 저장된 곳을 나타내는 주소값이 저장
- 기본형 외 나머지 타입
리터럴(Literal)
- 문자가 가리키는 값 그 자체
- ‘값’이라는 표현 대신에 리터럴이라는 표현
정수 타입
정수형의 오버플로우와 언더플로우
- byte(1byte)
- short(2byte)
- int(4byte)
- long(8byte)
long
타입의 변수에 정수형 리터럴을 할당할 때, 리터럴 뒤에 접미사 L
을 붙여주어야 합니다
오버플로우
- 자료형이 표현할 수 있는 범위 중 최대값 이상의 값을 표현한 경우 발생
- 최대값을 넘어가면 해당 데이터 타입의 최소값으로 값이 순환
- byte형일때, 최대값인 127을 값으로 가지는경우, 1을 더하면 128이되는게 아니라, 최소값인 -128이된다.
언더플로우
- 자료형이 표현할 수 있는 범위 중 최소값 이하의 값을 표현한 경우 발생
- 최소값을 넘어가면 해당 데이터 타입의 최대값으로 값이 순환
- byte형일때, 최솟값인 -128을 값으로 가지는경우, 1을 빼면 -129가 아니라 최대값인 127이된다.
실수 타입
- float(4byte)
- double(8byte)
float
타입의 변수에 실수형 리터럴을 할당할 때, 리터럴 뒤에 접미사 f
를 붙여주어야 합니다
double
형은 float
형보다
- 더 큰 실수를 저장할 수 있습니다.
- 더 정확하게 저장할 수 있습니다.
논리 타입(boolean)
문자 타입(character)
- char(2byte)
- 하나의 문자형 리터럴 저장
- 반드시
‘ ’
사용
- 컴퓨터는 0과 1밖에 저장 못한다. 그러면 어떻게 문자타입 변수를 저장할까?
-
자바는 유니코드로 문자를 저장
-
char letter1 = ‘a’;
와 같이 문자형 리터럴을 문자형 변수에 할당하면 letter1
에는 영문자 a의 유니코드 숫자값이 저장
-
숫자를 문자형 변수에 할당하면, 해당 숫자가 그대로 저장되지만, 나중에 변수를 참조할 때, 즉 변수의 값을 읽어올 때 해당 변수가 저장하고 있는 숫자값을 유니코드로 인식하여 해당 숫자와 일치하는 코드를 가진 문자로 변환
char letter = 65;
System.out.print(letter); // 출력 결과 : A
타입 변환
타입 변환
자동 타입 변환
- 바이트 크기가 작은 타입에서 큰 타입으로 변환할 때 (예 :
byte
→ int
)
- 덜 정밀한 타입에서 더 정밀한 타입으로 변환할 때 (예 : 정수 → 실수)
byte(1) -> short(2)/char(2) -> int(4) -> long(8) -> float(4) -> double(8)
수동 타입 변환(캐스팅)
문자열(String)
- 큰따옴표
""
로 감싸진 문자열
- String 타입 변수 선언, 문자열 리터럴 할당
String name1 = "Hello World";
String name2 = new String("Hello world");
- 클래스는 일종의 거푸집이며, 그 거푸집을 통해서 찍어낸 것이 인스턴스다. 그리고, 클래스로 인스턴스를 찍어내고자 할 때
new
연산자를 사용
- String 타입의 변수는
String 변수명;
으로 선언할 수 있다.
- 선언한 변수에 문자열을 할당하는 방법은 두 가지가 있다.
- 문자열 리터럴을 할당하는 방법 :
변수 = “문자열”;
- String 클래스의 인스턴스를 생성하여 할당하는 방법 :
변수 = new String(”문자열”);
- 동일한 문자열 리터럴을 두 변수에 할당하는 경우, 두 변수는 같은 문자열의 참조값을 공유 → 같은 문자열의 주소값 저장
- String 클래스의 인스턴스를 생성하게 되면 문자열의 내용이 같을지라도, 별개의 인스턴스가 따로 생성 → 서로 다른 인스턴스의 주소값 저장
연산자 우선순위
우선순위 | 연산자 | 내용 |
---|
1 | (),[] | 괄호 / 대괄호 |
2 | !, ~, ++, -- | 부정/ 증감 연산자 |
3 | *, /, % | 곱셈 / 나눗셈 연산자 |
4 | <, <=, >, >= | 대소 비교 연산자 |
5 | && | AND 연산자 |
6 | | |
7 | ? : | 조건 연산자 |
8 | =, +=, -=, /=, %= | 대입/할당 연산자 |