JAVA

[JAVA] 변수(Variable) / 자료형 / 연산자(Operator)

8기_이지정 2024. 6. 4. 13:51

변수(Variable)


더보기

 java project 생성

Debug, Java Open

create a Java project

Finish

class 생성

class 설정 후 Finish

생성된 .java

// 실행 테스트

package com.beyond.variable;

/* 
 * 주석(Comment)
 * 	- 소스 코드와는ㄴ 무관하고 코드로 인식되지 않음
 * 	- 주로 코드에 대한 설명을 작성할 때 사용
 */

// 한 줄 주석

// 클래스 명은 자바 파일명과 동일해야 함
public class Application {
	
	// main 메소드는 프로그램의 시작점으로
	// java.exe가 Application.class를 실행시킬 때 제일 먼저 실행되는 메소드
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("실행 테스트");


	}

}
실행 화면

 


메모리 사용공간

 

1. 변수

  • 컴퓨터 메모리(RAM)에 값을 저장하기 위해 할당받는 공간
  • 프로그램에 의해서 할당받은 공간의 값이 수시로 변경될 수 있기 때문에 변수라고 부름

 

2. 변수의 선언

  • 변수를 사용하기 위해서는 먼저 변수를 선언해야 함
  • 변수의 선언은 어떤 타입의 데이터를 저장할 것인지 그리고 변수의 이름이 무엇인지 기술해야 
  • 변수를 선언하는 구문은 자료형 변수명;  
// 정수형 변수 선언
byte bnum;
short snum;
int inum;
long lnum;

// 실수형 변수 선언
float fnum;
double dnum;

// 논리형 변수 선언
boolean isTrue;

// 문자형 변수 선언
char ch;

// 문자열 변수 선언
String str;

 

3. 변수의 명명 규칙

  • 영어 대소문자가 구분되며 문자 수의 제한이 없음
  • 숫자로 시작 불가
  • 특수문자는 '_'와 '$'만 허용
  • 여러 단어로 조합된 변수의 이름은 첫 시작 글자는 소문자로 하고 조합되는 단어의 첫 글자를 대문자로 하는 것이 관례
  • 의미 있는 이름을 지어주는 것이 좋음
  • 예약어를 사용 불가 (class, int, new, null 등)

 

4. 변수의 값 대입

  • 변수에 값을 저장할 때는 대입 연산자(=)를 사용
int age;

// 한 개의 변수는 한 개의 데이터만 저장 가능
// 연속으로 값을 저장하면 마지막에 대입한 값이 저장
age = 10;
age = 20;

 

 

5. 변수의 초기화

  • 변수를 선언하고 처음 저장되는 값을 초기값, 변수에 초기값을 대입하는 것
  • 지역변수(메소드 안에 선언된 변수)를 사용하려면 반드시 초기화
// 선언 후 초기화
int age;

age = 100;

// 선언과 동시에 초기화
int age = 100;

 

 

 

6. 변수의 사용

  • 변수는 출력문이나 연산식 내부에서 변수에 저장된 값을 출력하거나 연산할 때 사용
int age = 100;

System.out.println("나이 : " + age);

 

 

 

 

 

자료형


1. 자료형

  • 자료형은 저장될 데이터의 타입을 뜻하며 저장하고자 하는 값의 종류에 맞게 기술

 

2. 기본 타입

  • 정수, 실수, 문자, 논리 타입
  • 기본 타입은 정해진 메모리 크기(byte)를 사용해 값을 저장하는데 바이트 크기가 클수록 표현하는 값의 범위가 큼

 

3. 문자열

  • 자바에서 단어나 문장
  • 문자열을 저장할 때는 String 타입을 사용하는데 String은 클래스 타입으로 String 타입의 변수는 참조 변수
String str = "오리";
String str = new String("오리");
String str = "오리" + "꽥꽥"; // 문자열 연결 연산
String str = new String("오리" + "꽥꽥");

 

4. 리터럴

  • 소스 코드에서 프로그래머에 의해 직접 입력된 값
  • 리터럴은 정수, 실수, 문자, 논리, 문자열 리터럴로 구분되며 리터럴들은 정해진 표기법대로 작성
short s = 32767; 
int i = 100; 
long l = 10000L;
float f = 0.123f;
double d = 3.14;
char c = 'A';
String str = "ABC";

 

5. 형 변환(Type Casting)

  • 데이터의 타입을 변환하는 것(boolean 제외)
  • 자료형의 값의 표현 범위 차이에 따라 자동 형 변환, 강제 형 변환으로 구분
    • 자동 형 변환은 컴파일러가 자동으로 값의 범위가 작은 자료형을 값의 범위가 큰 자료형으로 변환
    • 강제 형 변환은 값의 표현 범위가 큰 자료형을 작은 자료형으로 강제로 변환
    // 자동 형 변환 (단, byte와 short 자료형 값의 계산 결과는 int로 처리한다.)
    double result = 12 + 3.3; // 12.0 + 3.3 = 15.3 (데이터 손실 없음)

    // 강제 형 변환
    int result = 12 + (int) 3.3; // 12 + 3 = 15 (0.3 데이터 손실 발생)

 

 

 

 

 

 

 

연산자(Operator)


1. 연산자

  • 프로그램에서 데이터를 처리하여 결과를 산출하는 과정
  • 연산에 사용되는 표시나 기호를 연산자(Operator)
  • 연산의 대상이 되는 데이터를 피연산자(Operand)
  • 자바에서는 다양한 연산자들을 제공하고 있으며 숫자뿐만 아니라 문자열 등 다양한 데이터들도 연산이 가능
  • 연산자는 피연산자의 수에 따라 단항, 이항, 삼항 연산자로 구분

 

