[내일배움캠프] - DAY7 자바에 대해 알아보자-1

2026. 1. 8. 20:25·TIL & 트러블 슈팅

자바(Java)

자바(Java)는 1991년 제임스 고슬링을 비롯한 선 마이크로시스템스 연구원들이 개발한 언어입니다. 아래에선 자바의 장점과 자바의 여러가지 특징들에 대해서 한번 알아보겠습니다.

 

자바의 장점

  • 객체 지향 언어이기에 유지보수가 쉽고 정확성이 좋습니다.
  • 프로그램이 안정적입니다.
  • 풍부한 기능을 제공하는 오픈 소스 입니다.

 

자바의 단점

  • Java는 실행이 될 때 인터프리터 방식으로 실행되며 이로인해 C, C++ 언어에 비해 성능이 떨어질 수 있습니다.
  • Java는 다른 언어들에 비해 메모리 소비가 많을 수 있습니다.
  • Java는 모바일 애플리케이션 개발에 많이 사용되었지만, 최근에 사용되는 코틀린(Kotlin), 스위프트(Swift) 와 같은 더 빠르고 효율적인 언어들이 등장하면서 Java의 역할이 많이 감소하였습니다.

자바로는 어떤 것을 만들 수 있을까?

 

웹 서버

웹 사이트를 운영하려면 서버(Server)가 반드시 필요하게 됩니다. 사용자가 웹에 접속해서 뉴스나 메일 서비스를 요청하면 서버에 그 요청이 전달되고 요청 결과를 응답으로 받습니다. 이 때 사용자에게 요청을 받아 응답을 주는 프로그램이 서버입니다. 우리가 흔히 이용하는 사이트가 자바로 개발한 웹 서버 프로그램으로 운영되고 있습니다.

 

안드로이드 앱

우리가 사용하는 스마트폰중에는 ‘안드로이드폰’ 이 있습니다. 자바는 안드로이드 개발의 주요 언어로 사용됩니다. 최근에는 코틀린(Kotlin), 스위프트(Swift) 와 같은 언어들이 더 많이 사용되고 있는 추세이지만 Java도 여전히 안드로이드 개발에서 사용됩니다.

 

게임 개발

게임을 좋아하시는 분들이라면 한번쯤 "마인크래프트" 라는 게임을 들어보신적이 있을겁니다. 이 ‘마인크래프트’ 라는 게임은 자바로 개발 되었습니다. 주로 게임을 만들 때에는 C++ 및 C 등의 언어를 주로 사용하지만 ‘마인크래프트’와 같이 자바로도 게임을 개발 할 수 있습니다. 이외에도 자바로 개발된 웜즈(Worms), 테라리아(Terraria), 앵그리버드(Angry Birds) 라는 게임들이 있습니다.


변수

우리는 살면서 친구들과 아니면 혼자서 게임을 할 때가 있습니다. RPG게임으로 예를들었을 때 캐릭터의 레벨이 있습니다. 레벨은 시간이 지나거나 우리가 게임의 퀘스트나 몬스터를 잡으면 오르는 시스템으로 거의 대부분의 모든 게임들이 해당 시스템을 이용하고 있습니다. 이 처럼 우리가 프로그래밍을 할 때 변할 수 있는 값을 변수 라고 합니다. 아래에서는 Java로 변수를 선언하고 값을 대입하는 방법을 알아볼까 합니다.

 

변수를 선언하고 값 대입하기

위에서 설명했듯이 게임에 레벨 값을 저장 하려면 저장할 공간이 필요합니다. 이 공간의 이름이 바로 변수입니다. 캐릭터의 레벨을 저장하려면 정수의 형태를 사용해야하고 닉네임을 저장 할려고 한다면 문자형을 사용해야합니다. 이 형태를 변수의 “자료형” 이라고 합니다.

int level;
level = 10;

 

변수 초기화 하기

위의 코드에서는 우리가 level이라는 변수를 먼저 선언 한 후 ‘10’ 이라는 값을 대입하였습니다. 변수를 초기화할 때는 위와 다르게 변수를 선언함과 동시에 ‘10’ 이라는 값을 대입 해줘야합니다.

package chapter2;

public class Character {
	public static void main(String[]args) {
		int level = 30;
		System.out.println(level);
	}
}

변수를 초기화 하는것은 상황마다 다르기 때문에 변수를 선언과 동시에 초기화를 해도되고 선언 후에 대입할 값이 정해지는 시점에 초기화를 해도 됩니다. 그러면 변수를 왜 초기화할까요? Java에서 변수를 초기화하는 이유는 안정적인 코드 실행, 컴파일러 오류 방지, 의도 명확화 등의 이유에서 초기화를 하게 됩니다.


