목차
Wrapper 클래스
- 기본 타입에 해당되는 Wrapper 클래스가 있다.
- Wrapper 클래스는 Object 클래스와 객체의 중간 매개체 연결을 한다.
- Object는 모든 참조변수를 받아낼 수 있기 때문에
- => 다양한 타입을 파라미터로 받기가 가능해진다.
- 기본자료형(int, float, String 등)이 부모타입(Object)으로 캐스팅이 가능해진다.
- 기본자료형의 특성과 기능의 표현이 가능해진다. (Integet.parseInt()를 통한 인티저 사용 가능)
public class Ex01 {
public static void main(String[] args) {
func01(new Ex01());
func01(1111);
func01(3.14);
func01(new Double(3.14)); // 원칙적으로 불가능하지만 자동 박싱을 통해 가능해진다.
}
public static void func01(Object a) {
System.out.println(a);
}
}
Integer
// 10진수 정수타입
int su1 = 1111;
Integer su2 = new Integer(2222);
System.out.println(su2 + su1);
Integer su3 = new Integer("3333");
System.out.println(su3 + 1);
Integer su4 = 4444; // 오토박싱 - 객체화
System.out.println(su4 + 1);
Integer su5 = new Integer(5555); // 언박싱
System.out.println(su5 + 1);
System.out.println(Integer.MIN_VALUE); // -2147483648
System.out.println(Integer.MAX_VALUE); // 2147483647
System.out.println(Integer.SIZE + "bit"); // 32bit
System.out.println(Integer.SIZE / 8 + "byte"); // 4byte
int su6 = Integer.parseInt("6666");
System.out.println(su6 + 1);
Integer su7 = Integer.valueOf("128");
System.out.println(su7 + 1);
byte su8 = su7.byteValue();
System.out.println(su8); // -128
int tmp1 = 1111;
Integer tmp2 = new Integer(1111);
Integer tmp3 = new Integer("1111");
System.out.println(tmp1 == tmp2); // true
System.out.println(tmp1 == tmp3); // true
System.out.println(tmp2 == tmp3); // false
System.out.println(tmp2.equals(tmp3)); // true
System.out.println(tmp2.equals(1111)); // true (1111은 Integer로 박싱이 일어난 후 계산된다.)
System.out.println(Integer.sum(1, 2)); // int의 sum을 반환
int su9 = 2222;
System.out.println(su9 + "의 2진수: " + Integer.toBinaryString(su9)); // 100010101110
System.out.println(su9 + "의 8진수: " + Integer.toOctalString(su9)); // 4256
System.out.println(su9 + "의 16진수: " + Integer.toHexString(su9)); // 8ae
int tmp = 0xf;
System.out.println(tmp + "의 2진수: " + Integer.toBinaryString(tmp)); // 1111
System.out.println(tmp + "의 8진수: " + Integer.toOctalString(tmp)); // 17
System.out.println(tmp + "의 16진수: " + Integer.toHexString(tmp)); // f
System.out.println(Integer.parseUnsignedInt("10", 2)); // 2
System.out.println(Integer.parseUnsignedInt("10", 8)); // 8
System.out.println(Integer.parseUnsignedInt("10", 10)); // 10
System.out.println(Integer.parseUnsignedInt("10", 16)); // 16
System.out.println(su2.compareTo(-56)); // 1 (차이를 반환한다.)
System.out.println(Integer.compare(1, 3)); // 작으면 -1, 같으면 0, 크면 1을 반환
Byte
Byte su1 = new Byte("127");
// Byte su2 = new Byte(127); // 127은 int타입이기 때문에 불가
Byte su3 = 127;
Byte su2 = new Byte(su3);
Long
Long su4 = new Long("1234");
Long su5 = new Long(1234); // 오토캐스팅으로 가능하게 됨
Long su6 = new Long(1234L); // 수동캐스팅
Double
Double su1 = 3.14;
Double su2 = new Double("3.14");
System.out.println(su2);
Double su3 = new Double(3.14);
System.out.println(su3);
Double su4 = new Double(3);
System.out.println(su4);
Double su5 = new Double("12");
System.out.println(su5);
double su6 = su5;
Double su7 = su6;
System.out.println(su7);
double su8 = Double.parseDouble("3.14");
System.out.println(su8);
su1 = 2.0;
su2 = 0.0;
double su9 = su1 / su2;
System.out.println(Double.isInfinite(su1/su2)); // true
System.out.println(su9); // infinity
su1 = 0.0;
su2 = 0.0;
su9 = su1 / su2;
System.out.println(Double.isInfinite(su1/su2)); // false
System.out.println(Double.isNaN(su1/su2)); // true
System.out.println(su9); // NaN
Float
Float su1 = new Float("3.14");
Float su2 = new Float(3.14F); // float을 매개변수로 받음
Float su3 = new Float(3.14); // Double을 매개변수로 받음
System.out.println(su2);
Boolean
boolean boo1 = true;
Boolean boo2 = new Boolean("true");
Boolean boo3 = new Boolean("TRUE");
Boolean boo4 = new Boolean(true);
Number
- Number는 실수와 정수 클래스의 상위 객체이다.
- 추상클래스여서 객체 생성이 안된다.
public static void main(String[] args) {
// Number num = new Number(); // 생성 불가능
Number num1 = new Integer(1);
Number num2 = new Double(3.14);
System.out.println(num1.intValue() + num2.doubleValue());
Number num3;
num3 = 1;
System.out.println(num3); // 1 (integer)
num3 = 1.0 + 1;
System.out.println(num3); // 2.0 (double)
System.out.println(div(6, 3)); // 2
System.out.println(div(3, 5)); // 0.6
}
public static Number div(int a, int b) {
if(a % b != 0) return 1.0 * a / b;
return a / b;
}
Char
char ch1 = 'A';
Character ch2 = new Character(ch1);
Character ch3 = new Character('a');
Character ch4 = new Character((char)97); // a
char ch5 = 'a';
System.out.println("Java에서 사용 가능한 문자인가 : " + Character.isLetter(ch5)); // true
System.out.println("언어 문자인가 : " + Character.isJavaLetter(ch5)); // true (deplicates)
System.out.println("언어 문자인가 : " + Character.isDefined(ch5)); // UNICODE인지 확인
System.out.println("언어 문자인가 : " + Character.isAlphabetic(ch5)); // true
System.out.println("숫자인가 : " + Character.isDigit(ch5)); // false
// => 둘 다 false일 경우 특수문자
char tmp = ' ';
System.out.println("공백인가 : " + Character.isSpace(tmp)); // (deplicated)
System.out.println("공백인가 : " + Character.isWhitespace(tmp));
// 계행의 경우
System.out.println("유닉스 \n");
System.out.println("윈도우 \r \n");
System.out.println("----");
String (StringBuilder)
String msg1 = "java";
String msg2 = new String("java");
// 둘의 차이점은 스레드의 안정성
StringBuilder msg3;
StringBuffer msg4;
msg3 = new StringBuilder("ja");
System.out.println(msg3 + "va");
// StringBuilder msg5 = msg3 + " spring"; // String와 연산하면 String이 되기 떄문에 수행할 수 없다.
// String과 달리 새로운 객체를 만들지 않고 자기자신을 반환한다.
StringBuilder msg6 = msg3.append("va"); // java
System.out.println(msg6);
StringBuilder msg7 = msg3.append("2"); // java2
System.out.println(msg7);
StringBuilder sb = new StringBuilder("Java");
sb.append(" DB");
sb.append(" Web");
sb.append(" Spring");
System.out.println(sb);
// 수정하기
sb.replace(5, 7, "DataBase");
System.out.println(sb);
// 삭제하기
sb.delete(14, 18);
System.out.println(sb);
// 추가입력
sb.insert(14, "WEB ");
System.out.println(sb);
// 인덱스찾기
System.out.println(sb.charAt(3));
System.out.println(sb.indexOf("Data")); // 5 (Java DataBase WEB Spring)
// 배열로 받기
char[] arr1 = new char[sb.length()];
sb.getChars(0, sb.length(), arr1, 0);
System.out.println(java.util.Arrays.toString(arr1));
// 뒤집기
sb.delete(4, sb.length());
sb.reverse();
System.out.println(sb);
// Char 바꾸기
sb.setCharAt(0, 'A');
System.out.println(sb);
// 문자 붙이기
String msg1 = "java";
String msg2 = " web";
char[] arr1 = new char[msg1.length() + msg2.length()];
char[] arr2 = msg1.toCharArray();
char[] arr3 = msg2.toCharArray();
System.arraycopy(arr2, 0, arr1, 0, arr2.length);
System.arraycopy(arr3, 0, arr1, arr2.length, arr3.length);
msg1 = new String(arr1);
System.out.println(msg1);
// 메모리 증량 : 16 -> 34(17*2) -> 70(35*2) -> 142(71*2)
StringBuffer sb = new StringBuffer();
System.out.println(sb.length()); // 0
System.out.println(sb.capacity()); // 16 (메모리는 항상 초기입력수+16)
for(int i = 0; i < 17; i++) sb.append("a");
System.out.println(sb.length()); // 17
System.out.println(sb.capacity()); // 34
// 메모리 사이즈 잘라내기
sb.trimToSize();
System.out.println(sb.capacity()); // 17
// 초기 메모리사이즈 설정하기
StringBuffer tmp = new StringBuffer(6);
System.out.println(tmp.length());
System.out.println(tmp.capacity()); // 6
'100일 챌린지 > 빅데이터기반 인공지능 융합 서비스 개발자' 카테고리의 다른 글
Day 11 - generic, 순서가 없는 자료구조(Enumeration),그리고 Map (0) | 2024.08.05 |
---|---|
Day10 - 동적할당, 자료 구조, List와 Set (0) | 2024.08.02 |
Day 08 - 인터페이스와 java.lang 클래스 (0) | 2024.07.31 |
Day 07 - 상속 (0) | 2024.07.30 |
Day 06 - break, return, continue 그리고 배열 복사와 String의 기능들 (0) | 2024.07.29 |