Java 81

[Java]캡슐화(Encapsulation) - 진짜 캡슐화

저번포스팅에서는 캡슐화를 하였을 때 보호되는 데이터에 접근하는 법과 데이터를 변경하는 법에 대해 알아봤다. 이번 포스팅에서는 진짜 캡슐화를 해보도록하자. 바로 예제를 보면서 해보자 이번 예제는 감기걸린사람이 낫기위해 복용하는 약을 캡슐화 해볼 것이다. 1) 재채기멈춤을 위한 메소드 ▲ 재채기를 위한 클래스를 만들고 take()메소드를 호출한다면 약을 복용했기에 재채기가 멈춘다는 메소드이다. 2) 콧물멈춤을 위한 메소드 ▲ 콧물멈춤을 위한 클래스를 만들고 take()메소드를 호출한다면 약을 복용했기에 콧물이 멈춘다는 메소드이다. 3) 기침멈춤을 위한 메소드 ▲ 기침멈춤을 위한 클래스를 만들고 take()메소드를 호출한다면 약을 복용했기에 기침이 멈춘다는 메소드이다. 이제 이 3가지 메소드를 사용해서 감기를..

Java 2022.03.11

[Java]캡슐화(Encapsulation) - Getter와 Setter

객체 지향 프로그램(OOP)의 두번째 특징 '캡슐화' 캡슐화(은닉화)란? 관련있는 데이터를 하나로 묶거나 맴버변수에 외부에서(다른 크래스)접근 못하도록 막는 것을 말한다. 단, 메소드를 통해서 맴버변수의 값을 읽거나 설정하도록 한다. 말그대로 캡슐안에 넣어서 외부에서 내용물을 쉽게 못바꾸게 하거나 관련있는 것들 끼리 하나의 캡슐에 넣는 것을 말한다. 이렇게 캡슐에 둘러싸여서 보호되고 있는 데이터에 접근하는 방법에는 두 가지가 있는데, Getter와 Setter이다. Getter는 Get, 말 그대로 데이터를 가져오는 역할을 한다. 접근지정자가 private인 맴버변수의 값을 읽을 수 있는 메소드이다. ▲Getter의 형식은 위와 같으며 외부에서 private한 데이터에 접근할 수 있어야 하므로 publi..

Java 2022.03.11

[Java]Date 클래스

날짜와 시간을 다를 때 많이 쓰는 Date클래스에 대해 알아보자. 대부분의 메소드는 Deprecated되어있다. 즉, 버전이 업데이트 되면 없어지는 메소드들이 많다. 그래서 메소드들을 쓸 때 잘 살펴보고 사용해야지 그렇지 않으면 높은 버전에서 기존코드를 사용했을 때는 없는 메소드가 되어서 에러가 생길 수 있다. Date()나 Date(long date)를 제외한 모든 생성자와 대부분의 메소드가 Deprecated되었다. 때문에 현재는 Calendar클래스나 GregorianCalendar클래스를 사용하기를 권장하고 있다. 또한 Date클래스의 toString()메소드 역시 메모리의 주소를 문자열로 반환하는 것이 아니라 저장된 날짜 데이터를 문자열로 반환되도록 Over ride되어있다. 대부분의 Date클..

Java 2022.03.10

[Java]Math 클래스

Math클래스는 필드(상수), 메서드 모두 static이 붙어있다. 즉, 정적맴버들이기 때문에 클래스명.메소드(); 형식으로 사용한다. 또한 생성자가 private이라서 인스턴스화가 불가능 하다. ▲ Math클래스 사용할 때는 static이 붙어있으므로 모두 Math.메소드명(혹은 상수) 형식으로 사용한다. 이제부터 Math클래스의 주요 메소드들을 살펴보자. ▲ abs()메소드는 absolute의 약자로 절대값 기능을 하는 메소드이다. 반환타입은 매개변수 타입에 따라 결정된다는 것이 특징이다. ▲ double형 데이터를 입력받아 올림처리를 하여 double형 값으로 반환해주는 메소드이다. ▲double형 데이터를 입력받아 내림처리를 하여 double형 값으로 반환해주는 메소드이다. ▲ 반올림을 하여 반환..

Java 2022.03.10

[Java]Regular Expression(정규표현식)

어떤 문자열이 특정 패턴을 갖는지 판단하거나 데이터를 추출할 때 정규표현식을 사용한다. 정규표현식에는 정말 많은 특수문자들이 많기 때문에 다 외우기는 힘들고, 그때그때 찾아서 하거나 자꾸 쓰면서 익숙해지는게 좋다. 예제를 보면서 알아보도록 하자. 이메일형식인지 아닌지를 알아보기 위한 기능을 만들어보려면 ▲ Pattern 클래스에 있는 complie메소드에 우리가 원하는 표현식을 인자로 넣어서 complie시킨다. 이후 pattern()메소드를 사용해보면 우리가 인자로 준 표현식이 잘 들어간 것을 알 수 있다. ▲ 입력받은 이메일 주소를 pattern클래스의 matcher()메소드를 통해서 String형을 Matcher형으로 형변환을 한다. ▲ matcher클래스의 start와 end메소드를 사용해서 매칭..

