BlueHarmel
BlueHarmel Devlog
BlueHarmel
전체 방문자
오늘
어제

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기 (330)
    • Book (11)
    • Dev (29)
      • ArtCon (0)
      • ESTsoft 오르미 (29)
    • Study (290)
      • Web (18)
      • AWS (2)
      • 알고리즘 (1)
      • GameDev (1)
      • 정보처리기사 (201)
      • English (1)
      • Mathematics (24)
      • 머신러닝 (7)
      • 딥러닝 (10)
      • 네트워크 보안 (5)
      • R (4)
      • 컴퓨터 네트워크 (6)
      • 데이터베이스 (8)
      • 데이터 통신 (0)
      • 운영체제 (2)
      • TIL (0)
    • Project (0)
      • 개인 (0)
      • 단체 (0)

인기 글

hELLO · Designed By 정상우.
BlueHarmel

BlueHarmel Devlog

Dev/ESTsoft 오르미

변수

2024. 2. 22. 09:51

목차

목차
1. 변수의 선언과 저장
2. 변수의 타입
3. 타입 변환
4. 기본 자료형과 참조 자료형
5. 오토박싱 & 언박싱, 문자열과 숫자형 변환
6. 추가할 것
7. Daily Quiz

1. 변수의 선언과 저장

  • 설명 보기
    • 변수 : 데이터를 저장할 때 사용하는 공간
      • 하나의 값만 저장할 수 있다.
      • 배열 자료형의 경우에만 복수의 값을 저장 가능
    • 선언과 저장
      • 선언 : 저장할 데이터타입과 변수 이름을 결정하는 것
        • (자료형 타입) (변수명);
        • 변수명에 예약어(언어에서 이미 문법적인 용도로 사용되는 단어)를 사용해선 안된다.
        분류예약어
        기본 데이터 타입boolean, byte, char, short, int, long, float, double
        접근 지정자private, protected, public
        클래스와 관련된 것class, abstract, interface, extends, implements, enum
        객체와 관련된 것new, instanceof, this, super, null
        메소드와 관련된 것void, return
        제어문과 관련된 것if, else, switch, case, default, for, do, while, break, continue
        논리값true, false
        에외 처리와 관련된 것try, catch, finally, throw, throws
        기타transient, volatile, package, import, synchronized, native, final, static, strictfp, assert
    • 저장 : 선언된 변수에 값을 할당하는 것
      • (변수명) = (값);
      • 선언과 저장을 한번에 할 수 있다
        • (자료형 타입) (변수명) = (값);
    • 변수 값 읽기
      • 초기화
        • 변수는 초기화 되어야 읽을 수 있고, 초기화 되지 않은 변수는 읽을 수 없다.
    • 변수의 사용 범위
      • 변수는 중괄호 블록 내에서 선언되고 사용된다.
      • 로컬 변수 : 메소드 블록 내에서 선언된 변수
        • 메소드 실행이 끝나면 메모리에서 자동으로 사라진다.
  • 클래스 or 변수 네이밍 규칙
    1. 숫자로 시작 X
    1. 예약어를 사용 X
    1. 대소문자가 구분되며 길이에는 제한 X
      1. BUT, 길이가 너무 길어진다면 가독성이 떨어진다
    1. 특수문자는 언더바(_)와 달러($)만 가능하다
  • 권장사항
    1. 클래스나 변수명은 영문으로 작성
    1. 클래스명의 첫 글자는 항상 대문자
    1. 여러 단어가 합쳐진 변수명이라면 단어의 시작을 대문자로
    1. 상수의 이름은 대문자, 단어 사이의 구분자는 언더바(_)

