본문 바로가기
3.1 SpringBoot/Java

[java/기초] 변수와 자료형

by Dohi._. 2024. 7. 6.
728x90

변수와 자료형

목차

   1. 변수

   2. 자료형

      2-1) 기본형

      2-2) 참조형

 

1. 변수(Variable)

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

int a=20; // 정수형 변수 a 선언후 20으로 초기화
char b; // 문자형 변수 b 선언

식별자(identifier): 클래스,변수,상수,메소드에 붙이는 이름

 

식별자 이름 규칙

  • '_'와 '$'를 제외한 특수문자, 공백은 사용 할 수없다.
  • 예약어(if,class등),null,true,false는 식별자로 사용할 수 없다.
  • 식별자의 첫 번째 문자에 숫자는 사용할 수 없다
  • 대소문자를 구분합니다.
  • 길이제한이 없음.

표기법

  • 카멜표기법(camelCase)
    • 가장 앞의 문자느 소문자로, 나머지 단어의 첫 문자는 대문자로 표기
    • ex) myName, userPhoneNumber
  • 파스칼 표기법(PascalCase)
    • 각 문자의 첫 문자를 대문자로 표기
    • ex) MyName, UserPhoneNumber
  • 스네이크표기법(snake_case)
    • 다 소문자로 나타내며(기본적으로) 각문자의 사이에 _ 넣는다
    • 자바에서는 주로 안쓰지만 다 대문자로 표기후 스네이크 하는경우(상수표기)도 있다
    • ex) my_name, user_phone_number  
    • 상수표기) MAX_NUM

 

2. 자료형(data type)

자바에서 다룰 수 있는 데이터의 종류이며 기본형(Basic type)8개와 참조형 (reference type)1개가 있다.

 

 1) 기본형

  • 이름 /메모리 공간 / 데이터 값의 범위
  • 논리형
    • boolean / 1비트 / ture 또는 false
  • 문자형
    • char / 2바이트 / 유니코드
  • 정수형
    • byte / 1바이트 / -128~127
    • short / 2바이트 / -32768~32767
    • int / 4바이트 / -2^31~(2^31)-1
    • long / 8바이트 / -2^63~(2^63)-1
  • 실수형
    • float / 4바이트 / -3.4E38~3.4E38
    • double / 8바이트 / -1.7E308~ 1.7E308

+) 정수형(10진수) → 2/8/16진수

// 2진수 표현은 0b를 붙이고 2진수입력
int num2 = 0b1100;
System.out.println("num2 =" + num2);

System.out.println("num2 = 0b" +Integer.toBinaryString(num16));
// 8진수의 경우 0을붙이고 8진수
int num8 = 014;
System.out.println("num8 =" + num8);
System.out.println("num8 = 0" +Integer.toOctalString(num16));

//16진수의 경우 0x붙이고 16진수입력
int num16 = 0xC;
System.out.println("num16 =" + num16);
System.out.println("num16 = 0x" +Integer.toHexString(num16));
/*출력결과
num2 = 12
num2 = 0b110
num8 = 12
num8 = 014
num16 = 12
num16 = 0xc
*/

 

 

 

 2)참조형

참조형은 한 가지이지만 세경우로 주로 이용된다.

  • 배열에 대한 참조
  • 클래스에 대한 참조
  • 인터페이스에 대한 참조

 

즉 참조형 타입은 기본형 타입을 제외한 모든 타입을 이야기한다.

참조형 타입은 기본형 타입과 달리 빈객체를 의미하는 Null개념이 존재하고

참조형 타입은 값이 저장되어 있는 곳의 주소값을 저장하는 공간으로, 힙(Heap) 메모리에 저장된다.

참조(Reference)는 C언어의 포인터와 비슷하지만 실제 주소를 가지는 것은 아니다.

자세하게 다루기 어렵기 때문에 지금은 주소 값정도로 생각하고 넘어가는 것이 좋을 듯합니다.

- 문자열, array, StringBuilder, StringBuffer, List ,Map 등이 있다.

 


문자열(String)

문자열은 기본형에 속하지 않으며 JDK에서 제공하는 String 클래스를 이용한다.

