[혼자 공부하는 자바] Chapter 01~05

혜원·2023년 7월 9일
1
post-thumbnail

기본 미션: JDK 설치 화면 인증하기


01-1_프로그래밍 언어와 자바

자바의 특징

  • 모든 운영체제에서 실행 가능
  • 객체 지향 프로그래밍
  • 메모리 자동 정리
  • 무료 라이브러리 풍부

01-2_이클립스 개발 환경 구축

  • 이클립스 : 무료로 사용할 수 있는 오픈 소스 통합 개발 환경
  • 워크스페이스 : 이클립스 실행과 관련된 메타 데이터와 프로젝트 폴더가 저장되는 폴더
  • : 이클립스 내부에서 사용되는 작은 창
  • 퍼스펙티브 : 프로젝트를 개발할 때 유용하게 사용할 수 있는 뷰들을 미리 묶어 이름을 붙여 놓은 것

01-3_자바 프로그램 개발 과정

  • 바이트 코드 파일 : 자바 소스 파일을 javac로 컴파일한 파일
  • JVM : 바이트 코드 파일을 운영체제를 위한 완전한 기계어로 번역하고 실행하는 역할을 함 , java 명령어에 의해 구동됨
  • 클래스 선언 : 자바 소스 파일은 클래스 선언부와 클래스 블록으로 구성됨. 이렇게 작성하는 것을 클래스 선언이라고 함
  • 주석 : 프로그램 실행과는 상관없이 코드에 설명을 붙인 것
  • 실행문 : 변수 선언, 값 저장, 메소드 호출에 해당하는 코드

02-1_변수

변수 선언

값 저장

변수에 값을 저장할 때에는 대입연산자(=) 사용
수학에서 등호(=)는 '같다'의 의미지만, 자바에서는 오른쪽의 값을 왼쪽의 변수에 저장한다는 의미를 가짐

변수 사용

변수는 출력문이나 연산식 내부에서 저장도니 값을 출력하거나 연산할 때 사용

변수 사용 범위

변수는 자신이 선언된 위치로부터 자신이 속한 블록 내부에서만 사용 가능


02-2_기본 타입

기본타입은 정수타입(byte, short, char, int, long), 실수타입(float, double), 논리타입(boolean)으로 나뉜다.

정수 타입

자바의 정수타입은 총 5개로 메모리 사용 크기와 저장되는 값의 범위가 서로 다름

char 타입