2. 변수의 타입

  • 설명 보기
    • 타입 종류
      • 기본 타입 (Primitive type)
        값의 종류기본 타입메모리 사용 크기저장되는 값의 범위
        정수byte1byte-128 ~ 127
        정수 / 문자char2byte0 ~ 65535
        정수short2byte-32,768 ~ 32,767
        정수int4byte-2,147,483,648 ~ 2,147,483,647
        정수long8byte–9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
        실수float4byte3.4E+/-38(7개의 자릿수)
        실수double8byte1.7E+/-308(15개의 자릿수)
        논리형boolean1bytetrue, false
      • 정수 타입
        • 각각 저장할 수 있는 값의 범위가 다르다
        • byte (1byte) < char (2byte) < short (2byte) < int (4byte) < long (8byte)
        • 정수 기본타입 : int
        • 저장할 수 있는 범위를 초과해서 값이 저장될 경우, trash 값이 저장된다.
        • char 타입 : 작은 따옴표 (’) 를 사용해 하나의 문자를 저장한다
          • char 타입 변수에 빈 문자열을 대입하면 컴파일 에러 발생
            public class CharVariableExample {
            	public static void main(String[] args) {
            		char c1 = 'A';            // 문자를 직접 저장
            		char c2 = 65;            // 10진수로 저장
            		char c3 = '\u0041';        // 16진수로 저장
            
            		char c4 = '가';            // 문자를 직접 저장
            		char c5 = 44032;        // 10진수로 저장
            		char c6 = '\uac00';        // 16진수로 저장
            
            		int unicode = c1;        // 유니코드 얻기
            
            		System.out.println(c1);
            		System.out.println(c2);
            		System.out.println(c3);
            		System.out.println(c4);
            		System.out.println(c5);
            		System.out.println(c6);
            		System.out.println(unicode);
            	}
            }
            
            char c = '';   // 컴파일 에러 -> char c = ' '; 로 바꿔줘야 함
          • String 변수는 빈 문자를 대입해 선언해도 된다.
        • Long 타입 : 4byte인 int 타입보다 저장할 수 있는 범위가 큰 8byte 정수형 타입
          • 초기화 할때, l이나 L을 붙여서 8byte 정수형 데이터임을 컴파일러에게 알려준다.
      • 실수 타입
        • float (4byte) < double (8byte)
        • 메모리 사용 크기는 int, long 과 같지만, 저장방식이 달라서 훨씬 더 큰 범위의 값을 저장할 수 있다.
        • double : 실수 연산을 하기위한 기본 타입
        • float : 값 뒤에 f 나 F를 붙여야 한다.
        • double과 float는 정밀도에서 차이가 있다.
          • float는 7자리
          • double 15~16자리 까지 오차없이 표현가능
      • 논리 타입
        • 1byte(8bit)로 표현되는 논리값(true/false)를 저장할 수 있는 데이터 타입
        • 상태값에 따라 조건문과 제어문의 실행 흐름을 변경하는데 주로 사용

3. 타입 변환

  • 설명 보기
    • 데이터 타입을 다른 데이터 타입으로 변환하는 것
    • 방법
    1. 묵시적 타입변환 (자동) : 작은 크기의 타입을 큰 크기의 타입으로 변환하는 것
      1. 작은 크기의 타입이 저장된 변수를 큰 크기의 타입 변수에 넣으면 된다.
    1. 명시적 타입변환 (강제적) : 큰 크기의 타입을 작은 크기의 타입으로 변환하는 경우
      1. 캐스팅 : 큰 크기의 타입을 나눠서 작은 크기에 넣는 것
      1. 큰 크기의 타입이 저장된 변수를 작은 크기의 타입 변수에 넣을 때, 큰 단위의 변수 앞에 (작은 단위의 변수타입)을 적어준다.
      1. 사용자로부터 입력받은 값을 변환할 때, 값의 손실이 일어나선 안된다.
    • 연산식에서의 자동 타입 변환
      • 연산식은 기본적으로 같은 타입끼리 수행된다
      • 서로 다른 타입일 경우, 크기가 큰 타입으로 자동변환된 후 연산을 수행한다

4. 기본 자료형과 참조 자료형

  • 설명 보기
    • 기본 자료형 (Primitive Data Type) :
    • 참조 자료형 (Reference Data Type) :
    • 차이점
      • 저장 형태
        • 기본 타입 변수 : 실제 값을 변수안에 저장
        • 참조 변수 : 메모리의 주소를 값으로 갖는다
      • 초기화
        • 기본 타입 변수 :
        int age = 10;
        • 참조 변수 : new를 사용해서 초기화해야 한다.
          • 단 String은 기본타입처럼 바로 초기화해도 된다.
        Calculator calculator = new Calculator();
        
        String name1 = "sung yeon";
        String name2 = new String("sung yeon");
        
        
        https://deveric.tistory.com/123