Java 2022.03.10

[Java]String Buffer

문자열을 나타내는 클래스는 총 3가지가 있다. String, String Buffer 그리고 String Builder다. 세 종류 클래스의 차이점은 String은 원본 메모리가 불변(immutable)이다. 즉, String클래스의 메소드를 이요해서 새로운 문자열을 생성하면 원래 문자열은 변하지 않고 새롭게 생성된 문자열을 저장하기 위해서 메모리가 새롭게 생성된다. 이런 메모리 낭비를 막기위해 String Buffer클래스 또는 String Builder클래스가 사용된다. 즉 StringBuffer클래스와 StringBuilder클래스는 원본 값이 변한다.(mutable) 가장 많이 사용하는 것은 String클래스이다. 이번 포스팅에서는 StringBuffer 클래스의 주요 메소드에 대해 알아보자. ▲..

Java 2022.03.09

[Java]String 클래스 Basic

기본 자료형(byte/short/int/long/char/float/double)에서 '=='는 실제 저장된 값을 비교하는 비교연산자로 쓰였다. 하지만 참조형(Stirng,배열,클래스,인터페이스)에서 '=='는 주소를 비교하는 주소비교연산자로 쓰인다. (단, 같은 클래스 타입끼리만 비교가 가능하다.) ▲ 우선 기본자료형부터 비교연산자를 이용해 비교해보자. 당연히 똑같은 20을 가지고 있으므로 '같다'가 나올 것이다. 이번에는 참조형에서 사용을 위해 클래스형을 사용해보자. ▲ 두 종류의 클래스를 만들고 인스턴스화(객체화)(메모리 할당)까지 해주었다. ▲ 클래스가 다른 a와 b의 주소를 비교하려고 했더니 'Incompatible operand types A and B' error가 나면서 비교가 되질 않는다..

Java 2022.03.09

[Java]Wrapper class - part.3(Character)

char형의 wrapper클래스는 Character이다. ▲ 첫행에서 auto-boxing을, 두번째 행에서는 auto-Unboxing을 하였다. 어쨋든 모두가 character형이다. [Character class의 주요 method] 1) CodePointAt ▲ 문자열 ABCD에서 index 2번에 위치한 C의 아스키 코드값은 67이므로 결과값은 67이 출력된다. 2) isDigit ▲ isDigit은 'Is it digital?'이다. digital은 0부터9까지의 아라비아숫자를 뜻한다. 반환은 boolean형태로 되며 인자로 char형 또는 아스키코드값을 받을 수 있다. 3) isLetter ▲ isLetter는 'Is it Letter?'이다. 문자인가요? 라고 묻는 것과 같으며 문자이면 tr..

Java 2022.03.08

[Java]Wrapper class - part.2(Integer)

[Integer Wapper클래스의 주요 메소드] 1) 숫자형식의 문자열을 숫자로 변경 ▲ 두번째 코드에서 숫자 10과 문자열1000을 더하면 즉, int형과 String형을 더하면 String형으로 연산되며 출력된다. 따라서 결과값이 101000이라는 문자열로 출력된 것이다. parseInt와 valueOf는 오직 숫자형식의 문자열'만'을 인자로 입력받으며 해당 문자열을 parseInt는 int형으로, valueOf는 Integer형으로 변경하여 반환한다. 둘다 어쨌든 숫자형인것이다. 따라서 3행과 4행은 숫자형식의 문자열인 "1000"을 다시 숫자형으로 바꾸어서 10과 연산을 하기때문에 1010이 나온다. ▲ "1억원"은 숫자형식의 문자열이 아니므로 parstInt나 valueOf를 사용할 수 없다...

Java 2022.03.08

[Java]Wrapper class - part.1

Wrapper class란? 기본형의 값을 참조형으로 사용해야 하는경우 사용되는 클래스를 의미하며 기본형의 값을 참조형으로 포장한다는 의미로 WARAPPER 클래스라 부른다. JDK1.4이전 버전에서는 엄격하게 구분 되었으나 JDK5.0 이상 버전에서는 auto-boxing및 auto-unboxing지원으로 쉽게 변환 가능하다. Auto-boxing : 기본 자료형이 자동으로(auto) 참조형(wrapper클래스)으로 바뀌는 것 ex.) int -> Integer Auto-unboxing : 참조형(Wrapper클래스)이 기본자료형으로 자동으로 바뀌는 것 ex.) Integer -> int ▲ int형인 num1을 num1Obj이라는 int형 클래스인 Integer클래스로 auto-boxing하였다. I..

Java 2022.03.08