1. 자바 기본 구조
- 클래스 : 자바의 소스 코드 단위. 변수와 메서드로 구성
public class A {
public static void main(String[] args){ // 프로그램 시작 단위
}
}
2. 자료형
- 기본 자료형 : 크기가 고정되고, null 값을 가질 수 없는 데이터 타입
- 논리형 : boolean(1byte)
- 정수형 : byte(1byte), short(2byte), int(4byte), long(8byte)
- 실수형 : float(4byte), double(8byte)
- 문자형 char(2byte)
- 참조 자료형 : 객체를 참조하는 변수로, 주소값을 저장하는 공간
- 배열(Array) : 같은 타입의 변수들의 집합
- 클래스(Class) : 특정 객체를 생성하기 위해 변수와 메서드를 정의하는 틀
- 인터페이스(Interface) : 클래스가 구성해야 하는 메서드의 선언
3. 변수
- 변수 : 값을 주기억장치에 저장하기 위한 공간
- 변수 유효범위
- 클래스 변수 : Class 블록에 선언하는 변수로, 클래스 내에서 사용 가능
- 지역 변수 : 블록 내에서 선언하는 변수로, 해당 블록 내에서만 사용 가능
- Static 변수 : 프로그램 전체에서 사용 가능한 변수
public class A {
int a = 3; // 클래스 변수
public static void main(String[] args){
int b = 5; // 지역 변수
static int c = 7; // static 변수
}
}
4. 배열
- 배열의 선언
public class A {
public static void main(String[] args){
int[][] a = new int [3][2]; // 초깃값이 없는 경우
int[][]a = {{1,2},{3}}; // 초기값이 있는 경우
}
}
5. 표준 입출력 함수
- 표준 출력 함수
- System.out.print() : 개행 x
- System.out.println() : 개행 o
- System.out.printf() : 변수 출력 함수
- 표준 입력 함수
- System.in.readLine() : 입력장치로부터 문자를 읽는 함수
6. 문자열
- 문자열 생성
- 리터럴 방식 : String 변수에 문자열 리터럴을 저장한 주소를 대입
- new를 이용한 방식 : String 변수에 주소값을 대입
public class A {
public static void main(String[] args){
String a = "abc"; // 리터럴 방식
String b = "abc"; // a와 b는 같은 문자열 풀을 가리킨다.
String c = new String("abc"); // new 방식
}
}
- 문자열 연결 : 문자열과 연결하면 모두 문자열로 return
- 문자열 비교
- == 연산자 : 문자열의 주소값을 비교
- equals 메서드 : 문자열 자체를 비교
- 문자열 문자형 변환 : chatAt(index) 메서드를 이용해 해당 번지의 문자를 가지고 온다.
7. 반복문 - for each 문
- for each 문 : 배열이나 리스트의 항목을 순차적으로 대입하며 반복
public class A {
public static void main(String[] args){
int[] a = {1,2,3};
for(int n:a){
System.out.println(n);
}
}
}
8. 메서드
- 사용자 정의 함수 : 사용자 정의 함수에서 사용된 변수는 함수 종료 시 없어짐
- static 메서드 : 클래스가 메모리에 올라가 때 자동적으로 생성되는 메서드로, 인스턴스를 생성하지 않아도 호출이 가능하다.
9. 클래스
- 객체 지향 프로그래밍(OOP)에서 특정 객체 생성을 위해 변수와 메서드를 정의하는 틀
- 클래스 접근 제어자
- public : 외부의 모든 클래스에서 접근 가능
- protected : 같은 패키지 내부, 하위 클래스에서 접근 가능
- default : 접근 제어자를 명시하이 않은 경우. 패키지 내부에서 접근 가능
- private : 같은 클래스에서만 접근 가능
- 클래스 정의 : 일반적으로 변수는 private를 사용하고, 메서드는 외부에 공개할 것만 public을 사용하여 정보 은닉을 수행
- 클래스 변수 생성 : 변수에 들어갈 인스턴스를 new 키워드로 생성
- 클래스 this : 현재 객체를가리키는 키워드로, 클래스 내부의 변수와 메서드를 가리킬 수 있다.
public class B {
private int a;
public void setA(int a){
this.a = a;
}
}
public class A {
public static void main(String[] args){
B b = new B();
b.setA(5);
}
}
- 생성자 : 해당 클래스의 객체가 생성될 때 자동으로 호출되는 메서드. 클래스 명과 동일한 메서드 명을 가지고, 반환 값이 없다.
10. 클래스 상속
- 클래스 상속 : 어떤 객체가 있을 때 객체의 변수와 메서드를 다른 객체가 물려받는 기능
- 클래스 상속 문법
public class B {
private int a;
public void setA(int a){
this.a = a;
}
}
public class C extends B{
public int getC(){
System.out.println("C");
}
}
public class A {
public static void main(String[] args){
C c = new C();
c.setA(5);
c.getC();
}
}
- 오버로딩 : 동일 이름의 메서드를 매개변수만 다르게 하여 여러 개 정의할 수 있는 기능
- 오버라이딩 : 하위 클래스에서 상위 클래스 메서드를 재정의
- 부모 클래스 접근 : super 클래스를 이용하여 상위 클래스의 변수나 메서드에 접근
- 업 캐스팅(Upcasting) : 하위 클래스 객체를 상위 클래스 타입으로 변환하는 과정
11. 추상 클래스
- 추상 클래스 : 미구현 추상 메서드를 한 개 이상 가지며, 자식 클래스에서 해당 추상 메서드를 반드시 구현
public class B {
private int a;
public void fn(); // 메서드 내부 구현 x
}
class C extends B{
void fn(){
System.out.println("C");
}
}
12. 인터페이스
- 인터페이스 : 클래스가 구현해야 하는 메서드의 선언만을 포함하는 형태(추상 클래스의 일종)
13. 제네릭
- 제네릭 : 클래스나 메서드가 다양한 타입을 처리할 수 있도록 일반화하는 기능
- 제네릭 문법
public class B<T> {
T x;
public void setA(T x){
this.x=x;
}
}
public class A {
public static void main(String[] args){
B<Sting> b = new B<>(); // <타입> 작성
b.setA("Hello");
}
}
- 제네릭 오버로딩 관계 : 제네릭 변수를 매개변수로 전달할 때 제네릭이나 Object 타입으로 전달
14. 예외 처리
- 예외 처리 : 프로그램 실행 중 발생할 수 있는 예외적인 상황에 대해 적절히 대처
- 예외 종류
- ArrayIndexOutOfBoundsException : 배열의 범위를 벗어난 인덱스 접근
- ArithmeticException : 수학적인 연산 중 오류가 발생
- NullPointerException : 객체가 null인 상태에서 메서드나 필드에 접근
- NumberFormatException : 문자열 숫자 타입으로 변환 시 형식이 맞지 않음
- IndexOutOfBoundsException : 리스트나 문자열의 유효하지 않은 인덱스에 접근
- 예외 처리 구문
public class A {
public static void main(String[] args){
try{ // 예외 발생 가능성이 있는 코드
int result = 10/0;
}
catch(ArithmeticException){ // 예외 발생 시 실행하는 코드
System.out.println("A");
}
finally{ // 예외와 상관없이 항상 실행되는 코드
System.out.println("B");
}
}
}
- throw, throws : 메서드 내부에서 직접 예외를 발생시킬 때 사용
# 회고
문제를 풀어봤는데 자바 문법은 밑줄 친 정도만 복습하고...복잡한 코드 이해하는 것만 더 연습하면 될 것 같다.
C는 포인터가 어렵다면 Java는 클래스 상속이 헷갈린다. 왔다갔다리
'개인 스터디 > 정리' 카테고리의 다른 글
[정보처리기사 실기] 14. 데이터베이스 기본 (0) | 2025.05.04 |
---|---|
[정보처리기사 실기] 13. Python (0) | 2025.05.01 |
[정보처리기사 실기] 10. 프로그래밍을 위한 기본 사항~11. C언어 (0) | 2025.04.28 |
[정보처리기사 실기] 9. 인터페이스 기능 구현 (1) | 2025.04.15 |
[정보처리기사 실기] 8. 내외부 연계 모듈 구현 (0) | 2025.04.14 |