2. 단항 연산자

  • 단항 연산자는 한 개의 피연산자를 필요로 하는 연산자

2.1. 부호 연산자

  • 부호 연산자는 양수 및 음수를 표시하는 연산자(+ 부호 유지, - 부호 변경)
  • boolean, char 타입을 제외한 기본 타입에 사용
int num = -10;

 

2.2. 논리 부정 연산자

  • 논리 부정 연산자는 true를 false로 false를 true로 변경하는 연산자
  • boolean 타입에만 사용
boolean result = true;

System.out.println(result); // true
System.out.println(!result); // false

 

 

2.3. 증감 연산자

  • 증감 연산자는 피연산자의 값에 1을 증가시키거나 감소시키는 연산자
  • boolean 타입을 제외한 기본 타입에 사용
  • 증감 연산자가 피연산자 앞에 있으면 먼저 증감 연산을 수행하고 다음 연산을 수행
int num = 10;
int result = ++num; // 전위 연산

System.out.println(num + ", " + result); // 11, 11
  • 증감 연산자가 피연산자 뒤에 있으면 다른 연산을 먼저 수행하고 증감 연산을 수행
int num = 10;
int result = num++; // 후위 연산

System.out.println(num + ", " + result); // 11, 10

 

 

3. 이항 연산자

  • 이항 연산자는 두 개의 피연산자를 필요로 하는 연산자

3.1. 산술 연산자

  • 수학의 사칙연산(+, -, *, /)과 나머지 연산(%)을 하는 연산자
  • boolean 타입을 제외한 기본 타입에 사용
System.out.println(10 + 5); // 15
System.out.println(10 - 5); // 5
System.out.println(10 * 5); // 50
System.out.println(10 / 5); // 2
System.out.println(10 % 5); // 0
System.out.println(10 % 3); // 1

 

3.2. 문자열 연결 연산자

  • 문자열에서 + 연산자는 문자열을 서로 연결하는 연산자
  • 피연산자 중에 한 쪽이 문자열이면 다른 피연산자를 문자열로 변환하고 서로 연결
System.out.println("Hello" + "World"); // HelloWorld
System.out.println("1" + 2); // 12

 

 

3.3. 비교 연산자

  • 비교 연산자는 피연산자의 대소(>, >=, <, <=) 또는 동등(==, !=)을 비교하는 연산자
  • 대소 비교는 boolean 타입을 제외한 모든 기본 타입에 사용할 수 있고, 동등 비교는 모든 타입에서 사용
  • 비교 연산의 결과 값은 boolean 타입 (true 또는 false)
    // ≥, ≤, ≠는 키보드로 누를 수 없기 때문에 >=, <=, !=로 사용한다.
    System.out.println(10 == 5); // false
    System.out.println(10 != 5); // true
    System.out.println(10 > 5); // true
    System.out.println(10 <= 5); // false
    System.out.println(true == false); // false
    System.out.println(true > false); // Syntax Error

 

3.4. 논리 연산자

  • 논리 연산자는 논리 값을 비교하는 연산자 (동등, 크기 비교 X)
  • 논리 연산의 결과 값은 boolean 타입이다. (true 또는 false)
// 논리곱(&&)은 피연산자가 모두 true일 경우 연산 결과가 true이다.
System.out.println(true && true); // true
System.out.println(true && false); // false
// 논리합(||)은 피연산자 중 하나만 true 이면 연산 결과가 true이다.
System.out.println(true || false); // true
System.out.println(false || false); // false

 

3.5. 대입 연산자

  • 대입 연산자는 오른쪽 피연산자의 값을 왼쪽 변수에 저장
int num = 10;
// 오른쪽 피연산자는 리터럴, 변수, 연산식이 올 수 있다.
int result = num * 10;

 

3.6. 복합 대입 연산자

  • 다른 연산자와 대입 연산자가 결합한 것으로 자기 자신과 연산 후 연산 결과를 자기 자신에게 대입
  • 코드가 간결하고 메모리에서 직접 연산을 수행하여 연산 속도가 빠름
  • 증감 연산자와 비슷해 보이지만 증감 연산자는 1씩 증감하지만 복합 대입 연산자는 원하는 값만큼 증감시키고 변수에 저장
a += 10; // a = a + 10;
a -= 10; // a = a - 10;
a *= 10; // a = a * 10;
a /= 10; // a = a / 10;
a %= 10; // a = a % 10;

 

3. 삼항 연산자

  • 삼항 연산자는 세 개의 피연산자를 필요로 하는 연산자
  • 삼항 연산자는 뒤에서 배우는 if 문으로 변경해서 작성할 수 있지만 한 줄에 간단하게 사용하고자 할 때 사용
  • 삼항 연산자는 중첩해서 여러 번 사용이 가능
// ? 앞의 조건식을 연산하여 true가 나오면 결과는 a, false 가 나오면 결과는 b가 된다.
int max = (a > b) ? a : b;
int min = (a < b) ? a : b;

 

4. 연산자의 우선순위

  • 수학에서처럼 프로그램 연산자에도 우선순위가 존재
  • 단항, 이항, 삼항 연산자 순으로 우선순위
  • 산술, 비교, 논리, 대입 연산자 순으로 우선순위
  • 동일한 우선순위의 연산의 경우 대부분 왼쪽에서 오른쪽으로 연산을 시작 (단항, 부호, 대입 연산자 제외)