변수 & 연산자

현서·2025년 5월 20일
1

자바

목록 보기
3/32
post-thumbnail

1. 변수

  • 자바에서 변수
    -> 값을 저장하기 위한 이름이 붙은 메모리 공간

  • 프로그램이 데이터를 일시적으로 기억하고 활용할 수 있게 해준다.

  • 변수는 사용하기 전에 반드시 선언해야 하며, 선언 시에는 자료형(예: int, double, String)과 함께 변수 이름을 명시한다.

  • 자바는 정적 타입 언어이므로 변수의 자료형이 고정되며, 다른 자료형의 값을 저장하려 하면 컴파일 에러가 발생한다.

  • 변수는 선언된 위치와 사용 방법에 따라 지역 변수, 멤버 변수(필드), 클래스 변수(static)로 나뉘며, 각각의 용도와 메모리 저장 위치가 다르다.

1. 자바 변수 이름 규칙 (필수 규칙)

  • 영문자, 숫자, 밑줄(_), 달러 기호($) 사용 가능
  • 숫자로 시작할 수 없음
  • 자바 예약어는 변수명으로 사용할 수 없음

2. 선언과 저장

package lesson01;

public class Ex01_Variable {
    public static void main(String[] args) {
        int age = 20;
        double height = 160.5;
        String name = "김사과";

        System.out.println("이름: " + name);
        System.out.println("나이: " + age);
        System.out.println("키: " + height);
    }
}
이름: 김사과
나이: 20
키: 160.5

2. 데이터 타입

데이터 타입(Data Type) : 변수에 어떤 종류의 데이터를 저장할 수 있는지

1. 기본형 데이터 타입 (Primitive Types)

byte 1바이트 byte a = 100; -128 ~ 127 정수
short 2바이트 short b = 30000; 작은 정수
int 4바이트 int c = 100000; 일반적인 정수 타입
long 8바이트 long d = 10000000000L; 큰 정수, 끝에 L 붙이기
float 4바이트 float e = 3.14f; 소수점 숫자, 끝에 f
double 8바이트 double f = 3.141592; 더 정밀한 소수
char 2바이트 char g = 'A'; 한 글자 문자, 작은따옴표 ' ' 사용
boolean 1바이트 (논리값) boolean h = true; true 또는 false

2. 참조형 데이터 타입 (Reference Types)

  • 기본형이 아닌 모든 데이터는 참조형.
    → 실제 데이터가 있는 메모리 주소(참조)를 변수에 저장한다.

String 문자열 저장 (한 글자 이상) String name = "홍길동";
배열 같은 타입의 데이터를 여러 개 저장 int[] numbers = {1, 2, 3};
클래스 사용자 정의 클래스의 객체 Person p = new Person();

package lesson01;

public class Ex02_DataType {
    public static void main(String[] args) {
        int age = 20; // 정수형
        double height = 160.5; // 실수형
        char grade = 'A'; // 문자형
        boolean isStudent = true; // 논리형
        String name = "김사과"; // 문자열(참조형)

        System.out.println("이름: " + name);
        System.out.println("나이: " + age);
        System.out.println("키: " + height);
        System.out.println("학점: " + grade);
        System.out.println("학생 여부: " + isStudent);
    }
}
이름: 김사과
나이: 20
키: 160.5
학점: A
학생 여부: true

3. 형 변환

  • 자바에서 형 변환(Type Casting)
    -> 변수나 값의 자료형을 다른 자료형으로 바꾸는 과정

  • 숫자 타입 간(예: int → double)에는 자동 변환 가능

  • 크기가 큰 타입에서 작은 타입으로 바꿀 때는 명시적 형 변환(casting)이 필요.

1. 자동(묵시적) 형 변환

int num = 100;
double result = num;  // int → double 자동 변환
System.out.println(result);  // 출력: 100.0

2. 강제(명시적) 형 변환

double pi = 3.14159;
int intPi = (int) pi;  // double → int 명시적 형 변환
System.out.println(intPi);  // 출력: 3
package lesson01;