변수 이름을 정할 때 주의할 점

자바에서는 변수 이름을 지정할 때 용도에 맞게 지정해야 합니다. 이를 잘 활용하면 코드의 가독성 및 유지 보수성이 높아지고, 그룹으로 프로젝트를 제작할 때 팀원들 간의 협업이 원활해집니다.

  • 변수 이름은 영문자(대,소문자)나 숫자를 사용할 수 있고, ‘$’, ’_’ 와 같은 특수문자를 사용할 수 있습니다. (ex : _number, $won, count300, character_level)
  • 변수의 이름은 숫자로 시작할 수 없습니다. (ex : 31day(X), 2024year(X))
  • 자바에서 이미 사용중인 예약어를 사용할 수 없습니다. (ex : if, for, int, whlie, . . .)
  • 자바에서는 변수명을 작성할 때 주로 카멜표기법(Camel case)을 사용합니다. (ex : userNickName, totalCount, userLevel)

상수

상수(Constant)는 값이 변할 수 있는 변수(Variable)와 달리, 한 번 저장하면 프로그램이 종료될 때까지 변경할 수 없는 고정된 값을 의미합니다. 즉, 변수는 실행 중에 값이 바뀔 수 있지만, 상수는 처음에 정한 값이영구적으로 유지되는 저장 공간 입니다.

 

상수 선언하기

final double PI = 3.14;
final int MAX_NUMBER = 100;

원의 넓이를 구할 때 원주율을 3.14라고 정했다면 이 값은 변하지 않는 값입니다. 이외에도 주민등록번호나 1년이 365일 이라는 것은 변하지 않기에 이럴 때 상수를 선언합니다. 상수를 선언 할 때에는 final 예약어를 사용하여 선언합니다. 상수 이름은 대문자로 작성하며, 단어 사이에 언더스코어(_)를 넣는 것이 관례입니다. 한 번 선언한 상수는 변하지 않기 때문에 선언과 동시에 값을 지정하는 것이 좋습니다.

public class Main {
    public static void main(String[] args) {
	    final double PI = 3.14;
			final int MAX_NUMBER = 100;
			
			MAX_NUMBER = 0 // 사용하기 전에 초기화를 하지 않으면 오류가 발생합니다.
			
			System.out.prinln(PI);
			System.out.prinln(MAX_NUMBER);
			
			/*MAX_NUMBER = 1000; 위에서 이미 final 예약어로 'MAX_NUMBER'을 
			상수로 선언하여 값을 변경할 수 없습니다. (*오류발생*) */
    }
}


리터럴(Literal)

자바에서 리터럴(Literal)은 프로그램에서 사용하는 모든 숫자, 문자, 논리값을 의미합니다. 즉 소스 코드에 직접 작성된 데이터 값으로, 특정 데이터 타입에 따라 정해진 형식을 따릅니다. 예를 들어 10, "Hello", true 같은 값이 바로 리터럴입니다. 이 값들은 변수나 상수에 저장될 수 있으며, 자바 프로그래밍에서 매우 자주 사용되므로 상수와 함께 이해하면 훨씬 쉽게 다가갈 수 있습니다.

 

리터럴 종류

  • 정수 리터럴
  • 정수 값을 나타내며, 기본적으로 int 타입입니다.

 

  • 실수 리터럴
  • 소수점이 있는 실수를 나타내며, 기본적으로 double 타입입니다.

 

  • 문자 리터럴문자: 'A', '9', '#'
  • 유니코드: '\\u0041' (유니코드 값으로 'A'를 표현)
  • 작은 따옴표(’)로 묶인 단일 문자입니다.

 

  • 문자열 리터럴(ex: "Hello world", "Java", "12345")
  • 큰 따옴표(”)로 묶인 문자열입니다.

 

  • 논리 리터럴
  • 참(true) 또는 거짓(false)을 나타냅니다

 

  • Null 리터럴
  • 객체 참조 변수가 아무것도 참조하지 않을 때 사용하는 리터럴입니다.

요약

  • 리터럴은 프로그램에서 사용하는 모든 숫자, 문자, 논리값을 일컫습니다.
  • 정수, 실수, 문자, 문자열, 논리, null 리터럴 등 다양한 종류가 있습니다.
  • 각 리터럴은 Java의 데이터 타입에 따라 특정 형식을 따릅니다.

항과 연산자