문자 리터럴 : 하나의 문자를 작은 따옴표(')로 감싼 것
문자 리터럴은 유니코드로 변환되어 저장
자바는 이러한 유니코드를 저장할 수 있도록 2byte 크기인 char 타입을 제공

String 타입

Sring으로 감싼 문자열을 저장할 수 있는 타입

실수 타입

실수를 저장할 수 있는 타입으로 float과 double이 있음

논리 타입

true와 false를 저장할 수 있는 타입


02-3_타입 변환

  • 자동 타입 변환 : 자동으로 타입이 변환되는 것.
    값의 허용 범위가 작은 타입이 허용 번위가 큰 타입으로 저장될 때 발생
  • 강제 타입 변환 : 강제로 타입을 변환하는 것.
    값의 허용 범위가 큰 타입을 허용 범위가 작은 타입으로 쪼개어서 저장
  • 문자열 결합 연산 : 문자열과 +연산을 하면 다른 피연산자도 문자열로 변환되어 문자열 결합이 일어남
  • Integer.parsenlnt() : 문자열을 정수 int 타입으로 변환
  • Double.parseDouble() : 문자열을 실수 double 타입으로 변환

02-4_변수와 시스템 입출력

  • System.out.println() : 괄호에 주어진 매개값을 모니터로 출력하고 개행
  • System.out.print() : 괄호에 주어진 매개값을 모니터로 출력만 하고 개행을 하지 않음
  • System.out.printf() : 괄호에 주어진 형식대로 출력
  • System.in.read() : 키보드에서 입력된 키코드를 읽음
  • Scanner : 키보드로부터 입력된 내용을 통 문자열로 읽음

03-1_연산자와 연산식

자바에서 제공하는 연산자

연산자 종류연산자피연산자 수산출값기능
산술+, -, *, /, %이항숫자사칙연산 및 나머지 계산
부호+, -단항숫자음수와 양수의 부호
문자열+이항문자열두 문자열을 연결
대입=, +=, -=, *=, /=, %=이항다양우변의 값을 좌변의 변수에 대입
증감++, --단항숫자1만큼 증가/감소
비교==, !=, >, <, >=, <=, instanceof이항boolean값의 비교
논리!, &, &&단항, 이항boolean논리 부정, 논리곱, 논리합
조건(조건식) ? A : B삼항다양조건식에 따라 A 또는 B 중 하나를 선택

연산자 방향과 우선순위

  1. 단항, 이항, 삼항 연산자 순으로 우선순위를 가짐
  2. 산술, 비교, 논리, 대입 연산자 순으로 우선순위를 가짐
  3. 단항, 부호, 대입 연산자를 제외한 모든 연산의 방향은 왼쪽에서 오른쪽
  4. 복잡한 연산식에는 괄호() 를 사용해서 우선순위를 정함

03-2_연산자의 종류

부호 연산자

양수 및 음수를 표시하는 +,-

연산식설명
"+" + "피연산자"피연산자의 부호 유지
"-" + "피연산자"피연산자의 부호 변경

증감 연산자

변수의 값을 1 증가시키거나 1 감소시키는 연산자

연산식설명
"++" + "피연산자"다른 연산을 수행하기 전에 피연산자의 값을 1 증가시킴
"--" + "피연산자"다른 연산을 수행하기 전에 피연산자의 값을 1 감소시킴
"피연산자" + "++"다른 연산을 수행한 후에 피연산자의 값을 1 증가시킴
"피연산자" + "--"다른 연산을 수행한 후에 피연산자의 값을 1 감소시킴

논리 부정 연산자

true를 false로, false를 true로 변경

연산식설명
"!" + "피연산자"피연산자가 true이면 false값을 산출
피연산자가 false이면 true값을 산출

산술 연산자

사칙연산자인 덧셈, 뺄셈, 곱셈, 나눗셈과 나머지를 구하는 %까지 총 5개

연산식설명
피연산자 + 피연산자덧셈 연산
피연산자 - 피연산자뺄셈 연산
피연산자 * 피연산자곱셈 연산
피연산자 / 피연산자왼쪽 피연산자를 오른쪽 피연산자로 나눗셈 연산
피연산자 % 피연산자왼쪽 피연산자를 오른쪽 피연산자로 나눈 나머지를 구하는 연산

비교 연산자

피연산자의 대소또는 동등을 비교해서 true 또는 false를 산출

구분연산식설명
동등비교피연산자1 == 피연산자2두 피연산자의 값이 같은지를 검사
피연산자1 != 피연산자2두 피연산자의 값이 다른지를 검사
크기비교피연산자1 > 피연산자2피연산자1이 큰지를 검사
피연산자1 >= 피연산자2피연산자1이 크거나 같은지를 검사
피연산자1 < 피연산자2피연산자1이 작은지를 검사
피연산자1 <= 피연산자2피연산자1이 작거나 같은지를 검사

논리 연산자

논리곱, 논리합, 배타적 논리합, 논리 부정 연산을 수행

구분연산식결과설명
And
(논리곱)
true (&& 또는 &) truetrue피연산자 모두가 true일 경우에만 연산
결과가 true
true (&& 또는 &) falsefalse
false (&& 또는 &) truefalse
false (&& 또는 &) falsefalse
OR
(논리합)
true (ㅣ│ 또는 ㅣ) truetrue피연산자 중 하나만 true이면 연산 결과는
true
true (ㅣㅣ 또는 ㅣ) falsetrue
false (ㅣㅣ 또는 ㅣ) truetrue
false (ㅣㅣ 또는 ㅣ) falsefalse
XOR
(배타적 논리합)
true ^ truefalse피연산자가 하나는 true이고 다른 하나가
false일 경우에만 연산 결과가 true
true ^ falsetrue
false ^ truetrue
false ^ falsefalse
NOT
(논리 부정)
!truefalse피연산자의 논리값을 바꿈
!falsetrue

04-1_조건문: if, switch문

if문

조건식이 true이면 블록 실행, false이면 실행하지 않음

조건식이 true이면 if문의 블록 실행, false이면 else 블록 실행

조건식이 true이면 if문의 블록 실행, false이면 else 블록 실행, 모든 조건식이 false일 경우 else 블록 실행

switch문

변수의 값에 따라 실행문 결정


04-2_반복문: for문, while문, do-while문

for문

조건식이 true가 될 때까지만 중괄호 내부를 반복한다. 반복할 때마다 증갑식이 실행되며 초기화식은 조건식과 증감식에서 사용할 루프 카운터 변수를 초기화 한다. 주로 지정된 횟수만큼 반복할 때 사용

while문

조건식이 true가 될 때까지만 중괄호 내부를 반복 실행한다.

do-while문

먼저 do 중괄호 내부를 실행하고 그 다음 조건식이 true가 되면 다시 중괄호 내부를 반복 실행한다.

break문

for문, while문, do-while문 내부에서 실행되면 반복을 취소한다.

continue문

for문, while문, do-while문 내부에서 실행되면 증감식 또는 조건식으로 돌아간다.


05-1_참조 타입과 참조 변수

기본 타입

자바의 타입은 크게 기본 타입, 참조 타입으로 분류

메모리 사용 영역

  • 메소드 영역 : JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역. 코드에서 사용되는 클래스들을 클래스 로더로 읽어 클래스별로 정적 필드와 상수, 메소드 코드, 생성자 코드등을 분류해서 저장
  • 힙 영역 : 객체와 배열이 생성되는 영역. 여기에 생성된 객체와 배열으 JVM 스택 영역의 변수나 다른 객체의 필드에서 참조
  • JVM 스택 영역 : 메소드를 호출할 때마다 프레임을 추가하고 메소드가 종료되면 해당 프레임을 제거하는 동작 수행

05-2_배열

배열이란?
배열은 같은 타입의 데이터를 연속된 공간에 나열하고, 각 데이터에 인덱스를 부여해놓은 자료구조이다.

배열 선언

두가지 형식으로 작성 가능

  • 타입[] 변수
  • 타입 변수 []

배열 생성

값 목록으로 배열 생성

값의 목록이 있을 경우 사용

타입[] 변수 = {값0, 값1, 값2, 값3, - - - };

new 연산자로 배열 생성

값의 목록을 가지고 있지 않지만, 향후 값들을 저장할 배열을 미리 만들고 싶을 경우 사용

타입[] 변수 = new 타입[길이];

이미 배열 변수가 선언된 경우에도 new 연산자로 배열 생성 가능

타입[] 변수 = null;
변수 = new 타입[길이];

배열 길이

배열의 길이란?
배열에 저장할 수 있는 전체 항목의 개수

코드에서 배열의 길이를 얻으려면 다음과 같이 배열 객체의 length 필드를 읽는다.

배열 변수.length;

다차원 배열

int[][] scores = new int[2][3]

이 코드는 다음과 같이 3개의 배열 객체를 생성한다.

scores.length	//2(배열 A의 길이)
scores[0].length	//3(배열 B의 길이)
scores[1].length	//3(배열 C의 길이)

객체를 참조하는 배열

String[] strArray = new String[3];
strArray[0] = "java";
strArray[1] = "C++";
strArray[1] = "C#";

이 코드는 배열 변수 strArray를 선언하고 3개의 문자열을 참조하는 배열을 생성한다.

배열 복사

package sec02.exam09;

public class ArrayCopyExample {
	public static void main(String[] args) {
		String[] oldStrArray = { "java", "array", "copy" };
		String[] newStrArray = new String[5];
		
		System.arraycopy( oldStrArray, 0, newStrArray, 0, oldStrArray.length);
		
		for(int i=0; i<newStrArray.length; i++) {
			System.out.print(newStrArray[i] + ", ");
		}
	}
}

이 코드는 다음과 같이 배열을 복사시킨다.
복사되지 않은 항목은 String 배열의 초기값 null이 그대로 유지시킨다.


05-3_열거 타입

열거 타입이란?
열거 타입은 한정된 값인 열거 항수중에서 하나의 상수를 저장하는 타입이다.

  • 열거 타입 선언 : enum타입 {상수, 상수, ...} 형태로 열거 타입을 선언한다.
  • 열거 타입 변수 : 열거 타입으로 선언된 변수를 말한다. 열거 타입 변수에는 열거 상수 중 하나가 대입됨

1개의 댓글

comment-user-thumbnail
2023년 7월 9일

글 정리가 너무 잘 돼있네요~

답글 달기