파일 만들기
- [src] 폴더 오른쪽 클릭
- [새로 만들기]
- java 클래스
- 파일 (파일명.txt)
- 패키지 (폴더)
자바 클래스 파일 생성
- [src] 폴더 오른쪽 클릭
- [새로 만들기] -> [패키지] -> (강의 기준 day01~)
- [특정 폴더] 오른쪽 클릭 -> [새로 만들기] -> [java 클래스]
- 클래스 파일명은 첫글자를 무조건 대문자로 시작
예) Example1
자바 구동 원리
- [코딩] 개발자는 .java 파일 내 자바 문법 작성
- [실행] .java 파일 → 컴파일(번역/해석) → .class 파일(바이트) 생성
- 처리 .class 파일 처리
주석
- HTML :
- CSS : / 주석처리 /
- JS/JAVA : // 한줄 주석
/ 여러줄 주석 /
자바 활용처
- 소프트웨어 : javafx 툴 활용 등
- 웹 : JSP, Spring 등
- 앱 : 안드로이드 등
자바 코드 실행
- 자바는 클래스 단위로 컴파일 되고, 컴파일된 코드는 main 함수부터 자동 읽어서(스레드) 처리한다.
리터럴
- 예: 3, 3.14, 'a', "ABC", true 등
- 정의 : 키보드로부터 입력한 자료
- 종류 : 정수(int), 실수(double), 문자(''), 문자열(""), 논리(boolean)
기본타입
- 정의 : 자료들의 분류
- 목적 : 효율적인 자료 처리 (*분리수거)
- 종류 (8가지)
- [정수] byte (1바이트, -128 ~ 127)
short (2바이트, ±3만 정도)
int (4바이트, ±21억 정도, *리터럴 정수 기본)
long (8바이트, ±21억 이상, 뒤에 L/l 붙이기)
- [실수] float (4바이트, 소수점 8자리, 뒤에 F/f 붙이기)
double (8바이트, 소수점 17자리, *리터럴 실수 기본)
- [논리] boolean (1바이트, true/false)
- [문자] char (2바이트, 유니코드, ' ' 작은따옴표로 문자 1개)
*String (클래스, " " 큰따옴표로 여러 문자)
출력 함수
- System.out.print(); → 출력
- System.out.println(); → 출력 후 줄바꿈
- System.out.printf("형식문자", 값1, 값2); → 서식 맞춤 출력
- 형식문자: %s 문자열, %d 정수, %c 문자, %f 실수
- 자릿수: %자릿수d / %-자릿수d / %0자릿수d
- 소수점 자릿수: %전체자릿수.소수점자릿수f
이스케이프/제어 문자
- \n 줄바꿈
- \t 들여쓰기
- \ 백슬래시 출력
- \' 작은따옴표 출력
- \" 큰따옴표 출력
타입변환 (다형성)
- 자동(묵시적) 타입변환
- byte → short/char → int → long → float → double
- 작은 메모리 → 큰 메모리 변환 가능
- 연산 시 두 항 중 큰 타입으로 반환
- int 이하는 무조건 int로 반환
- 강제(명시적) 타입변환
- double → float → long → int → short/char → byte
- 큰 메모리 → 작은 메모리 변환 가능
- (타입명)변수명;
- 자료 손실 발생 가능
입력 함수
- 콘솔 화면에서 키보드 입력 받는 방법
- 사용법
- 입력객체 생성 : new Scanner(System.in);
Scanner 변수명 = new Scanner(System.in);
- 입력 함수:
- next() : 문자열 (띄어쓰기 불가)
- nextLine() : 문자열 (띄어쓰기 가능, next() 뒤에는 주의)
- nextByte(), nextShort(), nextInt(), nextLong()
- nextFloat(), nextDouble(), nextBoolean()
- next().charAt(0) : 문자 1개
연산자
- 산술연산자 : +, -, *, /, %
- 연결연산자 : + (문자열 포함 시 연결)
- 비교연산자 : >, >=, <, <=, ==, !=
- 논리연산자 : &&, ||, !
- 증감연산자 : ++, --
- 복합대입연산자 : +=, -=, *=, /=, %=
- 삼항연산자 : 조건 ? 참 : 거짓
- 문자열비교 : "A".equals("B")
조건문
- 조건에 따른 true/false 흐름 제어
- if, if-else, else if 등 다양한 형태 존재
- 주의할 점: 조건문에는 true/false만 가능, 중괄호 관리 필요
배열
- 동일 타입 여러 값 저장
- 고정 길이, 요소 기본값 존재
- 인덱스 0부터 시작
- 선언/생성 : new 타입[길이], {값1, 값2...}
- 호출: 변수명[index], 변수명.length
- 반복문과 함께 활용 (for, 향상된 for)
클래스와 객체
- 클래스: 객체 설계도
- 객체: 속성과 기능을 가진 대상
- 멤버: 변수, 메소드, 생성자
- 객체 생성: new 클래스명();
- 객체 접근: 변수명.멤버명
메소드
- 기능 단위 코드 블록
- 인수(인자), 매개변수, 반환값, 반환타입 존재
- 정의/호출 방식: 같은 클래스 or 다른 클래스 객체 생성 후 호출
생성자
- 객체 초기화 메소드
- 클래스명과 동일, 반환타입 없음
- 기본 생성자/매개변수 생성자 존재
- 오버로딩 가능
주요 키워드
- 접근제한자: public, private, default, protected
- import : 다른 클래스 불러오기
- final : 상수
- static : 전역 변수/메소드
관례적 용어
- setter/getter : private 멤버 접근
- public static final : 상수 선언
변수 구분
- 멤버변수, 지역변수, 매개변수, 정적변수
- 객체 vs 클래스 vs 인스턴스 구분
상속
- extends 키워드 사용
- 다형성: 자동/강제 타입변환
- 하위 객체 생성 시 상위 객체도 함께 생성
인터페이스
- implements 키워드
- 상수/추상 메소드만 포함
- 다형성 지원
다형성
- 다양한 타입 변환 가능
- 오버라이딩으로 메소드 재정의
- instanceof 로 타입 확인
인스턴스
- 클래스 기반으로 메모리 생성
- 멤버변수는 인스턴스마다 독립, 메소드는 공유
입출력
파일
스트림
- 데이터 통로 (바이트 단위 이동)
- 아스키: 1바이트, 한글: 3바이트
바이트
- 비트: 0/1
- 8비트 = 1바이트
- 1024단위로 KB, MB, GB
파일 입출력
- 예외 처리 필요
- FileOutputStream.write() : 쓰기
- FileInputStream.read() : 읽기
문자열 관련 메소드
- "문자열".getBytes() : 문자열 → 바이트배열
- new String(바이트배열) : 바이트배열 → 문자열
- "문자열".equals("문자열") : 문자열 비교