독학/[책] 자바

[혼공학습단 10기☕️] 자바 week1

최연재 2023. 7. 9. 15:59

혼공학습단을 꼭 해보고 싶었는데 감사히도 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주차였습니다!