반응형

자바 연산자의 종류

프로그래밍에 있어서 연산자는 빼놓을 수 없습니다. 기본적인 사칙 연산 및 비교, 논리, 대입 연산자를 숙지하지 않으면 프로그래밍을 할 수 없으니 각각 프로그래밍에서 어떤 역할로 사용되는 지 알아봅시다.

종류 연산자 설명
산술 연산자 +   -    *   /   %   <<   >> 사칙 연산(+,-,*,/)과 나머지 연산(%)
비교 연산자 >   <   >=   <=   ==   != 크고 작음과 같고 다름을 비교
논리 연산자 &&   ||   !   &   |   ^   ~ '그리고(and)'와 '또는(or)'으로 조건을 연결
대입 연산자 = 우변의 값을 좌변에 저장
기타 (type)   ?:   instanceof 형변환 연산자, 삼항 연산자, instanceof 연산자

입문자가 연산자를 배울 때 많이 혼동하는 부분은 비교 연산자 '=='와 대입 연산자 '=' 입니다. ==는 비교 연산자이기 때문에 좌항과 우항이 같은지 비교하는 역할을 하고 =는 우변의 값을 좌변에 역할을 합니다. 그리고 비교 연산자 '!=' 좌항과 우항이 서로 다른지 확인합니다. 

// 산술 연산자

System.out.println(10 + 20) // 결과 : 30 출력
System.out.println(5 % 2) // 결과 : 5를 2로 나눴을 때 나머지인 1 출력



// 비교 연산자

System.out.println(5 < 3) // 결과 : 5는 3보다 크기 때문에 false 출력
System.out.println(5 != 5) // 결과 : 5와 5가 다르냐는 비교입니다. 5와 5는 같기 때문에 false 출력



// 논리 연산자

System.out.println(1 < 10 || 5 > 10) // 결과 : 1이 10보다 작거나 5가 10보다 크거나 둘 중 하나가 true이면 true를 출력하기 때문에 true 출력 
System.out.println(1 < 10 && 5 > 10) // 결과 : 1이 10보다 작거나 5가 10보다 크거나 둘 중 하나가 false이면 false를 출력하기 때문에 false 출력



// 대입 연산자

int x = 10; // 좌항에 있는 변수 x에 10을 저장합니다.
반응형

'Java > Java 기초' 카테고리의 다른 글

[Java] .length, .length(), .size()  (0) 2021.07.08
[Java] 증감 연산자 기초  (0) 2021.07.06
[Java] String 배열  (0) 2020.12.25
[Java] 캐스팅(형변환, casting)  (0) 2020.12.25
[Java] 배열의 선언 / 생성  (0) 2020.12.25
반응형

자바 인터페이스

인터페이스는 추상 클래스(Abstract Class)의 일종으로 추상 클래스와 같이 추상 메소드를 같지만 값이 변하는 일반 멤버 변수는 가질 수 없습니다. JDK 1.8 이전 버전에서는 몸통(구현부)이 있는 일반 메소드를 가질 수 없었으나 JDK 1.8 버전부터는 디폴트 메소드와 정적 메소드 구현이 가능해졌습니다. 인터페이스는 inteface 키워드를 통해 선언하며 기능을 물려받는 클래스는 추상 클래스를 물려받는 것과는 다르게 상속(extends)이 아닌 구현(implements)한다고 표현합니다.

interface 인터페이스명 {
	
    // 상수 선언
    public static final 타입 상수이름 = 값;
    
    // 추상 메소드 선언
    public abstract 타입 메소드명();
	
    // 디폴트 메소드
    default 타입 메소드명();
    
    // 정적 메소드
    static 타입 메소드명() {
    	// 구현부
    }
}

위와 같이 상수, 추상 메소드, 디폴트 메소드, 정적 메소드를 구성원으로 가질 수 있습니다.

인터페이스를 사용하는 이유

인터페이스를 사용하면 구현하는 클래스에게 일부 구성원 구현에 대해 강제할 수 있습니다. 추상 메소드를 오버라이딩을 통해 구현해야 하며 인터페이스가 제공하는 정적 메소드를 무조건 사용해야 합니다. 이는 자바의 다형성을 극대화하여 코드의 생산성을 높이고 프로그램 유지, 보수의 용이성을 높이기 위함에 있습니다.

인터페이스의 구현

인터페이스도 추상 클래스와 마찬가지로 혼자서는 객체를 생성할 수 없습니다. 즉 추상 클래스가 하위 클래스에서 상속을 통해 추상 메소드를 완성시키는 것과 같이 인터페이스도 구현 클래스에서 추상 메소드를 완성시킵니다.