public class Ex03_TypeCasting {
    public static void main(String[] args) {
        int score = 90;
        double average = score;
        System.out.println("자동 형 변환 결과: "+ average);

        double pi = 3.14159;
        int truncatedPi = (int) pi;
        System.out.println("강제 형 변환 결과: "+ truncatedPi);

        char grade = 'A';
        int gradeCode = grade;
        System.out.println("문자 A의 유니코드 값: "+ gradeCode);

        int code = 66;
        char letter = (char) code;
        System.out.println("유니코드 66에 해당하는 문자: "+ letter);
    }
}
자동 형 변환 결과: 90.0
강제 형 변환 결과: 3
문자 A의 유니코드 값: 65
유니코드 66에 해당하는 문자: B

🤔❓자바에서 float가 long보다 "더 큰 타입"인 이유❔

float : 4바이트, 실수형 (부동소수점)
long : 8바이트, 정수형

구분longfloat
타입 크기64비트32비트
값 범위±9.2 x 1018±3.4 x 1038
정밀도매우 높음 (정수 정확히 표현)낮음 (약 7자리)
표현 방식정수부동소수점
자동 형변환longfloat: 가능
floatlong: 불가능 (명시적 형변환 필요)

→ float의 표현 가능한 수의 절대 범위는 long보다 훨씬 크다.
→ 하지만 실제로 정밀한 계산이나 큰 정수를 다룰 때는 long이 더 안정적이다.

package lesson01;

public class Ex04_FloatLong {
    public static void main(String[] args) {
        long bigNumber = 100000000000L;
        float converted = bigNumber;
        System.out.println("long-> float 변환: "+converted);

        float pi = 3.14159f;
        long piToLong = (long) pi;
        System.out.println("float-> long 변환: "+piToLong);
    }
}
long-> float 변환: 9.9999998E10
float-> long 변환: 3

4. 연산자

변수나 값에 대해 연산(계산, 비교 등)을 수행할 수 있도록 도와주는 기호 또는 예약어.

1. 산술 연산자 (Arithmetic Operators)

+ 덧셈 3 + 2 -> 5
- 뺄셈 5 - 2 -> 3
* 곱셈 4 * 2 -> 8
/ 나눗셈 5 / 2 -> 2 (정수 나눗셈)
% 나머지 (mod) 5 % 2 -> 1

💥 정수끼리 나누면 소수점은 버려진다. 5 / 2 = 2,
소수를 얻으려면 5.0 / 2처럼 하나 이상이 실수여야 한다.

2. 대입 연산자 (Assignment Operator)

= 대입 int a = 10;

복합 대입 연산자

+= 더해서 대입 a += 3;
-= 빼서 대입 a -= 2;
*= 곱해서 대입 a *= 5;
/= 나눠서 대입 a /= 2;
%= 나머지 대입 a %= 3;

3. 비교 연산자 (비교 결과는 true 또는 false)

== 같음 3 == 3 true
!= 같지 않음 3 != 2 true
> 크다 5 > 2 true
< 작다 2 < 5 true
>= 크거나 같다 5 >= 5 true
<= 작거나 같다 4 <= 3 false

4. 논리 연산자 (Boolean값을 연결할 때)

&& AND (그리고) true && false -> false
|| OR (또는) true || false OR (또는)
! NOT (부정) !true -> false

5. 증감 연산자 (값 1 증가 또는 감소)

++ 1 증가 a++ 사용 후 증가 (후위)
-- 1 감소 --a 사용 전 감소 (전위)

6. 조건(삼항) 연산자

조건 ? 참일 때 값 : 거짓일 때 값

7. 비트 연산자

2진수로 연산을 수행할 때 사용한다.

& AND
| OR
^ XOR
~ NOT (반전)
<< 왼쪽 쉬프트
>> 오른쪽 쉬프트



수업 시간에 다룬 예제 코드들은 이렇게 정리가 되어 있다...

profile
The light shines in the darkness.

0개의 댓글