01 Java Platform 이해
- 프로그래밍 언어의 역할
- 컴퓨터에서 동작하는 Application을 만들기 위한 과정
- Compile 언어와 Script 언어로 구분
- 자바의 특징
- 플랫폼 독립적
- JVM(Java Virtual Machine)으로 .class 자바 파일 실행
- 객체 지향 언어
- 함수형 코딩 지원
- 분산처리 지원
- 멀티 스레드 지원
- 동시에 여러 가지 작업을 할 경우
- 대용량 작업
- 동적 로딩 지원 (import)
- 미리 만들어진 객체를 필요한 시점에 동적 로딩하여 객체 생성
- 플랫폼 독립적
- JDK와 JRE
- JDK (Java Development Kit)
- 자바 개발 도구
- Compiler, Debugger
- JRE (Java Runtime Environment)
- 자바 실행 환경
- Class Loader, Java API Runtime Library
- JDK→ JRE→ JVM
- JDK (Java Development Kit)
- OOP (Object Oriented Programming)
- 객체 지향 언어
- 부품 객체를 먼저 만들고 조합하여 전체 프로그래밍을 완성하는 기법
- 캡슐화, 상속, 다형성 기능 지원
- compile 언어와 script 언어의 차이점
- script 언어
- Javascript, Python 등
- 명령어를 한 줄씩 읽으면서 실행하므로 번역 속도가 빠르다.
- compile 언어
- Java, C++ 등
- 번역 단위가 코드 전체이므로 번역 속도가 빠르다.
- script 언어
02 Java 개발 환경 세팅
- public static void main(String[] args)
- public
- 예약어(키워드) 접근 지정자
- 모든 클래스에서 접근 가능
- static
- 정적 변수/함수를 지정할 때 (인스턴스 생성 없이 호출 가능)
- 프로그램 시작시 고정된 메모리 주소에 할당됨
- void
- return 값이 없는 반환 타입
- String[] args
- String 배열 타입의 매개변수를 가지며, 여러 개의 문자열을 입력받아서 기능 수행
- public
- 주석
- 한 줄 주석문
- // 주석 내용
- 여러 줄 주석문
- /* 주석 내용 */
- 한 줄 주석문
- 출력문
- System.out.println() 사용
- string과 num 혼합 예시
- System.*out*.println("화면" + 10 + 20); 처럼 문자열이 먼저 나온다면 num 문자 형태로 출력
- System.*out*.println(10 + 20 + "화면"); 처럼 num이 먼저 나온다면 num끼리 계산 후 출력
- 연산자 우선순위가 헷갈린다면 소괄호로 묶어주기!
- 출력문 메서드
- println()
- 문자열 한 줄 출력 + 줄바꿈
- print()
- 줄바꿈 없음
- printf()
- 형식화된 출력문
- %d (10진수), %o (8진수), %x (16진수), %e (지수형)
- 예시
- System.*out*.printf("%d\\n", 30); ⇒ 30 출력
- System.*out*.printf("%.3f", 123.45f); ⇒ 123.450 출력
- \n
- 줄 바꿈 특수문자
- println()
03 Java의 기본 문법 이해 - 자료형과 연산자
- 변수와 자료형의 개요
- 자료형
- 저장할 수 있는 값의 형태를 지정
- Java 프로그램의 모든 변수, 상수는 자료형 선언 후 사용 가능
- 자료형 사용 방법
- 기본 형태
- 자료형 변수이름 = 값;
- 예시
- 동시에 변수 선언과 값 저장
- int a = 3;
- 변수 선언 이후 값 저장
- int b;
- b = 3;
- 동시에 변수 선언과 값 저장
- 기본 형태
- 변수/상수/메서드 이름 선정 규칙
- 필수 사항
- 영문대소문자 및 한글 사용 가능
- 특수문자는 _와 $만 사용 가능
- 숫자는 사용 가능하지만 첫 번째에는 올 수 없음
- 자바에서 사용 중인 키워드 사용 불가
- 권고 사항
- 변수 이름은 소문자로 시작
- 두 개의 단어가 결합된 경우 두 번째 단어는 대문자로 시작 (camel case)
- 상수 이름은 모든 문자를 대문자로 작성, 두 단어 결합 시 언더바(_)로 연결
- 필수 사항
- 변수의 생존 기간
- 변수는 자신이 선언된 중괄호 안에서만 사용 가능
- 자료형
- 자료형의 종류
- 기본 자료형 (primitive types)
- 논리
- boolean (1byte)
- 정수
- byte, short (2byte), int (4byte), long (8byte)
- long은 값(숫자) 뒤에 L 붙이기
- byte, short (2byte), int (4byte), long (8byte)
- 실수
- float (4byte), double (8byte)
- float는 값(숫자) 뒤에 f 붙이기
- float (4byte), double (8byte)
- 문자
- char (2byte)
- 논리
- 참조 자료형 (reference types)
- Array, Class, Interface, Enum
- 기본 자료형 (primitive types)
- 메모리의 구조
- class, static, final, method 영역
- Stack 영역
- 기본 자료형은 값을 stack 메모리에 저장
- stack은 위치를 저장
- Heap 영역
- 참조 자료형은 값을 heap 메모리에 저장
- heap 메모리는 직접 접근 불가
- 기본 자료형 간의 형 변환
- literal 타입
- 자료 형 없이 값으로 입력하는 경우 값의 형태에 따라 대표 자료형으로 자동 변환
- 정수값→ int로 저장, 실수값→ double로 저장
- Type Casting
- 숫자를 저장하는 7개(boolean 제외)의 기본 자료형 사이에 타입 변환 가능
- 자동 형변환
- 값의 표현 범위가 넓은 쪽으로 저장되는 경우 (작은 정수형→ 큰 정수형, 정수형→ 실수형)
- 대입(산술) 연산자를 통해 자동으로 형 변환
- 수동 형변환
- 값의 표현 범위가 좁은 쪽으로 저장되는 경우 (큰 정수형→ 작은 정수형, 실수형→ 정수형)
- 값의 손실이 발생할 수 있음
- 직접 표기하지 않으면 오류 발생
- literal 타입
- 수동 형변환 방법
- 타입 변환 대상 앞에 (자료형) 표기
- int a = (int)3.2;
- long형은 숫자 뒤에 L 표기
- long a = (long)10;
- long b = 10L;
- float 형은 숫자 뒤에 f 표기
- float c = (float)5.8;
- float d = 5.8f;
- 타입 변환 대상 앞에 (자료형) 표기
- 참조 자료형 (reference types)
- Class와 Object
- Class
- 타입의 구조를 나타내며 붕어빵 틀과 같은 느낌
- Object (객체)
- 해당 타입으로 생성된 실체이며 틀에서 찍어낸 붕어빵 느낌
- Class
- String 클래스
- 문자열 저장 클래스 타입
- 문자열은 쌍따옴표 안에 표기
- 객체 내의 값 변경 불가, 변경시 새로운 객체를 생성하여 작성
- 리터럴을 바로 입력한 데이터는 문자열이 같을 때 하나의 객체를 공유
- 객체 생성 방법
- new 키워드 사용
- String 변수명 = new String(”문자열”);
- 변수에 바로 문자열 리터럴 입력
- String 변수명 = “문자열”;
- new 키워드 사용
- String 객체의 + 연산
- 연산자로(+=) 문자열 연결 가능
- String의 주요 메서드
- 문자열 길이
- length()
- 문자열 검색
- charAt(index)
- int 형인 index 값을 넣으면 해당 인덱스 위치의 문자 출력
- indexOf(int or String)
- int나 String 값을 넣으면 문자열의 위치나 문자열에 포함된 문자를 앞에서 부터 검색하여 일치하는 인덱스 값 출력
- 문자열 검색 시 다 소문자로 바꾼 후에 검색하는 것이 좋다.
- ex) toLowerCase().indexOf("검색할문자열")
- lastIndexOf(int or String)
- 위랑 비슷하지만 뒤에서부터 검색
- charAt(index)
- 문자열 변환 및 연결
- String.valueOf()
- boolean, char, int, long, float, double 값을 문자열로 변환하기 위한 정적 메서드
- concat(string)
- String 값을 넣으면 문자열을 연결
- Integer.parseInt(string)
- 문자열을 넣으면 정수형으로 변환
- ex) Integer.parseInt(”10”)
- String.valueOf()
- 문자열 배열 변환
- toCharArray()
- 문자열을 char[]으로 변환
- Arrays.toString()
- 배열을 문자열로 변환해주는 함수
- toCharArray()
- 문자열 수정
- toLowerCase()
- 영문자를 모두 소문자로 변환
- toUpperCase()
- 영문자를 모두 대문자로 변환
- replace(oldChar, newChar)
- oldChar 문자열을 newChar 문자열로 대체한 문자열 생성
- substring(beginIndex, endIndex)
- beginIndex부터 끝까지나, endIndex-1 위치까지의 문자열 생성
- split(regex)
- string 형인 regex를 기준으로 문자열을 분할하여 분할한 문자열 배열 생성
- regex는 | 기호로 여러 개 사용 가능
- ex) split(”/|-| “) ⇒ / 또는 - 또는 “ “을 기준으로 분리
- split(regex, limit) 형태에서 limit은 분할의 최대 개수 지정 가능
- trim()
- 문자열의 앞뒤 공백 제거 (가운데 공백은 미제거)
- 모든 공백을 제거하고 싶을 때는 replaceAll(" ", "") 이용
- toLowerCase()
- 문자열 내용 비교
- equals()
- 문자열의 실제 내용 비교 (값 비교)
- == 은 주소 값 비교이다.
- equalsIgnoreCase(anotherString)
- 대소문자 구분없이 문자열의 실제 내용 비교
- constains(string)
- 입력한 string 문자열을 포함하는지 true/false로 반환
- equals()
- 문자열 길이
- Class와 Object
'교육 (Today I Learned) > Hanaro' 카테고리의 다른 글
[Hanaro] 38일차 / Java (제어문) (0) | 2024.03.12 |
---|---|
[Hanaro] 37일차 / Java (연산자, Scanner) (0) | 2024.03.09 |
[Hanaro] 35일차 / Next.js (Styling, Server API와 NextAuth, React+Next의 테스트 작성) (0) | 2024.03.08 |
[Hanaro] 34일차 / Next.js (Data Fetching) (0) | 2024.03.08 |
[Hanaro] 33일차 / Next.js 시작하기, 프로젝트 생성 (0) | 2024.03.04 |