5. 오토박싱 & 언박싱, 문자열과 숫자형 변환

  • 설명 보기
    • Wrapper 타입(클래스) : 기본 자료형을 참조 자료형처럼 사용하기 위한 클래스
      • 기본 자료형을 감싸 객체 형태로 만든 것
    • Boxing : 기본형에서 Wrapper 타입으로 변환되는 것
    • Unboxing : Wrapper 타입에서 기본형으로 변환되는 것
    • 오토박싱
      • 기본타입의 데이터를 Wrapper 클래스의 객체로 변환하는 것
      int index = 11;
      Integer number = new Integer.valueOf(index);  // 박싱(Boxing)
      int index = 11;
      Integer number = index;   // 오토박싱
      
      int index = intObject; // 언박싱 Integer => int
      • 제네릭(ArrayList<>) 컬렉션에 값을 추가하는 경우에 사용 ()
    • 언박싱
      • 레퍼 클래스를 기본형 타입으로 변환하는 것
    • 오토박싱과 의 성능 차이
      • 편의성을 위해 오토박싱과 언박싱이 제공되지만, 내부적으로 추가 연산 작업을 거치게 된다.
      • 오토박싱과 언박싱이 일어나지 않도록 동일한 타입 연산이 이루어지도록 구현해야 한다.
      public class AutoBoxingPerformanceExample {
          //오토박싱 연산
          public static void main(String[] args) {
              long startTimeMs = System.currentTimeMillis();
              Long sum = 0L;
              for (int i = 0; i < 1000000000; i++) {
                  sum = sum + 1;
              }
              System.out.println("실행 시간: " + (System.currentTimeMillis() - startTimeMs) + "ms");
              test();
          }
          //형변환 연산
          public static void test() {
              long startTimeMs = System.currentTimeMillis();
              long sum = 0L;
              for (int i = 0; i < 1000000000; i++) {
                  sum = sum + 1;
              }
              System.out.println("실행 시간: " + (System.currentTimeMillis() - startTimeMs) + "ms");
          }
      }
      • 문자열과 숫자 변환
        • Primitive type으로의 변환
          • parsewrapper클래스이름() 메소드를 사용하여 변환
        • Wrapper class로의 변환
          • valueOf() 메소드를 사용하여 변환

      String → int/Integer

      • Integer.parseInt() : 문자열을 int 타입으로 변경
        • 문자열 내용이 정수가 아니라면 Exception 발생
      • Integer.valueOf() : 문자열로 Integer 객체 생성
      String str = "12345";
      int intValue = Integer.parseInt(str);
      Integer integerValue = Integer.valueOf(str);
      
      System.out.println(intValue);
      System.out.println(integerValue);

      int → String

      • Integer.toString()
      • String.valueOf()
      • 변수 + “” (Casting 방식)
      int intValue = 10;
      String StrValue;
      
      StrValue = String.valueOf(intValue);
      StrValue = Integer.toString(intValue);
      StrValue = "" + intValue; // 정수값에 빈 문자열을 더해 문자열 합치기 연산으로 작동되게 한다

      (참고) valueOf()와 toString()은 null 처리 방식에서 차이가 있습니다.

      Object nullValue = null;
      
      String str;
      
      str = nullValue.toString(); // NullPointerException 발생
      str = String.valueOf(nullValue); // 문자열 "null"로 변환됨

      int 외에 숫자형 타입인 double, float, long 모두 toString() 메소드를 이용하여 문자열로 변환합니다.

6. 추가할 것

  • 리터럴 :
  • String constant pool :
  • 제네릭 컬렉션 :
    • 제네릭 : 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일시에 미리 지정하는 방법
      • 장점
      1. 클래스나 메소드 냅주에서 사용되는 객체의 타입 안정성을 높일 수 있다.
      1. 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있다.
  • type 변수에 int값인 10을 넣어도 되는 이유? : https://docs.oracle.com/javase/specs/jls/se21/html/jls-5.html#jls-5.1.3
  • String 메서드
    • indexOf(value) : value 값이 배열에 없다면, -1을 반환한다.
    • charAt(index) : index값을 인덱스로 가지는 위치의 데이터를 반환
    • substring(beginIndex, endIndex) : 시작 인덱스부터 종료인덱스-1 까지의 string을 반환
    • toUpperCase() : 전체 문자를 대문자로 변경
    • split(’ ‘) : 띄어쓰기를 기준으로 문자열을 나눠서 문자열 배열(String[])로 반환
    • concat() : 문자열 여러개를 합쳐서 반환
    • format(”%s sdfsdf %s”, value1, value2 : 원하는 형식으로 String데이터를 만들 수 있다.
    • StringBuffer, StringBuilder : 문자열을 추가하거나 변경할 때 주로 사용하는 자료형
      • String은 새로운 객체를 생성하고 String 공간을 할당하기 때문에 비효율적
      • 따라서 문자열 연산이 필요할땐 StringBuffer 혹은 StringBuilder을 사용

7. Daily Quiz

Daily Quiz 01/26

'Dev > ESTsoft 오르미' 카테고리의 다른 글

참조자료형  (0) 2024.02.22
연산자 / 조건문과 반복문  (0) 2024.02.22
Java 기초  (0) 2024.02.22
강사님 코드리뷰  (0) 2024.02.22
공부한 기술들  (0) 2024.02.22
    BlueHarmel
    BlueHarmel
    Interested in Mathematics, Foreign Language, and "Programming"

    티스토리툴바