
| 자료형 | 표현범위 |
|---|---|
| int | -2147483648 ~ 2147483647 |
| long | -9223372036854775808 ~ 9223372036854775807 |
long 변수에 값을 대입할 때 숫자 값이 2147483647 보다 클 경우 L 접미사를 붙여야 함
(생략시 컴파일 에러)
| 자료형 | 표현범위 |
|---|---|
| float | −3.4∗1038 ~ 3.4∗1038 |
| double | −1.7∗10308 ~ 1.7∗10308 |
디폴트가 double, float 변수를 사용하고 싶으면 F접미사를 붙여야 함
e2와 같이 쓰면 10의 제곱 의미
0(숫자 '0')으로 시작하면 8진수, 0x(숫자 '0' + 알파벳 'x')로 시작하면 16진수
int octal = 023; // 십진수: 19
int hex = 0xC; // 십진수: 12
+,-,*,/%++, --i++ : 값이 참조된 후에 증가++i : 값이 참조되기 전에 증가boolean isTall = height>base;char a1 = 'a'; // 문자로 표현
char a2 = 97; // 아스키코드로 표현
char a3 = '\u0061'; // 유니코드로 표현
String a = "happy java”) : 객체 생성없이 고정된 값을 그대로 대입, 문자열을 JVM의 intern pool 이라는 메모리 공간에 저장String b = new String("happy java")) : 항상 새로운 stirng 객체 생성new 키워드로 그 값을 생성할 수 없음원시 자료형의 Wrapper 클래스
원시 자료형은 다음처럼 각각에 대응하는 Wrapper 클래스들이 존재
primitive type(기본 타입) 과 reference type(참조 타입)이 존재기본 타입 : byte, short, char, int, long, float, double, boolean참조 타입 : class, interface ..기본 타입에 해당하는 데이터를 객체로 표현하기 위해 포장해 주는 클래스가 바로 wrapper class(래퍼 클래스)예를 들어, 메소드의 파라미터로 객체 타입만이 요구될 경우
AutoBoxing을 통해)기본 타입은 값을 갖는 객체인 포장 객체를 생성할 수 있다. (기본 타입의 값을 내부에 두고 포장하기때문에 '포장 객체'라 칭한다.)
wrapper class는 각 타입에 해당하는 데이터를 파라미터로 전달받아, 해당 값을 가지는 객체로 만들어준다.wrapper class로 감싸고 있는 기본 타입 값은 외부에서 변경할 수 없다.
- 변경하기 위해서 새로운 포장객체를 만들어야 한다.
| 원시자료형 | Wrapper 클래스 |
|---|---|
| int | Integer |
| long | Long |
| double | Double |
| float | Float |
| boolean | Boolean |
| char | Char |
ArrayList, HashMap, HashSet 등은 데이터를 생성할때 원시 자료형 대신 그에 대응하는 Wrapper 클래스를 사용해야 함
원시 자료형 대신 Wrapper 클래스를 사용하면 값 대신 객체를 주고 받을 수 있어 코드를 객체 중심적으로 작성하는데 유리하다. 또한 멀티스레딩 환경에서 동기화를 지원하기 위해서도 Wrapper 클래스는 반드시 필요하다.
String.format 매서드 사용 ex) String.format(”i love %s”, “you”)
변수나 두 개 이상의 값도 대입 가능
| 코드 | 설명 |
|---|---|
| %s | 문자열(String) |
| %c | 문자 1개(character) |
| %d | 정수(Integer) |
| %f | 부동소수(floating-point) |
| %o | 8진수 |
| %x | 16진수 |
| %% | Literal % (문자 % 자체) |
%s → 어떤 형태의 값이든(정수, 소수..) 전달되는 파라미터 값을 문자열로 바꾸어 사용
%10s → 전체 길이 10인 문자열 공간, 대입되는 값을 오른쪽 정렬하고 나머지는 공백으로
String.format 과 System.out.printf
전자) 문자열 리턴, 후자) 문자열 출력
String.format 없이 바로 포매팅해서 문자열 출력하는 함수
StringBuilder 자료형
StringBuffer와 유사, 멀티 스레드에는 buffer가 적합하고 성능은 얘가 좋음
[] 기호를 사용하여 표현 ex) int 자료형의 배열은 int[] 로 표현한List<자료형> 리스트 명 = new ArrayList(or LinkedList)<자료형(생략가능)>();
import java.util.Comparator; 필요Comparator.naturalOrder()Comparator.reverseOrder()import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
public class Sample {
public static void main(String[] args) {
ArrayList<String> pitches = new ArrayList<>(Arrays.asList("138", "129", "142"));
pitches.sort(Comparator.naturalOrder()); // 오름차순으로 정렬
System.out.println(pitches); // [129, 138, 142] 출력
}
}
ArrayList<String> pitches = **new** **ArrayList**<>(); → arraylist안에 담을 수 있는 자료형은 string타입 뿐이라는 뜻String one = (String) pitches.get(0); // Object 자료형을 String 자료형으로 캐스팅한다.
String.join("구분자", 리스트객체) 형태
put
key와 value 쌍을 추가
import java.util.HashMap;
public class Sample {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("people", "사람");
map.put("baseball", "야구");
}
}
get
key에 해당하는 value값 얻을 때
key에 해당하는 value가 없으면 null이 리턴. 디폴트 값을 얻고 싶을 때는 getOrDefault 메서드를 사용
containsKey
맵에 해당하는 key가 있는지 유무를 참 거짓으로 리턴
remove
맵(Map)의 항목을 삭제하는 메서드로 key값에 해당되는 아이템(key, value)을 삭제한 후 그 value 값을 리턴
****size****
Map의 총 key 갯수를 리턴
keySet
keySet은 맵(Map)의 모든 Key를 모아서 리턴
HashSet<String> set = **new** **HashSet**<>(Arrays.asList("H", "e", "l", "l", "o"));
enum CoffeeType {
AMERICANO,
ICE_AMERICANO,
CAFE_LATTE
};
/**
* countSellCoffee는 판매된 커피의 갯수를 리턴하는 메서드이다.
* @param type 커피의 종류 (CoffeType)
*/
int countSellCoffee(CoffeType type) {
... 생략 ...
}
int americano = countSellCoffee(CoffeType.AMERICANO); // 아메리카노의 판매갯수
문자열→정수 : Wrapper 클래스를 이용 Integer.parseInt(문자열)
정수→문자열 : 정수 앞에 빈 문자열 더하기, String.valueOf(정수), Integer.toString(정수)
문자열→소수 : Double.parseDouble 또는 Float.parseFloat
정수→실수 : double 새로운실수 = 정수;
실수→정수 : int 새로운정수 = (int) 실수; 캐스팅 (int) 을 이용
문자열→실수 : Double.parseDouble() 사용
값을 설정하면 그 값을 다시 설정할 수 없도록 만드는 키워드
프로그램 수행 도중 값이 변경되면 안 될 때 사용
리스트 → final로 선언해도 add와 removesm는 가능. 이거까지도 불가능하게 하고 싶으면 List.of()를 사용해야 함