Java 기초 (OOP, Variable, Method)

yihyun·2024년 7월 23일

Java

목록 보기
1/12
post-thumbnail

Java 국비학원 (구디아카데미) 학습 기록

Java란 무엇인가

Java언어의 주요 특징

  • Java는 객체지향언어이다.
  • 이식성이 높다.
  • OPEN SOURCE 라이브러리가 풍부하다.

Java를 처음 검색해보면 객체지향프로그래밍(OOP)라는 말이 가장 먼저 나온다.

공부를 진행하다 보면 조금은 이해가 가지만 처음 Java에 접근하는 사람의 입장에서는 무슨 말인지 이해하기가 어렵다.

그렇다면 객체지향프로그래밍란 무엇인가?

객체 지향 프로그래밍 (Object-Oriented Programming, OOP)은 프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고, 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.

객체지향을 사용하면 무언가를 개발할 때 시작부터 끝까지 모든 코드를 만드는 것이 아닌 이미 만들어진 객체를 가져와 나의 코드에 사용하고, 그 중 일부만 조금 변경하는 등의 작업을 통해 더욱 편리하게 코드를 구성할 수 있게된다.

만약 고양이와 강아지를 만들어야 한다면 공통적으로 존재하는 몸통, 다리는 다른 사람이 설계한 코드를 사용하고 변화가 필요한 머리와 꼬리 부분만 직접 코드를 구성해 개발하는 것이다.

즉 객체지향언어인 Java는 "남의 것을 사용하기 편하게" 쓸 수 있도록 설계된 언어이고, 이러한 관점으로 Java를 바라봐야 한다.

변수(Variable)란?

변수(Variable)는 데이터를 담는 것으로 무언가를 담는 컵과 같다.

담는 용도에 따라 컵의 종류와 크기, 모양이 달라지듯이 변수 또한 용도에 따라 선언되는 타입이 달라진다.

물을 담을 때 물이 오염되거나 흘리는 것 없이 담기 위해선 컵이 필요하듯이 데이터가 오염되거나 유실되지 않게 담기 위해서는 변수가 필요한 것이다.

실제 변수 선언 시 타입은 아래와 같다.

  • boolean (논리자료형) : true / false
  • String (문자열 클래스)
  • byte (1바이트의 정수형 자료 타입)
  • char (2바이트의 문자형 자료 타입)
  • int (4바이트의 정수형 자료 타입)
  • long (8바이트의 정수형 자료 타입)
  • float (4바이트의 실수형 자료 타입)
  • double (8바이트의 실수형 자료 타입)

변수에 타입을 선언하는 이유는 타입별로 크기가 다르기 때문이다.
만약 int에 저장할 수 있는 범위의 정수를 long 타입으로 만들어 사용한다면 그만큼 많은 공간을 사용하고 그로인해 효율이 낮아지기 때문에 사용하는 변수에 적절한 타입을 지정해주어야 한다.

변수의 타입 선언 외에도 다양한 특징들을 살펴보자

scope
변수는 선언된 곳 보다 바깥쪽 영역에서는 사용이 불가능하다.

일상생활에서 예를 들어보면 우리가 카페에 개인 텀블러를 가지고 들어가는 것은 가능하지만 매장 컵을 이용한 후 그 컵을 가지고 나오는건 불가능하듯 변수 또한 안에서 선언된 것은 밖에서 사용이 불가능하다.

이러한 기준은 { } 안에 있는 변수를 기준으로 생각하면 된다.

casting
변수는 타입의 변환(casting)이 가능한데, 변환에는 묵시적, 명시적 총 2가지가 있다.

먼저 묵시적 형변환은 작은 것에서 큰 것으로 변환될 때 묵시적으로 형변환이 이루어지는 것을 말한다.

예를들어 작은컵에 있는 음료를 큰 컵으로 옮겨 담을때에는 별다른 문제없이 옮겨 담을 수 있다.
하지만 큰 컵에 있는 음료를 작은 컵으로 옮겨 담기 위해선 별도의 주의가 필요한데 이게 바로 명시적 형변환이다.

명시적 형변환은 대입하고자 하는 변수 앞에 (변환하는 타입)을 작성해주면 된다.

int intVal;
long longVal = 500;

inVal = (int) longVal;

자료형에 담을 수 있는 최소 ~ 최대 값을 구하고 싶다면 자료형.MIN_VALUE, 자료형.MAX_VALUE를 사용해주면 된다.

System.out.println(Integer.MIN_VALUE) // int의 최소 값
System.out.println(Integer.MAX_VALUE) // int의 최대 값

메소드(Method)란?

변수가 데이터를 담는 것이라면 메소드는 동작을 실행해주는 것으로 반환타입, 매개변수, 메소드 이름, 반환문으로 구성된다.

예를들어 토스터기가 있다고 가정해보자
토스터기는 기계 안에 빵을 넣고 빵을 구워서 구워진 빵을 다시 돌려주는 형태로 동작한다.

이를 프로그램 관점에서 보면 매개변수는 빵이 될 것이고, 메소드 이름은 토스터기, 반환은 구워진 빵이 될 것이다.

이를 메소드로 만든다면 아래와 같이 만들 수 있다.

static String toaster(String input) {
	System.out.println(input + "이 구워진다");
    return "구워진" + input;
}

위에 만든 toaster() 메소드는 반환타입(return)이 있는 메소드로 이를 사용하기 위해서는 이 구워진 빵을 받아주는 접시가 필요하다.

public static void main(String[] args) {
	String dish = toaster("피자빵");
    System.out.println(dish);
}

위와 같은 형태를 가진 메소드는 매개변수와 반환이 있는 메소드이다.

그렇다면 매개변수나 반환이 없거나 또는 둘 중 하나만 있는 메소드는 어떻게 될 것인가?


String 번호표기계(){
	return 번호표;
} // 매개변수가 없는 메소드

String 저금통(int coin){
	System.out.println(coin + " 저금");
} // 반환문이 없는 메소드

void 호출벨(){
	System.out.println("호출");
} // 매개변수와 반환문이 없는 메소드

이렇게 반환타입이 있는가, 매개변수가 있는가로 인해서 다양한 메소드를 만들어낼 수 있다.

JDK(Java Development Kit) 와 IDE(Integrated Development Environment)

JDK (Java Development Kit) 는 Java 개발과 Compile을 위한 도구이다.

IDE는 프로그램 개발에 관련된 모든 작업(코딩, 컴파일, 실행, 배포)을 하나의 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어로 쉽게 Java 개발을 하기 위한 환경이 갖춰져 있는 도구라고 생각하면 된다.

IDE의 종류에는 Eclipse, Intelli-J, NetBeans 등이 있다.

profile
개발자가 되어보자

0개의 댓글