
며칠 뒤, 일주일 전 등 날짜를 계산할 때 add()와 roll() 를 사용한다. - add() 메소드 : 특정 필드의 값을 증가 또는 감소 시키는 것이다. (다른 필드에 영향 O) 8월 31일에서 add를 사용하여 1을 더하면 9월 1일이 된다. - roll() 메소드 : 특정 필드의 값을 증가 또는 감소 (다른 필드에 영향 X) 8월 31일에 roll() 메소드로 1일을 더하면 8월은 그대로고 일만 1일로 변환이 된다. 캘린더를 출력하는 코드를 작성해보자! import java.util.Calendar; public class Main { public static void main(String[] args) { //지정하고 싶은 연,월 int year = 2023; //args[0] int month..
날짜와 시간을 사용할 수 있는 패키지를 알아보자. Date 패키지, Calendar 패키지, time 패키지 순서로 발전이 되었다. 현재는 Date와 Calendar 패키지만 다루어 볼 것이다. 지금은 Calendar 패키지를 배워보면서 감을 익히고 추후 time 패키지를 차근차근 보면 쉽게 익힐 수 있을 것이다. Calender() 클래스는 추상 클래스 이므로, new 키워드로 인스턴스를 생성할 수 없다. getInstance() 로 생성해야한다. 해당 메소드로 인스턴스를 반환하면 사용자 시스템을 읽어와서 어떤 캘린터를 사용하는지 판단하여 서양력, 불교력, 일본력 중 하나를 반환해주는 것이다. Calendar cal = Calendar.getInstance(); //인스턴스를 생성하면 //Calenda..
문자열과 숫자로 변환하는 방법은 무엇일까? 문자열을 숫자로 변환 하는 방법은 여러가지가 존재한다. 지금까지 배웠던 내용은 아래와 같다. intValue() : wrapper 클래스를 기본형으로 바꾸는 방법 Integer.parseInt() : Integer 클래스 사용 Integer.valueOf() : 기본형 int 또는 wrapper 클래스로 바꾸는 방법 Byte b = new Byte("100") - 문자열 100을 Byte 래퍼 클래스로 변환 String str = b.toString() - 위의 Byte타입 100을 문자열로 바꾸는 방법 n진법의 문자열을 숫자로 변환하는 방법을 알아보자. 기존의 parseInt() 메소드는 기본 default가 10진수로 변환시켜주는 것이다. i4 변수를 보면,..
wrapper 클래스란? 8개의 기본형 (boolean, char, int, long 등) 을 객체로 다뤄야할 때 사용하는 클래스 기본형 첫글자를 대문자로 바꾸기만 하면 된다. 원래 Java는 객체 지향언어이기 때문에, 객체로 다루어야한다. 하지만 왜, 기본형들은 객체 처리를 안했을까? 답은 성능 때문이다. 기본형 : 직접 접근 가능 참조형: 참조 변수를 만들고, 참조 변수를 객체 주소에 연결 아래와 같이 예제로 살펴 보자. equals() : true가 나온 이유는 오버라이딩 되어있기 때문에 값을 비교한다. ==로 비교하면 주소값을 비교하는 것이므로 false가 출력 compareTo() : 같으면 0, 왼쪽보다 오른쪽이 더 크면 음수, 작으면 양수이다. toString() : 문자열로 출력 Integ..
StringBuilder 란? 기존 우리가 알고 있는 StringBuffer와 비슷한 StringBuilder가 존재한다. 둘의 차이점은 아래와 같다. StringBuilder - 동기화가 되지 않는다. - 싱글 쓰레드 StringBuffer - 동기화가 된다. - 멀티 쓰레드 동기화: 멀티 쓰레드에 안전 (thread-safe)하게 해주는 것 싱글 쓰레드 : 한번에 1개 작업 멀티 쓰레드: 한번에 n개 작업 지금까지 배운 내용들은 싱글 쓰레드이다. 추후 자바의 정석 13장에서 멀티 쓰레드를 배울 예정이다. 멀티 쓰레드 프로그램이 아닌 경우, 동기화는 불필요한 성능 저하가 된다. 싱글 쓰레드 프로그램에서는 StringBuffer 대신 StringBuilder를 사용하는 것이 성능에 향상이 된다. 싱글 쓰..
변수의 초기화 지역변수(lv)는 수동 초기화 해야한다. (사용전 꼭!!!) class InitTest{ int x; //멤버 변수는 자동으로 초기화 된다. int y = x; void method() { int i; //지역변수 int j = i; //에러. 지역변수를 초기화하지 않고 사용 } } 자료형 기본값 boolean false char '\u000' byte, short, int 0 long 0L float 0.0f double 0.0d 또는 0.0 참조형 null 멤버변수(클래스 변수와 인스턴스 변수)와 배열의 초기화는 선택이지만, 지역변수의 초기화는 필수이다. 멤버변수의 초기화 1. 명시적 초기화 (=) (간단한 초기화에서 사용한다.) class Car { int door = 4; // 기본..
생성자에서 다른 생성자 호출할 때 사용 다른 생성자 호출시 첫 줄에서만 사용가능 생성자의 이름으로 클래스이름 대신 this를 사용한다. 한 생성자에서 다른 생성자를 호출할 때는 반드시 첫줄에서만 호출이 가능하다. 코드의 중복을 제거하기 위해 생성자들끼리 호출한다. class Car { String color; String gearType; int door; Car(){ this("white", "auto", 4); } Car(String c, String g, int d){ color = c; gearType = g; door = d; } } 참조변수 this 인스턴스 자신을 가르키는 참조 변수 (객체 자기 자신) 인스턴스 메서드(생성자 포함)에서 사용가능 지역변수(lv)와 인스턴스 변수(iv)를 구별할..
생성자 = iv 초기화 메서드 인스턴스가 생성될 때마다 호출되는 '인스턴스 초기화 메서드' 이다. 인스턴스 생성시 수행할 작업(iv) 초기화에 사용 생성자의 이름은 클래스의 이름과 같아야 한다. 생성자는 리턴 값이 없다. (void 안붙임) 모든 클래스는 반드시 생성자를 가져야 한다. 기본 생성자 (default constructor) 매개변수가 없는 생성자이다. 생성자가 하나도 없을 때만, 컴파일러가 자동 추가 클래스이름() {} //기본 생성자 Point() { //Point클래스의 기본 생성자 class Data_1 { int value; } class Data_2 { int value; Data_2(int x) { value = x; } } public class Main { public stat..