변수와 자료형

2023. 10. 10. 14:23· JAVA
목차
  1. 변수 개념
  2. 표기법
  3. JAVA 변수 명명 규칙
  4. 상수와 리터럴
  5. 입력과 출력
  6. 자료형(Data Type)
  7. 타입 변환

변수 개념

- 변수: 데이터를 저장하는 메모리 공간에 붙여준 이름

선언(Declaration):  변수를 컴파일러에게 알려주는 것
초기화(Initialization): 변수를 사용하기 위해 공간에 특정 값으로 할당해주는 것
public class SimpleClass {

    // 변수 선언 및 초기화
    int number = 10;          // 정수형 변수
    double decimalNumber = 5.5; // 실수형 변수
    char character = 'A';     // 문자형 변수
    boolean flag = true;      // 불리언형 변수
    String text = "Hello";    // 문자열형 변수

    // 메인 메서드
    public static void main(String[] args) {
        // 클래스의 인스턴스 생성
        SimpleClass example = new SimpleClass();

        // 변수 값 출력
        System.out.println("Integer: " + example.number);
        System.out.println("Double: " + example.decimalNumber);
        System.out.println("Char: " + example.character);
        System.out.println("Boolean: " + example.flag);
        System.out.println("String: " + example.text);
    }
}

 

표기법

- 카멜 표기법(camelCase): 가장 앞 소문자, 나머지 단어의 첫 문자는 대문자

- 파스칼 표기법(PascalCase): 각 문자의 첫 문자를 대문자로 표기

 

JAVA 변수 명명 규칙

- 대소문자를 구분 (simple != Simple)

- 첫 번째 글자는 문자이거나 '$', '_' 이어야 함

- 숫자로 시작할 수 없음

- 카멜 케이스 명명 규칙을 따름

- 예약어(지정된 키워드)는 변수의 이름으로 사용할 수 없음

 

상수와 리터럴

상수

- 한 번 선언과 초기화를 하면 재정의할 수 없는 값

리터럴

- 어떤 변수에 선언되는 값, 즉 데이터 그 자체

 

입력과 출력

입력

- 실행 시 Argument로 넘겨 받는 방법

- 실행 시 키보드로 입력

출력

- java에서 기본적으로 제공해주는 print 메서드 사용

print(), println(), printf()

 

자료형(Data Type)

- 변수의 종류, 단위: 숫자(Number), 부울(Boolean), 문자(Character), 문자열(String), ...

- 변수의 종류에 따라 담을 수 있는 데이터의 타입과 크기가 다르다.

숫자

- 숫자 형태의 자료형(정수/실수/2진수, 8진수, 16진수)

- 정수: int, long, byte, short

소수를 포함하지 않음

주로 int형을 사용하며, 이진 데이터를 다룰 땐 byte를 많이 사용

- 실수: float, double

소수를 포함한 데이터 타입

실수형은 정수형과 저장방식이 다르기 때문에 같은 크기라도 큰 값을 표현 가능(데이터 표현 범위를 크게 하여 정밀도를 높임)

- 2진수, 8진수, 16진수

10진수: 0~9
2진수: 0, 1 (int 자료형을 2진수로 사용하려면 0b를 앞에 붙임)
8진수: 0~7 (int 자료형을 8진수로 사용하려면 0 앞에 붙임)
16진수: 0~9, A~F (int 자료형을 16진수로 사용하려면 0x를 앞에 붙임)
//상수 참조하기

/*
Integer.MAX_VALUE+1을 출력하면 max데이터를 넘어가 다시 음수가 나온다.
따라서 Long type을 사용해야 잘못 출력되지 않는다.
(long)Integer.MAX_VALUE 
*/
MAX_VALUE 
MIN_VALUE

//Integer class의 메서드 사용하기
Integer.toBinaryString() //2진수 변환
Integer.toOctalString()	//8진수 변환
Integer.toHexString()	//16진수 변환

부울

- 참과 거짓을 나타내는 자료 (true/false)

