반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 향상된for문
- 카카오인턴십
- HAVING
- Join
- ifelse
- Java
- 겟터
- 프로그래머스
- 이터레이블
- int오류
- for문
- 연산자
- 작성순서
- 객체
- .repeat
- SQL
- 생성자쓰는이유
- 제어문
- sql오류
- executeUpdate
- 오라클
- getter
- 자바
- 상속
- 생성자
- 삼항연산자
- SELECT 절
- 칼럼명에 별칭 지정
- setter
- .substring
Archives
- Today
- Total
CoDream
[JAVA] 이론 끝! 본문
728x90
반응형
연산자
산술연산자
- +: 덧셈을 수행합니다.
- **-** : 뺄셈을 수행합니다.
- *: 곱셈을 수행합니다.
- /: 나눗셈을 수행하며, 정수 나눗셈의 경우 몫을 반환합니다.
- %: 나머지 연산을 수행합니다.
비교연산자
- ==: 두 값이 서로 같은지를 확인합니다.
- !=: 두 값이 서로 다른지를 확인합니다.
- >: 왼쪽 값이 오른쪽 값보다 큰지를 확인합니다.
- <: 왼쪽 값이 오른쪽 값보다 작은지를 확인합니다.
- >=: 왼쪽 값이 오른쪽 값보다 크거나 같은지를 확인합니다.
- <=: 왼쪽 값이 오른쪽 값보다 작거나 같은지를 확인합니다.
논리연산자
- &&: 논리 AND 연산을 수행합니다.
- ||: 논리 OR 연산을 수행합니다.
- !: 논리 NOT 연산을 수행하여 값을 부정합니다.
대입연산자
- =: 변수에 값을 할당합니다.
복합연산자
- +=, -=, *=, /=, %= : 산술 연산과 할당을 동시에 수행합니다.
증감연산자
1. 전위 증감 연산자 (++x, -x):
- 전위 증감 연산자는 연산을 먼저 수행한 후 변수의 값을 변경합니다.
- 변수의 값을 증가시키거나 감소시킨 후 변경된 값을 반환합니다.
2. 후위 증감 연산자 (x++, x--):
- 후위 증감 연산자는 변수의 값을 먼저 반환한 후에 연산을 수행하고 값을 변경합니다.
- 변수의 값을 반환한 후에 증가시키거나 감소시킵니다.
삼항연산자
- 조건 ? A : B 조건 이 true이면 A 반환, 그렇지 않으면 B 반환
- 중첩 가능
제어문(조건문)
if문
- if, else if, else 구문을 사용하여 조건문을 작성
- 조건문은 다른 조건문 안에 중첩하여 사용할 수 있습니다.
if (조건1) {
// 조건1이 참일 때 실행되는 코드
} else if (조건2) {
// 조건1이 거짓이고, 조건2가 참일 때 실행되는 코드
} else {
// 모든 조건이 거짓일 때 실행되는 코드
}
switch문
- switch , **break , default**
- **표현식과 case**값 의 일치여부를 검사하여, 코드블록 실행
switch (표현식) {
case 값1:
// 표현식이 값1과 일치할 때 실행되는 코드
break;
case 값2:
// 표현식이 값2와 일치할 때 실행되는 코드
break;
// 추가적인 case 문들...
default:
// 위의 모든 case에 해당하지 않을 때 실행되는 코드
}
제어문(반복문)
- for, while, do-while
- **break , contiue**
for
for (초기식; 조건식; 증감식) {
// 반복 실행될 코드
}
//=========================
for (int i = 0; i < 10; ++i) {
System.out.println(i); // 0 ~ 9 출력됨
}
while
while (조건식) {
// 조건식이 참일 때 반복 실행될 코드
}
//=========================
int i = 0;
while (i < 10) {
System.out.println(i); // 0 ~ 9 출력됨
i++;
}
do-while
do {
// 조건식이 참일 때 반복 실행될 코드
} while (조건식);
//=========================
int i = 0;
do {
System.out.println(i); // 0 ~ 9 출력됨
i++;
} while (i < 10);
break
- 현재 반복문을 탈출합니다.
continue
- 반복문의 처음으로 돌아갑니다.
- for 문에서는 증감식으로 돌아갑니다.
배열 (Array) + 다차원배열
- 타입이 같은 변수들을 하나로 묶어서 관리합니다.
- 인덱스를 사용하여 요소에 접근할 수 있습니다.
- 인덱스는 0부터 시작합니다.
- 선언 후에 크기가 고정됩니다.
- 배열의 크기는 변경이 불가합니다.
선언 및 초기화
// 배열 변수 선언
자료형[] 변수명;
// 배열객체 생성
new 자료형[배열크기];
// 배열 변수에 배열객체 할당
변수명 = new 자료형[배열크기];
// 선언 및 초기화 예시
int[] numArr; // 정수 배열 선언
numArr = new int[5]; // 크기가 5인 정수 배열 초기화
요소 접근
numArr[0] = 10; // 첫 번째 요소에 10 할당
int x = numArr[0]; // 첫 번째 요소의 값(10)을 x에 할당
다양한 초기화 방법
- 이 외에도 몇 가지 더 있긴 하지만, 볼 필요 없습니다.
int[] numArr = {1, 2, 3, 4, 5}; // 크기가 5인 배열을 선언하고 초기값을 할당
배열의 길이
int x = numArr.length; // numberArr 배열의 길이(크기)를 구함
객체배열
Person[] personArr = new Person[5];
다차원 배열
- 배열도 객체다.
- 객체배열과 같다.
int[][] x = new int[3][3]; // 3x3 크기의 정수형 2차원 배열
x[0][0] = 1; // x의 0번인덱스에 접근 -> 배열객체 가리키는 주소값 -> 배열의0번 요소에 접근
클래스와 객체
- 객체 지향 프로그래밍(OOP)의 핵심
클래스(Class)
- 객체를 생성하기 위한 설계도
- 객체를 생성하기 위한 틀
- 객체를 생성하기 위한 템플릿
- 멤버(변수,메소드) 를 정의합니다.
- 데이터(변수) + 기능(메소드) 로 구성되어있습니다.
- 클래스 작성만으로 메모리에 객체가 할당되지 않습니다.
객체(Object)
- 클래스의 인스턴스화(instantiation) 과정을 통해 생성됩니다.
- 객체는 클래스의 인스턴스(instance) 입니다.
- 클래스에 정의된 멤버를 실제로 가지고 있는 실체입니다.
- 객체는 메모리에 할당되어, 실제 데이터를 저장하고 해당 데이터를 처리하는데 사용됩니다.
메소드 (method)
- 특정 작업을 수행하기 위한 코드 블록입니다.
- 클래스 내에 정의됩니다.
- 코드의 재사용성과 가독성을 높입니다.
명명규칙 (이름 짓기)
- 카멜케이스(Camel Case)
- 동사로 작성
- 의미있게 작성
- 반환값에 맞게 작성
문법
접근제한자 반환유형 메소드이름(매개변수) {
// 메소드가 수행할 작업
return 반환값; // 반환값이 있는 경우
}
- 접근제한자(Access Modifier) 공개범위를 지정합니다. public, private, protected, default
- 반환유형(Return Type) 메소드가 실행된 후에 반환되는 값의 타입을 지정합니다.
- 메소드이름(Method Name) 제곧내
- 매개변수(Parameter) 메소드 호출시 전달되는 값들(인자값들)을 받아줄 변수입니다. 인자값이 없으면 안써도 됩니다. 인자값이 여러개라면 매개변수를 여러개 작성합니다.
- 메소드 바디 (Method Body) 메소드 호출 시 실행될 코드블럭입니다.
- 반환값(Return Value) 메소드가 실행된 후에 반환되는 값입니다. 쓰레드가 return 을 만나면, 해당메소드를 종료하고 이전 메소드로 돌아갑니다.
종류
- 객체(인스턴스) 메소드(Instance Method) 객체를 생성해야만 호출할 수 있습니다.
- 정적 메소드(Static Method) 객체생성과 관계없이 실행됩니다. 클래스 이름을 통해 호출합니다.
생성자(Constructor)
객체를 생성하여 리턴해주는 메소드 (다만 메소드와 생김새가 조금 다름)- 생성자 이름은 클래스명과 동일해야한다.
- 리턴타입을 가지지 않는다. (자동으로 객체를 리턴함)
- 클래스파일에 생성자를 아무것도 작성하지 않으면 기본 생성자가 자동으로 만들어진다.
- 생성자를 작성하면 기본생성자는 자동으로 만들어지지않는다.
- 오버로딩을 이용하여 여러개 작성이 가능하다.
예시
public class Person {
//필드 == 멤버변수 == 객체변수 == 인스턴스변수
private String name;
private int age;
// 기본 생성자
public Person() {
}
// 모든 필드에 대한 매개변수가 있는 생성자 (AllArgsConstructor)
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}//class
String API
- int length(): 문자열의 길이(문자 수)를 반환합니다.
- char charAt(int index): 지정된 인덱스의 문자를 반환합니다.
- String substring(int beginIndex): 시작 인덱스 ~ 문자열의 끝 을 반환합니다.
- String substring(int beginIndex, int endIndex): 지정된 범위의 문자열 을 반환합니다.
- boolean equals(Object obj): 두 문자열 내용이 동일한지 비교합니다.
- boolean equalsIgnoreCase(String anotherString): 위와같음 + 대소문자는 구분하지않습니다.
- int indexOf(String str): 지정된 문자열이 처음으로 등장하는 인덱스를 반환합니다.
- int lastIndexOf(String str): 지정된 문자열이 마지막으로 등장하는 인덱스를 반환합니다.
- String toLowerCase(): 문자열을 모두 소문자로 변환합니다.
- String toUpperCase(): 문자열을 모두 대문자로 변환합니다.
- String trim(): 문자열의 앞뒤 공백을 제거합니다.
- String[] split(String regex): 지정된 문자열에 따라 문자열을 분할하여 배열로 반환합니다.
- String concat(String str): 문자열을 합칩니다.
- String join(CharSequence delimiter, CharSequence... elements): 이런것도 있구나
- boolean startsWith(String prefix): 지정된 문자열로 시작하는지
- boolean endsWith(String suffix): 지정된 문자열로 끝나는지
- boolean contains(CharSequence s): 지정된 문자열 포함하는지
상속과 다형성
상속을 통해 부모 클래스 멤버를 자식 클래스에서 사용할 수 있습니다.
- 부모 클래스 == 슈퍼클래스 자식 클래스 == 서브클래스
장점
- 재사용성
- 확장성
특징
- 단일 상속
오버라이딩 (@Override)
- 부모의 메소드를 자식이 재정의 하는 것
다형성 (Polymorphism)
- 하나의 객체를 다양한 자료형으로 인정합니다.
추상화 , 추상클래스 , 추상메소드
- 추상화 : 공통된 특성을 추출
- 추상클래스 : 클래스의 공통 특성을 추출하여 만든 클래스
- 추상메소드 : 메소드의 공통 특성을 추출하여 만든 메소드
추상클래스(Abstract Class)
- 객체 생성이 불가능한 클래스
- 자식 클래스에서 상속받기 위함 (확장하여 사용하기위함)
- 일반 클래스와 동일하게 작성할 수 있음 (단지 객체 생성이 불가능할 뿐)
- 추상메소드가 존재할 수 있음 (추상메소드가 있으면 객체 생성 불가능 == 추상메소드가 있으면 무조건 추상클래스)
추상메소드(Abstract Method)
- 헤드 O
- 바디 X
- 부모클래스 증 추상메소드가 있다면 반드시 재정의(오버라이딩)되어야 함
인터페이스
- 다중 상속 지원
- 일반변수 X 일반메소드 X 추상메소드 O (그래서 다중상속이 가능하다.)
- 메소드 작성 시 public abstract 키워드는 생략해도 된다.
- 클래스는 implements 로 인터페이스를 상속받는다.
- 인터페이스간 상속은 extends 로 이루어진다.
- 상수 선언 가능
- 디폴트 메소드 작성 가능
사용 이유
- 다중상속을 통한 다형성 적용
- 결합도 낮추기
- 재사용성
예제
interface Mother {
void sayHello();
}
interface Father {
void sayHello();
}
class Child implements Mother, Father {
@Override
public void sayHello() {
System.out.println("Hello ~ I'm Child !");
}
}
public class Main {
public static void main(String[] args) {
Child c = new Child();
c.sayHello(); // Child 클래스의 sayHello() 메소드 호출
}
}
예외(Exception)
- 예외 : 정상적인 프로그램 흐름을 방해하는 이벤트
- try, catch, finally, throw, throws
예외(Exception)의 종류
- Checked Exception (컴파일 예외)
- 컴파일러에 의해 확인되는 예외입니다.
- 반드시 예외처리를 해야 합니다.
- Exception 클래스의 하위 클래스입니다.
- Unchecked Exception (런타임 예외)
- 컴파일러가 확인하지 않는 예외입니다.
- 런타임에서만 확인되는 예외입니다.
- 예외처리가 필수가 아닙니다.
- RuntimeException 클래스의 하위 클래스입니다.
예외처리 문법
try {
// 예외가 발생할 수 있는 코드
} catch (예외종류1 e1) {
// 예외종류1 예외 처리
} catch (예외종류2 e2) {
// 예외종류2 예외 처리
} finally {
// 항상 실행되는 코드
}
강제로 예외를 발생시키기
javaCopy code
public class Hello {
public static void main(String[] args) {
throw new RuntimeException(); // 예외 발생
}
}
컬렉션 (Collection)
컬렉션은 데이터를 구조화하여 저장하기 위해 사용합니다.
- 각 컬렉션은 서로 다른 자료구조 를 갖습니다.
컬렉션(Collection)의 특징
- 유연성 다양한 유형의 데이터를 저장하고 관리할 수 있습니다. 크기가 가변적이므로 데이터의 추가, 삭제, 변경이 자유롭습니다.
- 편리성 데이터를 조작하는 다양한 메소드를 제공합니다. 메소드를 통해 데이터를 쉽게 다룰 수 있습니다.
- 효율성 효율적인 알고리즘을 사용하여 데이터를 처리하므로, 성능을 보장합니다.
- 다양성 각각의 컬렉션은 특정한 용도에 맞게 설계되어 있습니다.
- 생산성 표준화된 인터페이스와 클래스를 제공하여 컬렉션을 쉽게 사용하고 관리할 수 있도록 합니다. 이를 통해 개발 생산성을 향상시킬 수 있습니다.
컬렉션(Collection)의 종류
List (리스트)
- 순서가 있다.
- 데이터의 중복 허용
- 인덱스로 각 요소에 접근할 수 있다.
- 대표적인 구현체로는 ArrayList, LinkedList, Vector 등이 있다.
Set (집합)
- 순서가 없다.
- 중복을 허용하지 않는다.
- 대표적인 구현체로는 HashSet, TreeSet 등이 있다.
Map (맵)
- entry 로 구성된다.
- entry 는 key:value 한쌍을 의미한다.
- key는 유일해야 한다. ( ==중복허용 X )
- value 는 중복되어도 상관없다.
- key를 사용하여 value 를 다룰 수 있다.
- 대표적인 구현체로는 HashMap, TreeMap, LinkedHashMap 등이 있다.
Stack (스택)
- LIFO(Last-In-First-Out) 순서를 따른다.
- 대표적인 구현체로는 Stack 이 있다.
Queue (큐)
- FIFO(First-In-First-Out) 순서를 따른다.
- 대표적인 구현체로는 LinkedList, PriorityQueue 등이 있다.
Deque (덱)
- 양쪽 끝에서 데이터를 추가하거나 제거할 수 있다. (Queue 확장판)
- 대표적인 구현체로는 ArrayDeque, LinkedList 등이 있다.
728x90
반응형
'JAVA > JAVA 이론' 카테고리의 다른 글
Connection, PreparedStatement, executeUpdate, executeQuery (0) | 2024.03.27 |
---|---|
JAVA - ORACLE 연결 (ORACLE JDBC 드라이버 링크, JDBC 연결 문자열) (0) | 2024.03.26 |
[JAVA] 재귀 함수(Recursive Function) (0) | 2024.03.18 |
[JAVA] 서버(Server)와 클라이언트(Client) (1) | 2024.03.12 |
[JAVA] @ 어노테이션(Annotation) (0) | 2024.03.12 |