연산에 사용되는 기호를 연산자(operator)라고 하며, 연산에 사용 하는 값은 항(operand) 이라고 합니다. 3+3 에서 3은 항이고 ‘+’ 는 연산자에 속합니다 연산자는 항의 갯수에 따라 단항 연산자, 이항 연산자, 삼항 연산자로 나뉩니다. 아래에서는 연산자의 종류에 대해서 알아보겠습니다.

 

대입 연산자 설명 예시

단항 연산자 항이 한 개인 연산자 입니다. ++number
이항 연산자 항이 두 개인 연산자 입니다. number1 + number2
삼항 연산자 항이 세 개인 연산자 입니다. (5>3) ? 1 : 0;

 

Java의 기본 연산자는 다양한 연산을 수행하기 위해 제공 되며 분류 하자면 산술 연산자, 비교 연산자, 대입 연산자, 비트 연산자, 논리 연산자, 증감 연산자, 조건(삼항) 연산자, 기타 연산자로 분류가 됩니다. 이번 시간에는 해당 연산자들의 사용법을 알아보려고 합니다.


연산자의 종류

 

산술 연산자

숫자를 계산 할 때 사용합니다.

연산자 설명 예시

+ 두 항을 더합니다. 3 + 3
- 앞에 있는 항에서 뒤에 항을 뺍니다. 3 - 3
***** 두 항을 곱합니다. 3 X 3
/ 앞에 있는 항에서 뒤에 항을 나누어 몫을 구합니다. 3 / 3
% 앞에 있는 항에서 뒤에 항을 나누어 나머지를 구합니다. 3 % 3

 

비교 연산자

두 값을 비교하여 결과 논리값 참(true) 혹은 거짓(false) 으로 반환합니다.

연산자 설명 예시

> 왼쪽 항이 크면 참, 아니면 거짓을 반환합니다. num > 3;
< 왼쪽 항이 작으면 참, 아니면 거짓을 반환합니다. num < 3;
>= 왼쪽 항이 오른쪽 항보다 크거나 같으면 참, 아니면 거짓을 반환합니다. num >= 3;
<= 왼쪽 항이 오른쪽 항보다 작거나 같으면 참, 아니면 거짓을 반환합니다. num <= 3;
== 두 개의 항이 같으면 참, 아니면 거짓을 반환합니다. num == 3;
!= 두 개의 항이 다르면 참, 아니면 거짓을 반환합니다. num != 3;

 

대입 연산자

변수에 값을 대입 하거나 계산 결과를 대입할 때 사용합니다.

연산자 설명 예시

+= 두 항의 값을 더해서 왼쪽 항에 대입합니다. num1 += 3; 은
num1 = num1 + 3; 과 같습니다.
-= 왼쪽 항에서 오른쪽 항을 뺀 후 그 값을 왼쪽 항에 대입합니다. num1 -= 3; 은
num1 = num1 - 3; 과 같습니다.
*= 두 항의 값을 곱하여 왼쪽 항에 대입합니다. num1 *= 3; 은
num1 = num1 * 3; 과 같습니다.
/= 왼쪽 항을 오른쪽 항으로 나누어 그 몫을 왼쪽 항에 대입합니다. num1 /= 3; 은
num1 = num1 / 3; 과 같습니다.
%= 왼쪽 항을 오른쪽 항으로 나누어 그 나머지를 왼쪽 항에 대입합니다. num1 %= 3; 은
num1 = num1 % 3; 과 같습니다.
<<= 비트를 왼쪽으로 이동시키고 그 값을 왼쪽 항에 대입합니다. num1 <<= 3; 은
num1 = num1 << 3; 과 같습니다.
>>= 비트를 오른쪽으로 이동시키고 그 값을 왼쪽 항에 대입합니다. (왼쪽에 채워지는 비트 값은 부호 비트와 동일합니다.) num1 >>= 3; 은
num1 = num1 >> 3; 과 같습니다.
>>>= 비트를 오른쪽으로 이동시키고 그 값을 왼쪽 항에 대입합니다. (왼쪽에 채워지는 비트 값은 0 입니다.) num1 >>>= 3; 은
num1 = num1 >>> 3; 과 같습니다.
&= 두 항의 & 비트 연산 후 그 값을 왼쪽 항에 대입합니다. num1 &= num2; 는
num1 = num1 & num2; 와 같습니다.
|= 두 항의 | 비트 연산 후 그 값을 왼쪽 항에 대입합니다. num1 |= num2; 는
num1 = num1 | num2; 와 같습니다.
^= 두 항의 ^ 비트 연산 후 그 값을 왼쪽 항에 대입합니다. num1 ^= num2; 는
num1 = num1 ^ num2; 와 같습니다.

 