class 클래스명 implements 인터페이스명 {
	
    // 인터페이스를 구현하면 인터페이스에 선언된 추상 메소드를 반드시 구현해야 합니다.
    
}

인터페이스와 추상 클래스의 차이

얼핏 봤을 때 인터페이스와 추상 클래스는 구현(implements)하고, 상속(extends)한다는 키워드만 제외하고 보면 둘 다 추상 메소드를 갖으며 스스로 객체를 생성할 수 없다는 점에서 같아 보입니다. 하지만 자바에서는 추상 클래스의 다중 상속을 막아두었기 때문에 인터페이스를 통해 다중 상속을 할 수 있고 구현하는 모든 클래스에 대해 특정한 메소드를 반드시 구현하도록 강제할 수 있습니다.

반응형
반응형

자바 추상 클래스

  추상 클래스는 하나 이상의 추상 메소드를 포함한 클래스를 말합니다. 추상 클래스는 생성 시 클래스명 앞에 'abstract'라는 키워드를 붙여 해당 클래스가 추상 클래스임을 나타냅니다. 추상 클래스의 기본 조건이 추상 메소드를 하나 이상 포함하는 것이라고 했는데 추상 메소드도 마찬가지로 리턴 타입 앞에서 abstract를 붙여 추상 메소드임을 나타냅니다.

public abstract class 클래스명 {
	
    public abstract void 메소드명(); // 구현부({})는 작성하지 않고 남겨둡니다.
    
}

추상 클래스와 추상 메소드는 위의 코드처럼 작성합니다.

// 추상클래스
public abstract class Animal {
	
	public abstract void move();
	
}

// 위의 추상클래스 Animal을 구현한 Man 클래스
class Man extends Animal {
	
	@Override
	public void move() {
		System.out.println("두 발로 이동합니다.");
	}
}

// 위의 추상클래스 Animal을 구현한 Bird 클래스
class Bird extends Animal {
	
	@Override
	public void move() {
		System.out.println("날아서 이동합니다.");
	}
}

위 코드를 보면 추상 클래스 하나와 추상 클래스를 상속받은 두 개의 클래스가 있습니다. 동물은 모두 이동을 하지만 이동하는 방법에는 차이가 있습니다. 사람은 두 발로 걸어서 이동하고 새는 날아서 이동하지만 둘 다 '이동' 한다는 것은 다르지 않기 때문에 추상 클래스 Animal에서 추상 메소드 move()를 선언하여 Man과 Bird 클래스가 상속받아 클래스에 맞게 오버라이딩을 해 준 것입니다.

상속을 받으면 부모 클래스가 갖고 있는 추상 메소드를 반드시 오버라이딩 해야 합니다.

추상 클래스를 상속받은 클래스는 부모 클래스가 갖고 있는 추상 메소드를 받드시 오버라이딩 해야 합니다. 그렇지 않으면 위의 이미지 17번째 줄처럼 클래스명에 빨간줄이 생기면서 오류가 발생하는 것을 확인할 수 있습니다.

반응형

'Java > Java 객체 지향' 카테고리의 다른 글

[Java] DTO란?  (0) 2022.02.08
[Java] 자바 MySQL 연동  (0) 2021.05.13
[Java] 데이터 베이스를 연동한 DButil 클래스 만들기  (0) 2021.01.05
[Java] 인터페이스(Interface)  (0) 2020.12.28
반응형

오라클 테이블 구조 변경

  테이블을 생성하고 보면 필요한 컬럼을 생성하지 않았거나 컬럼의 데이터 타입이나 길이가 잘못되어 변경해야 할 경우가 생기고 불필요한 컬럼을 제거해야 할 경우도 생깁니다. 이럴 때 alter table 문을 사용하여 컬럼을 추가, 수정, 삭제할 수 있습니다.

컬럼 추가, 변경, 삭제 방법과 예시

<컬럼 추가>

alter table 테이블명 add 컬럼이름 데이터타입(길이) 제약조건;
예) alter table departmend add dno number(2) constraint department_nn not null;

<컬럼 변경>

alter table 테이블명 modify 컬럼이름 데이터타입(길이) 제약조건;
예) alter table departmend modify dno number(2) constraint department_nn not null;

<컬럼 삭제>

alter table 테이블명 drop culumn 컬럼이름;
예) alter table department drop culumn dno;
반응형

'DataBase > Oracle' 카테고리의 다른 글

[오라클] 테이블 생성 / 제약조건  (0) 2020.12.25

+ Recent posts