1. Java 언어의 특징을 설명할 수 있다.
2. 변수와 타입, 문자열, 연산자, 그리고 콘솔 입출력에 대해 이해할 수 있다.
3. 페어와 관련 연습문제들을 풀어보며 적용시킬 수 있다.
- 자바 (Java)
① 운영체제에 독립적 : JRE를 통해 모든 운영체제에서 실행 가능
② 객체 지향 언어 (Object Oriented Programming, OOP)
③ 함수형 프로그래밍 지원 (람다식, 스트림)
④ 자동 메모리 관리 (Garbage Collection)
✔︎ JRE (Java Runtime Environment) : JVM + 표준 클래스 라이브러리
✔︎ JVM (Java Virtual Machine) : 서로 다른 운영체제에서 자바를 실행하기 위한 프로그램
A main(B C) { // 반환_타입 메서드_이름(매개변수_타입 매개변수_이름) {
D // 메서드_바디
} // }
✔︎ A
(반환 타입) : 메서드가 반환할 반환값의 종류 및 유형을 의미, 메서드를 정의할 때 메서드 이름 앞에 반환 타입 명시
✔︎ B
(매개변수의 타입) : 어떤 유형의 값을 메서드가 입력받을 것인지를 명시하는 것을 의미
✔︎ C
(매개변수의 이름) : 입력받은 값에 어떤 이름을 붙여 사용할 것인지를 명시하는 것을 의미
✔︎ D
(메서드 바디) : 구체적으로 메서드가 어떤 기능을 수행할지에 대한 코드를 작성하는 부분, return
을 사용하여 반환
✔︎ 메서드 이름에 호출 연산자 ( )
를 붙여 호출
public static void main(String[] args) {
}
✔︎ void
: 반환 타입
✔︎ main
: 메서드의 이름
✔︎ String[]
: 매개변수의 타입
✔︎ args
: 매개변수의 이름
✔︎ { }
: 안에 코드 작성
※ 슈도코드(의사코드)를 작성해야하는 이유? : 작은 부분부터 계획과 순서에 따라 작성해야 큰 규모 코드를 작성할 수 있음!🔥
- 변수와 타입
✔︎ 일반적으로 카멜 케이스(camelCase) 사용 : 두 번째 단어부터 대문자로 시작
✔︎ 영문자, 숫자, _
, $
사용 ⭕️, 대소문자 구별 ⭕️
✔︎ 숫자로 시작하는 변수명 사용 ❌
✔︎ 이미 사용중인 예약어 (reserved word) 사용 ❌
ex) int byte
(x), ìnt class
(x)
✔︎ 재할당이 금지된 변수
✔︎ final
키워드 사용해 선언, 관례적으로 대문자에 언더바(_
)를 넣어 구분
ex) final double CALCULATOR_PI = 3.14;
✔︎ 프로그램이 실행되면서 값이 변하면 안되는 경우
✔︎ 코드 가독성을 높이고 싶은 경우
✔︎ 코드 유지관리를 손쉽게 하고자 하는 경우
✔︎ 정의 : 어떤 값의 유형과 종류
✔︎ 타입에 따라 값이 차지하는 메모리 공간의 크기와 값이 저장되는 방식이 결정
✔︎ 기본 타입 (primitive type)
✓ 값을 저장할 때, 데이터의 실제 값이 저장
✓ 정수 타입(byte, short, int, long), 실수 타입(float, double), 문자 타입(char), 논리 타입(boolean)
✔︎ 참조 타입 (reference type)
✓ 값을 저장할 때, 데이터가 저장된 곳을 나타내는 주소값이 저장
✓ 객체의 주소를 저장, 8개의 기본형을 제외한 나머지 타입
✔︎ float 타입 변수 + 실수형 리터럴 할당 → 리터럴 뒤 접미사에 f
ex) float weight
= 74.5f;
✔︎ long 타입 변수 + 정수형 리터럴 할당 → 리터럴 뒤 접미사 L
ex) final long LIGHT_YEAR = 9460730472580L;
✔︎ 정수형의 오버플로우와 언더플로우
✓ 오버플로우
① 자료형이 표현할 수 있는 범위 중 최대값 이상의 값을 표현한 경우 발생
② 최대값을 넘어가면 해당 데이터 타입의 최소값으로 순환
✓ 언더플로우
① 자료형이 표현할 수 있는 범위 중 최소값 이하의 값을 표현한 경우 발생
② 최소값을 넘어가면 해당 데이터 타입의 최대값으로 순환
✔︎ 실수형의 오버플로우와 언더플로우
✓ 오버플로우 : 값이 음의 최소 범위 or 양의 최대 범위를 넘어갔을 때 발생, 값은 무한대
✓ 언더플로우 : 값이 음의 최대 범위 or 양의 최소 범위를 넘어갔을 때 발생, 값은 0
✔︎ 자동 타입 변환
① 바이트 크기가 작은 타입 → 큰 타입으로 변환할 때
② 덜 정밀한 타입 → 더 정밀한 타입으로 변환할 때
✔︎ 수동 타입 변환
✓ 큰 타입 → 작은 타입으로는 자동 타입 변환 ❌
✓ 캐스팅(casting) : 캐스팅 연산자()
를 사용하여, 괄호 안에 변환하고자 하는 타입을 적어서 수동으로 타입 변환
ex) byte byteValue = (byte)intValue;
- 문자열 (String)
✔︎ 선언 : String 변수명;
✔︎ 선언한 변수에 문자열을 할당하는 방법
① 문자열 리터럴을 할당 : 변수 = "문자열";
② String 클래스의 인스턴스를 생성하여 할당 : 변수 = new String("문자열");
✔︎ charAt() 메서드 : 해당 문자열의 특정 인덱스에 해당하는 문자를 반환, 해당 문자열의 길이보다 큰 인덱스 or 음수 → 오류 발생 💥
✔︎ compareTo()
메서드 : 해당 문자열과 사전 편찬 순으로 비교
※ compareToIgnoreCase()
메서드 : 대소문자 구분 ❌
✔︎ concat()
메서드 : 두 문자열 연결
✔︎ indexOf()
메서드 : 특정 문자나 문자열이 처음 등장하는 위치의 인덱스를 반환
✔︎ trim()
메서드 : 문자열의 띄어쓰기와 탭 문자를 제거
✔︎ toLowerCase()
, toUpperCase()
: 문자열의 대소문자를 변경
- 연산자 (Operator)
✔︎ 전위형 증감연산자 : 증감 연산 수행 후, 그 결과값을 적용 ex)++num1
✔︎ 후위형 증감연산자 : 기존 값 적용 후, 증감 연산 수행 ex)num1++
ex) num = num1 +2;
= num1 += 2;
- 콘솔 입출력 (I/O)
① 출력 : System.out.print()
② 출력 후 줄바꿈 : System.out.println()
③ 형식대로 출력 : System.out.printf()
※ 지시자와 출력포맷
import java.util.Scanner; // Scanner클래스 가져옴
Scanner scanner = new Scanner(System.in); // Scanner클래스의 인스턴스 생성
String inputValue = scanner.nextLine(); // 입력한 내용이 inputValue에 저장
System.out.println(inputValue); // 입력한 문자열 출력
① import java.util.Scanner;
: Scanner를 소스코드로 불러오기
② Scanner scanner = new Scanner(System.in);
: new
연산자를 통해 인스턴스를 생성, 변수 scanner
에 할당
③ String inputValue = scanner.nextLine();
: scanner.nextLine()
로 문자열을 입력받아, ìnputValue
변수에 할당되어 저장
※ 문자열 : nextLine()
, 정수형 : nextInt()
, 실수형 : nextFloat()
- 기타) 연습문제 풀이 간 내용
public int add (int num1, int num2) {
}
✔︎ 메서드 시그니처 : public int ~ (int num1, int num2)
✔︎ 메서드 이름 : add
, 대표할 수 있는 이름으로 설정
✔︎ 메서드 바디 : { }
✔︎ 형식대로 나오게 해주는 것은 같음
✔︎ String.format은 문자를 생성할 때 사용
✔︎ printf는 콘솔 문자 출력할 때 사용
ex) str1.equals(str2)
: str1
과 str2
값을 비교
ex) str.length()
: str
문자열 길이를 알아냄
✔︎ Math.abs()
: 절대값을 반환하는 메서드
✔︎ Math.floor()
: 소수점 버림
✔︎ Math.ceil()
: 소수점 올림
✔︎ Math.round()
: 소수점 반올림
✔︎ Math.max()
: 두 값을 비교하여 큰 값 반환
✔︎ Math.min()
: 두 값을 비교하여 작은 값 반환
☞ 드디어 자바에 첫 발을 디뎠다. 자바를 배울 때 국룰처럼 가장 처음배우는 변수와 타입, 문자열과 같은 내용들을 공부하였는데 시작부터 영 이해가 쉽진 않다. 그러나 처음 배우는 내용이니만큼 자바 공부의 기본 베이스라 생각하기에 이해가 될 때까지 복습, 또 복습이다.. 😹
오늘은 자바 첫 페어프로그래밍이 있었다. 나름 공부했다 생각하고 페어와 만나 진행하는 문제풀이였는데 처음엔 잘 가는가 싶더니 어느 순간부터 버벅거리고 막히기 시작했다 🥲 그럴 때 일수록 천사같은 페어분께서는 답답하다고 바로 정답을 알려주지 않고, 힌트를 조금씩 주며 내가 생각해내가며 스스로 풀어갈 수 있게 진정한 '네비게이터'역할을 해주셨다..! (감동🥹) 그 덕분에 조금이라도 더 사고하며 답을 끼워맞추는 게 아닌, 이해하고 넘어갈 수 있게 된 것 같다 :) 더군다나 개발 직종에 종사하시다 오신 페어분께서 문제풀이가 끝나고 시간이 남을 때 더 궁금한 질문을 받아주셨고, 오늘도 정말 큰 도움이 됐던 페어 프로그래밍이었다! 페어분께서도 나에게 알려주시며 확실히 자신의 것으로 만들 수 있는 기회가 되었으면 하는 바람으로 조금이라도 도움이 되었으면 한다 🙏
항상 다짐하는 거지만 페어에게 폐를 끼치지 않기 위해서라도 수업 이외의 시간을 활용하여 나를 좀 더 갈고 닦아야 한다. 언젠간 나도 이 때까지 만난 페어님들처럼 친절하고 능력있는 페어가 되고 싶다 ☺️ 내일도 화이팅 해보자!!!🔥🔥🔥
・ 조건문
・ 반복문