혼공학습단을 꼭 해보고 싶었는데 감사히도 10기로 뽑아주셨어요. 성실하게 매주 참여해서 끝까지 완주하겠습니다.
내용 정리
Chapter 1 자바 시작하기
1. 프레임 언어와 자바
📌 자바의 특징
- 모든 운영체제에서 실행 가능
- 객체 지향 프로그래밍
- 메모리 자동 정리
- 무료 라이브러리 풍부
📌 자바 개발 도구(Java Development Kit)
- 자바로 프로그램을 개발하기 위해 먼저 설치해야 한다.
- 오라클에서 다운받을 수 있다.
- JDK SE 버전 표시 : JDK SE 주 버전. 개선 버전. 업데이트 버전 (장기 지원서비스 버전)
2. 이클립스 개발 환경 구축
📌 JAVA_HOME 환경 변수 등록
- JAVA_HOME : JDK가 설치된 폴더
- 제어판 > 시스템및 보안 > 시스템 > 고급 시스템 설정 > 고급> 환경 변수 버튼 클릭해서 만들기
📌 Path 환경 변수 설정
- javac, java 명령어는 cmd의명령 라인에서 개발자가 직접 컴파일하고 실행할 때 사용되는데 bin 폴더 내에 있어서 다른 폴더에서 사용할 수 없다.
- 위와 같은 문제를 해결하기 위해 환경 변수 Path에 bin 폴더를 등록해야 한다.
📌 이클립스
- 무료로 사용할 수 있는 IDE
3. 자바 프로그램 개발 과정
📌 바이트 코드 파일과 자바 가상 기계
- 자바프로그램은 바이트 코드 파일(.class)로 구성된다.
- 바이트 코드 파일을 완전한 기계어로 번역하기 위해서 JVM이 필요하다.
📌 프로젝트 생성부터 실행
- 프로젝트 생성
- 패키지 생성
- 클래스 생성
- 코드 작성
📌 명령 라인에서 컴파일하고 실행
- cmd 실행 후 chap1 폴더로 이동
- javac 명령어로 컴파일 : javac -d bin src/sec03/exam1/*.java
- tree /f /a 명령어로 바이트 코드 파일이 생성되었음을 확인
- javac -d bin src/module-info.java src/sec03/exam01/*.java
- tree /f /a 명령어로 module-info.class와 바이트 코드 파일이 생성되었음을 확인
- 실행 : javac -[바이트 코드 파일 저장 위치] -m 모듈/패키지이름...클래스이름
Chapter 2 변수와 타입
1. 변수
📌 변수
- 값을 저장할 수 있는 메모리의 특정 변수에 붙이는 이름
📌 변수 선언
- 형태 : 타입 변수명;
- 같은 타입의 변수는 ,를 이용해 여러 개를 한꺼번에 선언 가능
📌 변수명
- 첫 번째는 문자이거나 '$', '_'이어야 하고, 숫자는 불가능
- 영어 대소문자를 구별
- 첫 문자는 영어 소문자로 시작, 카멜 케이스
- 길이의 제한은 없다.
- 예약어 사용 불가
📌 값 저장
- 대입 연산자(=) 사용
- 변수에 값이 저장되지 않으면 변수가 생성되지 않은 것.
2. 기본 타입
📌 정수 타입
- byte : 1byte
- short : 2byte
- char : 2byte, 음수 값을 가질 수 없음
- int : 4byte
- long : 8byte, 기본적으로 컴파일러는 정수 리터럴을 int 타입으로 간주하므로 리터럴 뒤에 L을 붙여야 함
📌 문자 타입
- char : ' '로 감싸서 표시
📌 문자열 타입
- String : " "로 감싸서 표시, 기본 타입이 아닌 클래스 타입
📌 실수 타입
- float : 4byte, 기본적으로 실수 리터럴을 double 타입으로 해석하므로 리터럴 뒤에 f나 F를 붙여야 함.
- double : 8byte
📌 논리타입
- true
- false
3. 타입 변환
📌 자동 타입 변환
- 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 저장될 때 발생
- byte 타입은 음수를 포함하므로 byte 타입은 char 타입으로 자동 변환될 수 없음.
- 정수 타입 변수가 산술 연산식에서 피연산자로 사용되면 int 타입보다 작은 타입의 변수는 int 타입으로 변환됨. (항상 int 타입으로 변환되는 것이 아닌, 두 피연산자 중 허용 범위가 더 큰 타입으로 변환됨.)
- 실수 타입 변수가 피연산자로 사용될 경우 피연산자 하나라도 double 타입이라면 피연산자 모두 double 타입으로 변환됨.
📌 강제 타입 변환
- 허용 범위가 큰 타입을 작은 허용 범위 타입으로 강제로 나눠 저장
- 캐스팅 연산자 괄호 ()를 사용함.
- 문자열을 기본 타입으로 강제 변환할 때는 메소드 사용
📌 문자열 자동 타입 변환
- 문자열과 + 연산 시 다른 피연산자도 문자열로 변환되어 문자열 결합 발생
4. 변수와 시스템 입출력
📌 모니터로 변수 값 출력
System.out.println()
- println() : 출력 후 행 바꾸기
- print() : 출력만 하기
- printf() : 첫 번째 열의 문자열 형식대로 내용 출력
📌 키보드에서 입력한 내용을 변수에 저장
System.in.read() : 키코드를 하나씩 읽어서 한글을 읽을 수 없고, 문자열을 읽지 못함 -> Scanner 클래스 사용
Chapter 3 연산자
1. 연산자와 연산식
연산의 방향과 우선순위
- 단항, 이항, 삼항 연산자 순 우선순위
- 산술, 비교, 논리, 대입 연산자 순 우선순위
- 단항,부호, 대입 연산자의 연산방향은 <-, 나머지 연산자의 연산방향은 ->.
2. 연산자의 종류
📌 단항 연산자
: +(부호 유지), -(부호 변경), ++, --, !
📌 이항 연산자
: 산술 연산자, 비교 연산자,문자열 결합 연산자, 논리 연산자, 대입 연산자 등
📌 삼항 연산자
: 조건식 ? 값이나 연산자 : 값이나 연산자
Chapter 4 조건문과 반복문
1. 조건문
📌 if 문 : 조건식이 true일 경우에 블록 내부의 실행문 실행
📌 switch 문 : 변수가 어떤 값을 갖는지에 따라 실행문이 선택되어 실행
2. 반복문
📌 for문 : 반복횟수를 알 때 주로 사용
📌 while문 : 조건에 따른 반복
📌 do-while문 : do 중괄호 내부를 먼저 실행한 후 조건식 검사
Chapter 5 참조 타입
1. 참조 타입과 참조 변수
📌 참조 타입
- 기본 타입 : 실제 값을 변수 안에 저장
- 참조 타입 : 메모리의 번지를 변수 안에 저장
📌 메모리 사용 영역
- 메소드 영역 : JVM이 시작될 때 생성되고 모든 스레드가 공유하는 영역
- 힙 영역 : 객체와 배열이 생성도는 영역
- JTM 스택 영역 : 메소드를 호출할 때마다 프레임을 PUSH하고 메소드가 종료되면해당 프레임을 POP함
📌 Null과 NullPointerException
- null로 초기화된 참조 변수는 스택 영역에 생성됨.
- null인 참조변수를 통해 있지도 않은 객체의 필드나 메소드를 사용하면 NullPointerException 발생
2. 배열
📌 배열 선언 방법
- 타입[] 변수;
- 타입 변수[];
📌 배열 생성
- 타입[] 변수 = {...};
- 배열 변수를 미리 선언한 후에는 다른 실행문에서 중괄호를 사용한 배열 생성 불가
- 배열 변수를 미리 선언한 후 값 목록들이 나중에 결정되는 상황에서는 new 연산자로 값 목록을 지정하면 된다.
- 변수 = new 타입[] {};
- 값의 목록을 가지고 있지 않지만 향후 값들을 저장할 배열을 미리 만들고 싶을 때 new 연산자 사용 가능
- 타입[] 변수 = new 타입[길이];
📌 다차원 배열 : 타입 [][] = new 타입[행의 개수][열의 개수]
📌배열 복사 : System.arraycopy() 메소드 사용, for문 이용
📌 향상된 for문 : for (타입 변수 : 배열) {}
3. 열거 타입
📌 열거 타입 : 열거 상수 중에서 하나의 상수를 저장하는 타입
📌 열거 타입 선언
- 먼저 열거 타입의 이름을 정하고 해당 이름으로 소스 파일을 생성한다.
- 열거타입의이름은 첫 글자만 대문자로 한다. (관례)
📌 열거 상수 : 열거 타입 선언 때 주어진 상수로, 타입.상수 형태로사용한다.
📌 열거 타입 변수 : 열거 타입으로 선언된 변수로, 열거 상수 중 하나가 대입된다. (null 값도 가능)
미션 인증
기본 미션 : JDK 설치 화면 인증하기
선택 미션 : 학습 스케쥴 직접 짜고 공유
백준 문제를 단계별로 복습 차원에서 풀어보려고 합니다. 자바가 처음이라서 살짝 여유롭게 짰고 변동가능성 있습니다.
자바는 정말 처음이라서 많이 신기했습니다. 파이썬, C, C++을 공부해본적이 있었는데 제일 복잡하고 어려운 것 같습니다. 그래도 연산자나 변수 관련해서는 c와 다른 부분이 크게 없어서 금방 학습할 수 있었습니다. 더 열심히 공부해야겠다고 생각한 1주차였습니다!
'독학 > [책] 자바' 카테고리의 다른 글
[혼공학습단 10기☕️] 자바 week6 (0) | 2023.08.15 |
---|---|
[혼공학습단 10기☕️] 자바 week5 (0) | 2023.08.08 |
[혼공학습단 10기☕️] 자바 week4 (0) | 2023.07.29 |
[혼공학습단 10기☕️] 자바 week3 (0) | 2023.07.19 |
[혼공학습단 10기☕️] 자바 week2 (0) | 2023.07.16 |