- 조건식과 논리식 계산에 사용

- boolean

- true, false 두 값만 표현하면 되기에 1바이트로 가능

 

문자

- 한 개의 문자 표현에 사용되는 자료형

- int형으로 변환하면 아스키 코드 값으로 변환되어 출력된다.

- char

- java에서 유니코드(2byte) 문자 체계를 사용

 

문자열(String)

- 문자들로 이루어진 집합

- 문자열 메소드: equals, indexOf, replace, substring, toUpperCase ...

 '==' 는 객체 비교이고, equals는 값 비교이다. 따라서 new String 으로 객체를 생성하고 '==' 를 사용해 비교하면 false가 나온다. equals로 비교해야 원하는 값을 얻을 수 있다.
substring은 기존 문자열에서 부분 문자열을 뽑는 메서드이다.
// indexOf와 substring 혼용해보기
s.substring(0, s.indexOf("!")+1);
//첫 글자부터 느낌표까지 출력된다.

 

StringBuffer

- 문자열을 자주 추가하거나 변경할 때 사용하는 자료형

- 문자열 연결, 삽입, 삭제 등의 연산을 할 때 StringBuffer를 사용하면 효율적이다. String 객체는 불변(immutable)이기 때문에 문자열을 수정할 때마다 새로운 String 객체가 생성되는데, StringBuffer는 이러한 문제를 해결해 준다.

- stringBuffer 메소드: append, insert, substring ...

public class StringBufferExample {
    public static void main(String[] args) {
        StringBuffer buffer = new StringBuffer("Hello");
        
        // 문자열에 문자열 추가
        buffer.append(" World");
        
        // 특정 인덱스에 문자열 삽입
        buffer.insert(5, ",");
        
        // 특정 인덱스의 문자 삭제
        buffer.deleteCharAt(5);
        
        // 문자열의 일부를 다른 문자열로 대체
        buffer.replace(0, 5, "Hi");

        System.out.println(buffer.toString()); // 출력: Hi World
    }
}

 

배열

- 많은 수의 데이터를 담을 수 있는 자료

- index와 element로 구성됨

 

< 배열의 활용 >

- enhanched for 문 (for-each 문)

요소의 값을 변경하기에는 적합하지 않음

public class EnhancedForExample {
    public static void main(String[] args) {
        // 1차원 정수형 배열 선언 및 초기화
        int[] numbers = {1, 2, 3, 4, 5};

        // enhanced for문을 사용하여 배열의 각 요소 출력
        for (int number : numbers) {
            System.out.println(number);
        }
    }
}

 

- 배열의 복사

int[] original = {1, 2, 3, 4, 5};
int[] copy = new int[original.length];

System.arraycopy(original, 0, copy, 0, original.length);
int[] original = {1, 2, 3, 4, 5};
int[] copy = original.clone();
int[] original = {1, 2, 3, 4, 5};
int[] copy = Arrays.copyOfRange(original, 1, 4); // 2, 3, 4 복사

 

리스트

- 배열과 같이 여러 데이터를 담을 수 있는 자료형

- 추가로 여러가지 메소드를 제공

- 리스트 메소드: add, get, size, remove, clear, sort, contains, ...

- ArrayList list = new ArrayList();

import java.util.ArrayList;

public class ArrayListExample {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();

        // ArrayList에 요소 추가
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");
        //ArrayList 특정 인덱스에 요소 추가
        list.add(3, "Orange");

        // ArrayList에서 요소 얻기
        System.out.println(list.get(1));  // 출력: Banana

        // ArrayList에 있는 요소의 개수 얻기
        System.out.println(list.size());  // 출력: 4

        // ArrayList에서 요소 삭제
        list.remove(1);
        //list.remove("Banana");

        // ArrayList가 특정 요소를 포함하고 있는지 확인
        if (list.contains("Banana")) {
            System.out.println("Banana is in the list");
        } else {
            System.out.println("Banana is not in the list");  // 출력: Banana is not in the list
        }

