Java 변수와 자료형
변수
데이터를 저장하는 메모리 공간에 붙여준 이름
int age = 30;
String name = "김철수";
int -> 데이터 타입, age -> 변수, 30 -> 값
String -> 데이터 타입, name -> 변수, "김철수" -> 값
변수 이름 규칙
- 문자와 숫자, _, $ 사용 가능
- 숫자로 시작 X
- 대문자와 소문자 구분
- 공백 사용 X
- 미리 예약된 이름 사용 X
표기법
1. 카멜 표기법 (camelCase)
- 가장 앞의 문자는 소문자로, 나머지 단어의 첫 문자는 대문자로 표기
ex) userName, jobName, productNumber
2. 파스칼 표기법 (PascalCase)
- 각 문자의 첫 문자를 대문자로 표기
ex) UserInfo, UserHistory, HomeController
자료형 (Data Type)
변수의 종류, 단위
- 숫자 (Number)
- 부울 (Boolean)
- 문자 (Character)
- 문자열 (String)
- 등
변수의 종류에 따라 담을 수 있는 데이터의 타입과 크기가 다름
자료형 - 숫자 (Number)
숫자 형태의 자료형 - 정수 / 실수 / 2진수, 8진수, 16진수
ex) int age = 20;, long money = 100000L; double taxRate = 0.5;
자료형 - 부울 (Boolean)
참과 거짓을 나타내는 자료형
ex) boolean pass = true;, boolean isEmpty = false;
자료형 - 문자 (Character)
한 개의 문자 표현에 사용하는 자료형
ex) char inputChar = 'a';, char grade = 'f';
// [===== 자료형 - 숫자 =====]
int age = 10; // int 기본타입
Integer.MIN_VALUE // int 타입의 최소값 -2147483648
// 대문자 스네이크 표기법 (상수 = 변하지 않는 값)
long money = 10000000L; // long 타입
float taxRate = 0.25f; // 값 뒤에 f를 꼭 붙여야 한다. 안 붙이면 double 타입
double rate = 0.5;
// [===== 자료형 - 부울 =====]
boolean isPass = true;
boolean isOK = false;
System.out.println(isPass)// true출력
// [===== 자료형 - 문자 =====]
char inputKey = 'a'; // char 타입
System.out.println((int) keyFirst); // int로 형변환한 a값 97 출력 (아스키 코드 값)
자료형 - 문자열 (String)
문자들로 이루어진 집합
String name = "박명수";
String email = "park@gmail.com";
문자열 메소드
ex) equals, indexOf, replace, substring, toUpperCase, ...
자료형 - StringBuffer
문자열을 자주 추가하거나 변경할 때 사용하는 자료형
StringBuffer sb = new StringBuffer("Hello");
StringBuffer 메소드
ex) append, insert, substring
자료형 - 배열 (Array)
많은 수의 데이터를 담을 수 있는 자료형
int[] ageArray = {1, 2, 3, 4, 5};
char[] inputKey = {'a', 'c', 'e'};
// [===== 자료형 - 문자열 =====]
String str = "Hello World!";
System.out.println(str); // Hello Wolrd!
// 메소드
// equals() : 값 비교
String productName = "안경";
String searchData = "안경";
System.out.println(searchData.equals(productName)); // true
// indexOf() : 해당 값의 index 반환 (index는 0부터 시작)
String s1 = "Hello";
System.out.println(s1.indexOf("H")); // 0
// replace() : target 값을 replacement로 교체
String inputData = "aatabb";
String result = inputData.replace("a", "A");
System.out.println(result); // AAtAbb
// substring()
String s2 = "Hello!";
System.out.println(s2.substring(4)); // o! -> beginindex
System.out.println(s2.substring(0, 2)); // He -> beginindex, endindex (0 ~ 1) endindex 전 까지
// toUpperCase() : 대문자로 반환
System.out.println(s2.toUpperCase()); // HELLO!
// [===== 자료형 - 배열 =====]
int[] ages = {10, 11, 50, 40, 20};
System.out.println(ages[0]); // 10
int[] inputData1 = new int[3];
inputData1[0] = 5;
inputData1[1] = 10;
inputData1[2] = 15;
String[] inputData2 = {"name", "gender", "email"};
자료형 - 리스트 (List)
배열과 같이 여러 데이터를 담을 수 있는 자료형
ArrayList list = new ArrayList();
list.add(1);
list.add(2);
추가로 여러가지 메소드를 제공
리스트 메소드
ex) add, get, size, remove, clear, sort, contains
자료형 - 맵 (Map)
key, value 형태로 데이터를 저장하는 자료형
HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 1000);
map.put("orange", 2000);
맵 메소드
ex) put, get, size, remove, containsKey
자료형 - 제네릭스 (Generics)
자료형을 명시적으로 지정
제한적일수 있지만 안정성을 높여주고 형변환을 줄여줌
ArrayList<String> list = new ArrayList<>();
HashMap<String, Integer> map = new HashMap<>();
// [===== 자료형 - 리스트 =====]
ArrayList list = new ArrayList();
// add() : 데이터 추가
list.add(1);
list.add(2);
list.add(3);
System.out.println(list); // [1, 2, 3]
// get() : 해당 값 반환
System.out.println(list.get(0)); // 1
// size() : 리스트 크기 반환
System.out.println(list.size()); // 3
// remove() : 해당 index 값 삭제
System.out.println(list.remove(0)); 1
System.out.println(list); // [2, 3]
// clear() : 리스트 초기화
list.clear();
System.out.println(list); // []
// sort() : 정렬
ArrayList ages = new ArrayList();
ages.add(10);
ages.add(40);
ages.add(20);
ages.add(50);
ages.sort(Comparator.naturalOrder()); // 오름차순
System.out.println(ages); // [10, 20, 40, 50]
ages.sort(Comparator.reverseOrder()); // 내림차순
System.out.println(ages); // [50, 40, 20, 10]
// contains() : 해당 값이 존재하는지 여부 확인
System.out.println(ages.contains(10)); // true
System.out.println(ages.contains(60)); // false
// [===== 맵 =====]
HashMap map = new HashMap();
// put() : 데이터 추가
map.put("apple", 1000);
map.put("orange", 5000);
System.out.println(map); // {apple=1000, orange=5000}
// key와 value 쌍으로 출력. 순서는 보장하지 않는다.
// get() : 데이터 값 반환
System.out.println(map.get("apple")); // 1000
System.out.println(map.get("name")); // null
// size() : 맵 크기 반환
System.out.println(map.size()); // 2
// remove() : key로 데이터 삭제
System.out.println(map.remove("apple")); // 1000
System.out.println(map.remove("김철수")); // null
System.out.println(map); // {orange=5000}
// containsKey : 해당 key가 존재하는지 확인
System.out.println(map.containsKey("apple")); // true
System.out.println(map.containsKey("orange")); // false
// [===== Generics =====]
ArrayList list2 = new ArrayList();
list2.add(1000);
list2.add("Java");
System.out.println(list2); // [1000, Java]
ArrayList<String> names = new ArrayList<>();
// names.add(1000); // String 타입만 가능하기 때문에 1000은 넣을 수 없다.
names.add("유재석");
System.out.println(names); [유재석]
HashMap<String, Integer> productAndPrice = new HashMap<>();
// productAndPrice.put(1000, 2.5); // String, Integer만 들어올 수 있기 때문에 데이터 추가 불가능
productAndPrice.put("orange", 2000);
productAndPrice.put("apple", 10000);
System.out.println(productAndPrice); // {orange=2000, apple=10000}