자료형 | 표현범위 |
---|---|
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()를 사용해야 함