[JAVA] 변수와 자료형

XXXX·2024년 1월 5일
0


변수 (Variable)

  • 데이터를 저장하는 메모리 공간에 붙여준 이름
int age = 20;
String country = "Korea";

변수 이름 규칙

변수규칙예시
문자와 숫자, $, _ 사용가능int _apple2 = 1;
숫자로 시작 xint 3apple = 1;
대문자와 소문자 구분int Apple = 2; != int APPLE = 2;
공백 사용 Xint one apple = 2;
미리 예약된 이름 사용 Xint true = 1;

표기법

  1. 카멜 표기법 (camelCase) : 가장 앞의 문자는 소문자로, 나머지 단어의 첫 문자는 대문자로 표기
    ex) myName, iPhone

  2. 파스칼 표기법 (PascalCase) : 각 문자의 첫 문자를 대문자로 표기
    ex) MyName, IPhone


// Java 프로그래밍 - 변수와 자료형_1

public class Main {
    public static void main(String[] args) {

//      1. 변수 사용하기
        System.out.println("== 변수 사용하기 ==");
        int age = 10;
        System.out.println(age);
        String country = "Korea";
        System.out.println(country);


//      2. 변수 이름 규칙
        System.out.println("== 변수 이름 규칙 ==");
//      2-1. 문자, 숫자, _(underscore), $ 사용 가능
        int apple = 2000;
        int apple3 = 2000;
        int _apple = 2000;
        int $apple = 2000;
        System.out.println($apple); // 단축키 sout
        System.out.println("$apple = " + $apple); // 단축키 soutv


//      2-2. 숫자로 시작 X
//        int 3apple = 2000;

//      2-3. 대소문자 구분
        int apple5 = 1000;
        int Apple5 = 2000;

//      2-4. 공백 사용 X
        int one_apple = 1000;
        int ontApple = 1000;

//      2-5. 예약어 사용 X
//      예약어 예시: true, false, if, switch, for, continue, break, ...
//        int true = 1;

//      참고) 한글 사용 가능
        int 사과 = 1000;
        System.out.println("사과 = " + 사과);

        
//      3. 표기법
//      3-1. 카멜 표기법 (camelCase)
//      변수, 함수
        int myAge = 10;
        int oneApplePrice = 1000;

        
//      3-2. 파스칼 표기법 (PascalCase)
//      클래스
        int MyAge = 10;
        int OneApplePrice = 1000;

        
//      참고) 스네이크 표기법 (snake_case)
//      사용 X (자바에서는 사용하지 않고, 파이썬에서 사용함.)
        int my_age = 10;
        int one_apple_price = 1000;


    }
}


자료형

숫자

  • 정수: int, long
  • 실수: float, double
  • 2진수: 0과 1로 이루어짐, 코드로 쓸때 앞에 0b를 붙여줌
  • 8진수: 0~7로 이루어짐, 코드로 쓸때 앞에 0을 붙여줌
  • 16진수: 0~9, A~F로 이루어짐, 코드로 쓸때 앞에 0x를 붙여줌

부울

  • 참과 거짓을 나타내는 자료형 (true, false)

문자

  • 한 개의 문자 표현에 사용하는 자료형 (char)

// Java 프로그래밍 - 변수와 자료형_2

public class Main {
    public static void main(String[] args) {

//      1. 자료형 - 숫자
        System.out.println("== 숫자 ==");
//      1-1. 정수
        int intNum = 10;
        System.out.println("intNum = " + intNum);


        System.out.println(Integer.MIN_VALUE); // "int" 는 기본타입, "Integer" 는 기본 타입에 더해서 몇가지 기능 추가
        System.out.println(Integer.MAX_VALUE); // 자바에서 상수는 대문자 스네이크 표기법을 이용함.
        
        int intNum2 = Integer.MAX_VALUE;
        System.out.println("intNum2 = " + intNum2);
        int intNum3 = Integer.MAX_VALUE + 1; // 최솟값이 출력됨
        System.out.println("intNum3 = " + intNum3);
        long longNum = (long)Integer.MAX_VALUE + 1; // 앞에 long으로 자료형 변환 해줘야 값이 int의 최대 값에 1을 더한 값이 출력됨.
        System.out.println("longNum = " + longNum);

//      1-2. 실수
        float floatNum = 1.23f; // 뒤에 f를 붙여줘야 float로 인식함. 안 써주면 double.
        double doubleNum = 1.23;
        System.out.println(Float.MAX_VALUE);
        System.out.println(Double.MAX_VALUE);

//      1-3. 2진수 / 8진수 / 16진수
        int numBase2 = 0b1100;
        System.out.println("numBase2 = " + numBase2);
        int numBase8 = 014;
        System.out.println("numBase8 = " + numBase8);
        int numBase16 = 0xC;
        System.out.println("numBase16 = " + numBase16);
//      출력은 전부 10진수로 바뀌어서 출력됨.

        System.out.println("0b" + Integer.toBinaryString(numBase2)); // 2진수 형태로 출력
        System.out.println("0" + Integer.toOctalString(numBase8)); // 8진수 형태로 출력
        System.out.println("0x" + Integer.toHexString(numBase16)); // 16진수 형태로 출력


//      2. 자료형 - 부울
        System.out.println("== 부울 ==");
        boolean isPass = true;
        System.out.println("isPass = " + isPass);
        boolean isOk = false;
        System.out.println("isOk = " + isOk);


//      3. 자료형 - 문자
        System.out.println("== 문자 ==");
        char keyFirst = 'a';
        System.out.println("keyFirst = " + keyFirst);
        char keyLast = 'z';
        System.out.println("keyLast = " + keyLast);
        System.out.println((int)keyFirst);
        System.out.println((int)keyLast);


    }
}