        // ArrayList의 모든 요소 출력
        for (String fruit : list) {
            System.out.println(fruit);
        }
        // 출력:
        // Apple
        // Cherry
        // Orange
        
        //오름차순 정렬
        list.sort(Comparator.naturalOrder());
        //내림차순 정렬
        list.sort(Comparator.reverseOrder());
        
        list.clear();
    }
}

 

맵

- key, value 형태로 데이터를 저장하는 자료형

- 맵 메소드: put, get, size, remove, containsKey, ...

- HashMap<String, String> hashMap = new HashMap<String, String>();

- python의 dictionary와 비슷한 형태이다.

import java.util.HashMap;

public class HashMapExample {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();

        // HashMap에 키와 값 쌍 추가
        map.put("Alice", 25);
        map.put("Bob", 30);
        map.put("Charlie", 35);

        // HashMap에서 키로 값을 얻기
        System.out.println(map.get("Alice"));  // 출력: 25

        // HashMap에 있는 키-값 쌍의 개수 얻기
        System.out.println(map.size());  // 출력: 3

        // HashMap에서 특정 키-값 쌍 삭제
        map.remove("Bob");

        // HashMap에 특정 키가 있는지 확인
        if (map.containsKey("Bob")) {
            System.out.println("Bob is in the map");
        } else {
            System.out.println("Bob is not in the map");  // 출력: Bob is not in the map
        }

        // HashMap의 모든 키-값 쌍 출력
        for (String key : map.keySet()) {
            System.out.println(key + ": " + map.get(key));
        }
        // 출력:
        // Alice: 25
        // Charlie: 35
    }
}

 

제네릭스

- 자료형을 명시적으로 지정

- 제한적일 수 있지만 안정성을 높여주고 형변환을 줄여준다.

- ArrayList<String> list = new ArrayList<String>();

 

타입 변환

- 서로 다른 타입 간의 연산을 수행하는 경우, 연산 수행 전 두 타입을 일치시켜야 하는데 변수나 리터럴의 타입을 변환하는 작업을 타입 변환 혹은 형 변환이라고 함

- 문자열(String) 타입도 기본 타입으로 변경 가능

 

자동 형 변환

- 경우에 따라 소스 코드상에서 형 변환을 안해도 컴파일러가 형 변환을 추가해주는 경우가 있음(자동 형 변환)

- 표현 범위가 좁은 범위에서 넓은 범위로 저장될 때, 자동 형 변환이 됨

byte < short < int < long < float < double

- 표현 범위가 넓은 범위에서 좁은 범위로 저장될 땐, 에러를 발생시킴

더 작은 범위로 할당되면서 값 손실이 일어날 수 있기 때문

명시적으로 형 변환을 해줄 시, 에러를 발생시키지 않음

 

 

 

 

 

'JAVA' 카테고리의 다른 글

다형성  (0) 2023.10.24
상속  (0) 2023.10.24
클래스와 객체  (0) 2023.10.23
연산자  (0) 2023.10.11
JAVA란?  (0) 2023.10.10
  1. 변수 개념
  2. 표기법
  3. JAVA 변수 명명 규칙
  4. 상수와 리터럴
  5. 입력과 출력
  6. 자료형(Data Type)
  7. 타입 변환
'JAVA' 카테고리의 다른 글
  • 상속
  • 클래스와 객체
  • 연산자
  • JAVA란?
오승미
오승미
오승미
프로그래밍 공부
오승미
전체
오늘
어제
  • 분류 전체보기 (114)
    • 개발 (31)
      • 배포 (2)
      • KAFKA (3)
      • MSA (11)
      • 리눅스 (2)
      • Spring (1)
      • FE (0)
    • SQL (6)
    • 알고리즘 (50)
    • JAVA (14)
    • 개발 서적 리뷰 (1)
      • Clean Code (1)
      • 실전 카프카 개발부터 운영까지 (0)
    • CS (12)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기
  • 관리

공지사항

인기 글

태그

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
오승미
변수와 자료형
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.