문자열 메소드 정리

  • equals
    • 비교 연산자 ==와 다르게 문자열의 내용을 비교한다 
    • ==는 같은 객체인지 확인하는 용도이기 때문이다
        public static void main(String[] args) {
        //문자열 생성 둘다 가능하다.
        String str1 = "abcd";
        String str2 = new String("abcd");
        String str3 = "abcd";

        if(str1.equals(str2)){
            System.out.println("1번은 True"); 
        }
        if(str1==str2){
            System.out.println("2번은 True"); 
        }  
        if(str1==str3){
            System.out.println("3번은 True");
        }

/*출력결과  
1번은 True  
3번은 True  
*/

 

str1를 "abcd"생성할때 이미있는 "abcd"메모리로 잡혀있고 거기에 연결한다.

str3의 경우는 "abcd"메모리로 잡혀있는 곳에 동일하게 연결하기 때문에 str1과 같은 메모리로 연결된다.

str2는 새로운 abcd의 객체를 생성한 상황이기 때문에 == 로 비교했을때 다른 객체로 구분된다.

  • indexOf
    • str.indexOf (문자열) - str에 문자열이 있는 인덱스를 반환합니다. (없을시 -1)
    • str.indexOf (문자열,int) - str에 int인덱스이후에 문자열이 있는 인덱스를 반환합니다.
  • replace
    • str.replace("A","B") - str에 존재하는 A를 B로 변경합니다
  • substring
    • str.substring(시작int,종료int) 시작int만큼의 인덱스에서 종료인덱스전까지 잘라서 문자열을 반환합니다.
  • toUpperCase(), toLowerCase()
    • 소문자 → 대문자 , 대문자 → 소문자
  • length()
    • 길이반환

StringBuffer / StringBuilder

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

String은 불변객체라 변경을 할때 새로운 문자열을 만드는 형식이지만

해당 자료형은 그러한 문제점을 해결하였다.

주요메소드

  • append(str) : 값을 추가
  • insert(int,str)
    • sb.insert(2, "abc ") :  인덱스2부터 abc추가
  • substring
  • tostring : Stirng으로 반환

배열

배열은 일차원배열과 다차원배열로 구분이가능하다

또한 일반적인 배열은 길이가 고정이된다

일차원배열 

//자료형[] 변수명 = new 자료형[길이]
int[] numbers = new int[10];

//자료형[] = {넣을값들};
int[] numbers2 = {1,2,3,4};

 

다차원배열(이차원배열이상)

//자료형[] 변수명 = new 자료형[길이]
int[][] numbers = new int[2][3]; //[2]행(0,1)행존재 [3]열(0,1,2)열존재   
int[][][] numbers2 = new int[2][2][3];

//자료형[] = {넣을값들};
int[][] numbers3 = {{0,1},{2,3}};

 

주요 메소드

  • lenght 
    • numbers.length; ->numbers의 배열길이 반환

List(ArrayList)

배열과 동일하게 다양한 데이터를 넣을 수 있는 자료형으로

여러가지 메소드를 제공하고 배열과 달리 길이가 가변적이다.

import java.util.ArrayList;


ArrayList<Integer> list1 = new ArrayList<Integer>();


주요 메소드

  • add(값) :값을 추가
  • get(int) :해당되는 인덱스에 있는 값을 반환
  • size() : 리스트길이를 반환
  • remove(int) : 해당되는 인덱스에 있는 값을삭제 
  • clear() : 전체삭제
  • sort() : 정렬
    • sort(Comparator.naturalOrder) : 오름차순
    • sort(Comparator.reverseOrder) : 내림차순
  • contains(값) : 리스트에 값이 있는지 확인 (boolean값)

HashMap

Key-value로 쌍을 이루는 자료형 (순서보장X =인덱스 x )

import java.util.HashMap

HashMap<String, String> map = new HashMap<String, String>();
map.put(“product”, “kiwi”);
map.put(“price”, “9000”);

 

 

주요메소드

  • put(key,value) : key-value 쌍을 저장합니다.
  • get(key) : key에 해당하는 value를 반환
  • size() : 들어있는 데이터의 갯수를 반환
  • remove(key) : key에 해당하는 데이터 삭제
  • containkey(key) : key값이 존재하는지 확인(boolean)

+) 제너릭스(Generics)

자료형을 명시적으로 지적하여 제한적으로 사용하여 형변환을 제어

//모든 자료형이 들어갈수있음
ArrayList aa = new ArrayList(); 

//정수만들어감
ArrayList<Integer> bb = new ArrayList<Integer>();

 

728x90

'3.1 SpringBoot > Java' 카테고리의 다른 글

[java/기초] 상속  (0) 2024.07.10
[Java/기초] 클래스와 객체  (0) 2024.07.09
[Java/기초]조건문 ,반복문  (0) 2024.07.07
[java/기초] 연산자  (0) 2024.07.07
[JAVA] 정말 짧게 읽는 JAVA란?  (0) 2024.07.01

댓글