문자열

  • 문자들로 이루어진 집합
String s1 = "Hello World!";
String s2 = "01234";
  • 문자열 메소드(기능) : equals, indexOf, replace, substring, toUpperCase ..

StringBuffer

  • 문자열을 자주 추가하거나 변경할 때 사용하는 자료형
StringBuffer sb1 = new StringBuffer("Hello World!");
  • StringBuffer 메소드(기능) : append, insert, substring

배열 (Array)

  • 많은 수의 데이터를 담을 수 있는 자료형
int[] myArray1 = {1,2,3,4,5};
char[] myArray2 = {'a', 'b', 'c', 'd', 'e'};

// Java 프로그래밍 - 변수와 자료형_3

import java.util.Locale;

public class Main {
    public static void main(String[] args) {

//      1. 자료형 - 문자열
        System.out.println("== 문자열 ==");
        String s1 = "Hello World";
        System.out.println("s1 = " + s1);
        String s2 = "01234";
        System.out.println("s2 = " + s2);


//      1-1. equals
        String s3 = "Hi";
        String s4 = "Hi";
        System.out.println(s3.equals(s4)); // 참
        System.out.println(s3 == s4); // 참(같은 객체의 'Hi'를 가리킴)

        String s5 = new String("Hi"); // 명시적으로 데이터 새롭게 하나 만든 것. s3과는 다른 객체
        System.out.println(s3.equals(s5)); // equals는 값('Hi')을 비교, 참
        System.out.println(s3 == s5); // 객체를 비교, 거짓(같은 객체 'Hi'를 가리키는 것이 아니라. 새로운 객체를 만들었으므로 값만 같고, 객체는 다르다는 것을 의미)



//      1-2. indexOf (문자열에서 특정 문자열 위치를 찾아주는 메소드)
        String s6 = "Hello! World!";
        System.out.println(s6.indexOf("!"));  // 0부터 시작, 5 출력
        System.out.println(s6.indexOf("!", s6.indexOf("!") + 1)); // 처음 위치의 바로 다음 위치에 있는 느낌표 찾아줌, 12 출력


//      1-3. replace
        String s7 = s6.replace("Hello", "Bye");
        System.out.println("s7 = " + s7); // Bye! World! 로 출력. 'Hello'를 'Bye'로 대체.


//      1-4. substring
        System.out.println(s7.substring(0, 3)); // 인덱스 0 ~ 2까지 출력
        System.out.println(s7.substring(0, s7.indexOf("!") + 1)); // 인덱스 0 ~ "!"까지 출력


//      1-5. toUpperCase (모두 대문자로 바꿔줌)
        System.out.println(s7.toUpperCase());


//      2. 자료형 - StringBuffer
        System.out.println("== StringBuffer ==");
        StringBuffer sb1 = new StringBuffer(); // 스트링 버퍼는 데이터가 변경되도 객체가 새로 만들어지는 게 아니라 기존의 객체에서 변경이 된다.
        sb1.append("01234"); // 데이터 넣기
        System.out.println("sb1 = " + sb1);
        sb1.append("56789"); // 이어서 데이터 넣기
        System.out.println("sb1 = " + sb1);

        String a = "01234";
        String b = "56789";
        String bak = a;
        System.out.println(a == bak); // a 변화 발생 전, true

        a += b; // 스트링은 데이터에 변화가 일어날 때 마다 새롭게 객체를 생성해서 사용, 메모리 생성 여러번, 속도 딜레이 발생
        System.out.println(a);
        System.out.println(a == bak); // a 변화 발생 후, false




//      3. 자료형 - 배열
        System.out.println("== 배열 ==");
        int[] myArray1 = {1, 2, 3, 4, 5};
        System.out.println(myArray1[0]);
        System.out.println(myArray1[1]);
        System.out.println(myArray1[2]);
        System.out.println(myArray1[3]);
        System.out.println(myArray1[4]);

        char[] myArray2 = {'a', 'b', 'c', 'd', 'e'};
        System.out.println(myArray2[2]);

        String[] myArray3 = new String[3]; // 'c' 출력
        myArray3[0] = "Hello";
        myArray3[1] = " ";
        myArray3[2] = "World!";
        System.out.println(myArray3[0] + myArray3[1] + myArray3[2]);


    }
}

