본문 바로가기

프로그래밍 언어 기초/JAVA

chapter 1. 자바 변수와 연산자 그리고 메서드

1.1. 변수(Variable)이란?

 컴퓨터 메모리에 자료(Data)를 저장하기 위한 공간으로 자료형(Type, )에 따라 그 크기가 다릅니다. 우리가 사용하는 컴퓨터는 기술의 발전으로 커다란 양의 데이터도 거뜬히 저장하고 계산하는 데 무리가 없지만, 그럼에도 컴퓨터도 효율적으로 사용하기 위해서는 데이터를 잘 분류해야합니다. 왜냐하면, 기술이 발전한 만큼 우리 인류가 하루에만 발생시키는 데이터의 양도 커졌기 때문입니다. 방안에 어질러진 물건을 잘 정리하려면 각 물건의 종류에 맞는 상자를 준비해 정리하면 빠르게 정리할 수 있는 것처럼 프로그래밍 언어에서도 이러한 데이터의 저장과 분류는 매우 중요합니다.

 

 여기서 자료형이란 컴퓨터 과학과 프로그래밍 언어에서 데이터(자료, Data)를 식별하기 위한 분류를 일컫습니다. 자료형은 크게 primitive typereference type 으로 나뉘는데 자바에서는 두 분류가 명확한 차이점이 있습니다. 앞서 변수를 물건을 정리하기 위해 상자에 비유했었습니다. 물건을 정리하는 상자도 아무것도 없다면 그안에 공기라도 차있는 것처럼 변수도 개발자가 아무런 값을 주지 않을 수도 있습니다. 그럴 경우 자바에서는 자동으로 primitive typereference type에 각각 기본 값을 설정해줍니다. 이 때, 두 자료형은 기본 값으로 서로 다른 값을 부여받는데 이러한 점이 두 자료형의 가장 큰 차이점이 됩니다.

 

 먼저 primitive type은 자료형에 따라 설정된 기본 값을 가질 수 있습니다. 예를 들면 이렇습니다. 자료형이 int라는 변수가 있습니다. 여기서 int라는 자료형은 수학에서의 정수 값을 가지는 데이터를 분류하는 기준인데, 개발자가 아무런 값을 주지 않으면 0을 부여 받습니다. 또 만약 자료형 boolean은 프로그래밍 언어에서 논리 값이라고 부르는 자료형인데 값이 true/false 단 두 종류 뿐입니다. 좋고 싫음이 확실한 자료형이죠. 이 경우 기본 값은 false를 부여 받습니다. 반면에 reference type은 개발자가 아무런 값을 부여하지 않으면 기본 값으로 null을 부여합니다. 여기서 null 이란 '값이 없음'을 나타내는 영어 단어로, 값이 존재하지 않는다는 뜻에 가까우며, 값이 0조차 아니라는 뜻을 가지고 있습니다.

 

각 자료형에 대한 값의 범위와 기본 값은 아래의 표에 정리하였습니다 😀

 

  자료형(Type) 비트수 기본값
논리형 boolean 1bit true/false false
정수형  byte 8 -2^7~2^7-1 
(-128~127)
0
정수형 short 16  -2^15~2^15-1
(-32768~32767)
0
정수형 int 32 -2^31~2^31-1
(-2147483648~2147483647)
0
정수형 long 64  -2^63~2^63-1
(-9223372036854775808 ~ 9223372036854775807)
0
실수형 float 32  소수점 아래 9자리까지 0.0
실수형 dobule 64 소수점 아래 18자리까지 0.0
문자형 char 16  \u000 ~ \uffff 
(0 ~ 2^16-1)
\u0000
reference type 사용자 정의 ? ? null

 

 

 

이제 자바의 변수형에 대해 알아보았으니, 실제로 어떻게 사용하는지 알아보도록 할까요?

 

 

public class Start{
	public static void main(String[] args) {
    	int intValue = 13;
        boolean booleanValue = true;
        
        // 자바에서 값의 출력은 
        // System.out.println(출력할 값); 
        // 이렇게 사용합니다!
        
        System.out.println(intValue); // 13
        System.out.println(booleanValue); // true
        
        // primitive type은 직접 값을 입력하여 출력할 수도 있어요!
        System.out.println(11.11f); // float 형 데이터의 출력!
    
    }
}

 

1.2. 메소드(Method)?

 개발자가 컴퓨터에게 사과와 물을 섞어서 사과 주스를 만들어줘, 딸기와 설탕을 섞어서 딸기 잼을 만들어줘와 같은 작업을 지시할 수는 없을까요? 정답은 가능하다! 입니다. 단순히 컴퓨터에 데이터를 저장만 한다면 다른 유의미한 데이터는 만들 수 없겠죠? 만약 이것이 불가능했다면, 비밀번호 같은 민감한 정보를 담았을 때, 다른 사람들이 알아보기 힘든 형태로 변환하는 일도 어려웠을 것입니다. 이처럼 자바에서는 수학의 함수와 같이 여러 데이터를 수학적 계산이나 특정 작업을 통해 다른 유의미한 데이터로 재생산하는 것이 가능하고, 이것이 바로 메소드입니다.

 

메소드는 다음 네가지 부분으로 구성됩니다.

 

접근제한자, 반환타입, 함수명, 매개변수

 
public class Main {

	// 자바는 메인 메소드에서 클래스나 메소드를 사용할 수 있습니다.	
	// 메인 메소드도 당연히 메소드의 일종입니다. 
	public static void main(String[] args) {
		int value1 = 30;		

	}

	// 자바의 메소드는 클래스 내부에 선언하고 사용할 수 있습니다.
	// 자바의 메소드는 접근제한자, 반환타입, 함수명, 매개변수를 작성할 수 있고, 반환타입과 함수명은 필수요소입니다.
	// static 이나 매개변수를 받아서 계산을 수행할지 등을 정의할 수 있습니다.
	
	// 접근제한자는 public, 반환타입은 void(없음)이고, 함수명은 function1인 메소드를 선언했다.
	public void function1(int value1, int value2) {		
		System.out.println(value1+value2);
	}
	
	// 반환타압이 int인 function2를 선언
	public int function2(int value1, int value2) {
		int result = value1+value2; // 매개변수를 더한 값을
		return result; // 돌려준다.
	}
	int function3() {
		return 1;
	}

}