public class MyInteger {
private final int value;
public MyInteger(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public int compareTo(int target) {
if (value < target) {
return -1;
} else if (value > target) {
return 1;
} else {
return 0;
}
}
@Override
public String toString() {
return String.valueOf(value);
}
}
public class MyIntegerMethodMain1 {
public static void main(String[] args) {
MyInteger myInteger = new MyInteger(10);
int i1 = myInteger.compareTo(5);
int i2 = myInteger.compareTo(10);
int i3 = myInteger.compareTo(20);
System.out.println("i1 = " + i1);
System.out.println("i2 = " + i2);
System.out.println("i3 = " + i3);
}
}
public class MyIntegerNullMain1 {
public static void main(String[] args) {
MyInteger[] intArr = {new MyInteger(-1), new MyInteger(0), new MyInteger(1)};
System.out.println(findValue(intArr, -1));
System.out.println(findValue(intArr, 0));
System.out.println(findValue(intArr, 1));
System.out.println(findValue(intArr, 1000));
}
private static MyInteger findValue(MyInteger[] intArr, int target) {
for (MyInteger myInteger : intArr) {
if (myInteger.getValue() == target) {
return myInteger;
}
}
return null;
}
}
public class WrapperClassMain {
public static void main(String[] args) {
Integer newInteger = new Integer(10); // 미래에 삭제 예정, 대신에 valueOf() 를 사용
Integer integerObj = Integer.valueOf(10); // -128 ~ 127 자주 사용하는 숫자 값 재사용, 불변
System.out.println("newInteger = " + newInteger);
System.out.println("integerObj = " + integerObj);
Long longObj = Long.valueOf(100);
System.out.println("longObj = " + longObj);
Double doubleObj = Double.valueOf(10.5);
System.out.println("doubleObj = " + doubleObj);
System.out.println("내부 값 읽기");
int intValue = integerObj.intValue();
System.out.println("intValue = " + intValue);
long longValue = longObj.longValue();
System.out.println("longValue = " + longValue);
System.out.println("비교");
System.out.println("== : " + (newInteger == integerObj));
System.out.println("equals " + (newInteger.equals(integerObj)));
}
}
public class AutoBoxingMain2 {
public static void main(String[] args) {
int value = 7;
Integer boxedValue = value; // 오토 박싱(Auto-boxing)
int unboxedValue = boxedValue; // 오토 언박싱(Auto-unboxing)
System.out.println("boxedValue = " + boxedValue);
System.out.println("unboxedValue = " + unboxedValue);
}
}
public class WraperUtilsMain {
public static void main(String[] args) {
Integer i1 = Integer.valueOf(10); // 객체형 반환
Integer i2 = Integer.valueOf("10"); // 객체형 반환
int i = Integer.parseInt("10"); // 기본형 반환
// 비교
int compareResult = i1.compareTo(20);
System.out.println("compareResult = " + compareResult);
// 산술 연산
System.out.println("sum : " + Integer.sum(10, 20));
System.out.println("min : " + Integer.min(10, 20));
System.out.println("max : " + Integer.max(10, 20));
}
}
public class WrapperVsPrimitive {
public static void main(String[] args) {
int iterations = 1_000_000_000;
long startTime, endTime;
// 기본형 사용
long sumPrimitive = 0;
startTime = System.currentTimeMillis();
for (int i = 0; i < iterations; i++) {
sumPrimitive += i;
}
endTime = System.currentTimeMillis();
System.out.println("sumPrimitive = " + sumPrimitive);
System.out.println(endTime - startTime + "ms");
// Wrapper 클래스 사용
Long sumWrapper = Long.valueOf(0L);
startTime = System.currentTimeMillis();
for (int i = 0; i < iterations; i++) {
sumWrapper += i;
}
endTime = System.currentTimeMillis();
System.out.println("sumWrapper = " + sumWrapper);
System.out.println(endTime - startTime + "ms");
}
}
public class ClassMetaMain {
public static void main(String[] args) throws ClassNotFoundException {
// class 조회
Class<String> clazz = String.class;
// Class<? extends String> clazz1 = new String().getClass();
// Class<?> clazz2 = Class.forName("java.lang.String");
// 모든 필드 출력
Field[] declaredField = clazz.getDeclaredFields();
for (Field field : declaredField) {
System.out.println("field = " + field.getType() + " :: " + field.getName());
}
// 모든 메서드 출력
Method[] declaredMethods = clazz.getDeclaredMethods();
for (Method declaredMethod : declaredMethods) {
System.out.println("declaredMethod = " + declaredMethod);
}
// 수퍼클래스 출력
Class<? super String> superclass = clazz.getSuperclass();
System.out.println("superclass = " + superclass);
Class<?>[] interfaces = clazz.getInterfaces();
for (Class<?> anInterface : interfaces) {
System.out.println("anInterface = " + anInterface);
}
}
}
public class Hello {
public String hello() {
return "hello!";
}
}