리스트 (List)

  • 배열과 같이 여러 데이터를 담을 수 있는 자료형
  • 추가로 여러가지 메소드를 제공
ArrayList l1 = new ArrayList();
l1.add(1);
  • 리스트 메소드 : add, get, size, remove, clear, sort, contains

맵 (Map)

  • key, value 형태로 데이터를 저장하는 자료형
HashMap<String, String> map = new HashMap<String, String>();
map.put("product", "kiwi");
map.put("price", "9000");
  • 맵 메소드: put, get, size, remove, containsKey

제네릭스 (Generics)

  • 자료형을 명시적으로 지정
  • 제한적일 수 있지만 안정성을 높여주고 형변환을 줄여줌
ArrayList<String> l1 = new ArrayList<String>();
HashMap<String, Integer> map1 = new HashMap<String, Integer>();


// Java 프로그래밍 - 변수와 자료형_4

import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;

public class Main {
    public static void main(String[] args) {

//      1. 자료형 - 리스트
        System.out.println("== 리스트 ==");
        ArrayList l1 = new ArrayList(); // option + enter 눌러주면 자동으로 import 생성

//      1-1. add
        l1.add(1); // 리스트 l1에 데이터 추가
        l1.add("hello");
        l1.add(2);
        l1.add(3);
        l1.add(4);
        l1.add("world!");
        System.out.println("l1 = " + l1);

        l1.add(0, 1); // index 0번 자리에 '1' 추가
        System.out.println("l1 = " + l1);


//      1-2. get
        System.out.println(l1.get(0)); // 리스트 0번 인덱스에 있는 데이터 꺼내옴
        System.out.println(l1.get(3));


//      1-3. size
        System.out.println(l1.size()); // 리스트 사이즈가 출력


//      1-4. remove
        System.out.println(l1.remove(0)); // 0번 인덱스 위치에 있는 값 지움
        System.out.println("l1 = " + l1);

        System.out.println(l1.remove(Integer.valueOf(2))); // 리스트에 있는 숫자 2를 지운다
        System.out.println("l1 = " + l1);


//      1-5. clear (리스트에 있는 모든 데이터 삭제)
        l1.clear();
        System.out.println("l1 = " + l1);


//      1-6. sort
        ArrayList l2 = new ArrayList(); // 배열 리스트 생성
        l2.add(5);
        l2.add(3);
        l2.add(4);
        System.out.println("l2 = " + l2);
        // 데아터들 집어넣기

        l2.sort(Comparator.naturalOrder()); // 오름차순 정렬
        System.out.println("l2 = "  + l2);
        l2.sort(Comparator.reverseOrder()); // 내림차순 정렬
        System.out.println("l2 = " + l2);


//      1-7. contains
        System.out.println(l2.contains(1)); // 1이 포함되어 있는 지 여부
        System.out.println(l2.contains(3)); // 3이 포함되어 있는 지 여부



//      2. Maps (쌍을 이루어서 저장하는 자료형)
        System.out.println("== Maps ==");
        HashMap map = new HashMap();


//      2-1. put
        map.put("kiwi", 9000);
        map.put("apple", 10000);
        map.put("mango", 12000);
        System.out.println("map = " + map);


//      2-2. get
        System.out.println(map.get("mandarine")); // 없는 데이터, NULL 출력
        System.out.println(map.get("kiwi")); // 9000 출력


//      2-3. size
        System.out.println(map.size()); // 데이터 사이즈 개수

//      2-4. remove
        System.out.println(map.remove("kiwi")); // map에 kiwi 제거
        System.out.println(map.remove("mandarine")); // NULL 출력
        System.out.println("map = " + map);


//      2-5. containsKey
        System.out.println(map.containsKey("apple")); // true 출력
        System.out.println(map.containsKey("kiwi")); // false 출력



//      3. Generics
        System.out.println("== Generics ==");
        ArrayList l3 = new ArrayList();
        l3.add(1);
        l3.add("hello");
        System.out.println("l3 = " + l3); // 1과 hello 출력

        ArrayList<String> l4 = new ArrayList<String>();
        // l4.add(1); l4에는 String만 입력 받을 수 있으므로 안된다.
        l4.add("hello");
        System.out.println("l4 = " + l4); // hello 출력

        HashMap map1 = new HashMap();
        map1.put(123, "id");
        map1.put("apple", 10000);
        System.out.println("map1 = " + map1);


        HashMap<String, Integer> map2 = new HashMap<>();
       //  map2.put(123, "id");
        map2.put("apple", 10000);
        System.out.println("map2 = " + map2);



    }

}

0개의 댓글