비트 연산자

비트 수준에서 연산을 수행합니다.

연산자 설명 예시

& ( AND ) 두 개의 비트 값이 모두 1인 경우에만 연산 결과 값이 1이 됩니다. 5 & 3
| ( OR ) 두 개의 비트 값중 하나라도 1이면 연산 결과 값이 1이 됩니다. 5 | 3
^ ( XOR ) 두 개의 비트 값이 같으면 0, 다르면 1이 됩니다. 5 ^ 3
~ ( 반전 ) 비트 값 0은 1로, 1은 0으로 바꿔줍니다. ~ 3
<< 왼쪽으로 비트를 이동시키는 연산자입니다. int num = 5;
num << 3;
>> 오른쪽으로 비트를 이동시키는 연산자 입니다. int num = 5;
num >> 3;
>>> >> 연산과 동일하게 비트를 오른쪽으로 이동시키지만 왼쪽에 채워지는 비트 값이 부호 비트와 상관없이 무조건 0이 됩니다. int num = 5;
num >>> 3;

 

조건(삼항) 연산자

단일 표현식으로 조건에 따라 값을 선택합니다.

<형식 : 조건식 ? 참일 때 값 : 거짓일 때 값>

연산자 설명 예시

조건식 ? 결과1 : 결과2; 조건식이 참(true)이면 결과1, 조건식이 거짓(false)이면 결과2 가 선택됩니다. int num = (5 > 3) ? 10 : 20;

 

논리 연산자

논리 값을 조합하거나 반전할 때 사용합니다.

연산자 설명 예시

&& 두 항이 모두 참인 경우에만 결과 값이 참입니다. 그렇지 않은 경우는 거짓입니다. boolean val = ( 13 > 3 ) && ( 7 > 3 );
|| 두 항 중 하나의 항만 참이면 결과 값은 참입니다. 두 항이 모두 거짓이면 결과 값은 거짓입니다. boolean val = ( 7 > 3 ) || ( 7 < 2 );
! 단항 연산자입니다. 참인 경우는 거짓으로 바꾸고, 거짓인 경우는 참으로 바꿉니다. boolean val = !( 7 > 3 );

 

증감 연산자

변수 값을 1씩 증가시키거나 감소 시킬 때 사용합니다.

연산자 설명

++i (전위 증가) i의 값을 1증가 시킨 후 연산을 수행합니다.
i++ (후위 증가) 먼저 연산을 수행한 후 i의 값을 1증가 시킵니다.
--i (전위 감소) i의 값을 1감소 시킨 후 연산을 수행합니다.
i-- (후위 감소) 먼저 연산을 수행한 후 i의 값을 1감소 시킵니다.

[ 오늘 배운 학습 ]

1. 자바가 무엇일까?

2. 변수

3. 상수와 리터럴

4. 자바의 연산자

 

[ 다음 학습 계획 ]

1. 조건문과 반복문

2. 접근제어자

3. 클래스와 객체

4. 생성자

5. 함수

6. 배열

'TIL & 트러블 슈팅' 카테고리의 다른 글

[내일배움캠프] - DAY9 플로우차트  (0) 2026.01.12
[내일배움캠프] - DAY8 자바에 대해 알아보자-2  (0) 2026.01.08
[내일배움캠프] - DAY6 Vim 기반 Git 사용법  (0) 2026.01.06
[내일배움캠프] - DAY5 협업을 위한 GIT 알아보기  (0) 2026.01.06
[내일배움캠프] - DAY4 효율적으로 AI 활용하기  (0) 2026.01.06
'TIL & 트러블 슈팅' 카테고리의 다른 글
  • [내일배움캠프] - DAY9 플로우차트
  • [내일배움캠프] - DAY8 자바에 대해 알아보자-2
  • [내일배움캠프] - DAY6 Vim 기반 Git 사용법
  • [내일배움캠프] - DAY5 협업을 위한 GIT 알아보기
N_HYUN
N_HYUN
안녕하세요! 현이의 개발 공부방입니다.
  • N_HYUN
    현이의 개발 공부방
    N_HYUN
  • 전체
    오늘
    어제
    • 분류 전체보기 (29)
      • FrontEnd (0)
      • BackEnd (0)
        • Java (0)
      • DataBase (1)
      • TIL & 트러블 슈팅 (24)
      • Etc (4)
        • Theoretical Computer Scienc.. (1)
        • Web & CS (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
N_HYUN
[내일배움캠프] - DAY7 자바에 대해 알아보자-1
상단으로

티스토리툴바