java 72

[Java]String Constructor

우리가 Wrapper클래스 포스팅에서 메소드를 이용한 여러 타입의 클래스에서 형변환에 대해 알아봤었다. 이번 포스팅에서는 String클래스에서 다른클래스로 또는 다른클래스에서 String클래스로 형변환을 할 때 메소드가 아닌 생성자(Constructor)를 이용하여 형변환하는 법에 대해 알아보도록 하자. 1. byte[] -> String ▲ byte형 배열을 Stirng형으로 형변환해보자. String클래스에서는 생성자의 인자로 byte형 배열을 받으면 그것을 곧 String형 배열로 변환해주는 기능을 가지고 있다. 또한 byte[] 뒤에 시작인덱스와 원하는 갯수를 넣어주면 해당 인덱스부터 원하는 갯수만큼의 데이터를 반환하는 기능도 있다. ▲ byte배열에 있던 숫자데이터들이 String으로 바뀌면서 ..

Java 2022.03.14

[Java]싱글톤 디자인(Single Tone Design)

싱글톤 디자인(Single Tone Design)이란? 클래스를 설계하는 디자인 패턴의 하나로, 하나의 인스턴스 즉, 하나의 메모리를 생성해 이를 공유하고자 할 때 사용하는 패턴이다. 즉 하나의 메모리를 서로 공유해서 사용하므로, 값 변경 시 문제가 발생할 수 있는 경우는 읽기전용으로 하자. 읽기전용이라는 것은 getter만 가지는 것을 예로 들 수 있다. 대표적으로 java.util패키지의 Calendar클래스가 있다. 싱글톤 디자인의 방법 생성자의 접근 지정자를 private으로 한다. 정적 메소드로 해당 클래스의 객체를 반환하도록 정의한다. 싱글톤을 사용한 것과 하지 않은 것의 차이를 알기위해 우선 싱글톤을 사용하지 않은 경우부터 예제로 보자. ▲ 위 코드를 출력해보자 ▲ NoSingleTone 타..

Java 2022.03.14

[Java]생성자(Constructor)

생성자란? : 객체가 생성될 때(인스턴스화) 최초로 실행되는 메소드를 의미한다. 생성자의 특징 생성자 이름은 클래스명과 동일해야 한다. 반환타입을 가져선 안된다. 생성자의 접근지정자로는 주로 public속성을 가진다. 생성자의 역할 ★맴버 변수를 초기화 하는일을 한다. 생성자를 정의하지 않았을 경우 컴파일러는 default(기본)생성자를 제공한다. 인자 생성자를 하나라도 정의했다면, 그 때는 컴파일러가 default(기본)생성자를 제공하지 않는다. 생성자를 다양하게 오버로딩 함으로써 다양한 초기값을 부여할 수 있다. 생성자의 형식은 아래와 같다. 클래스명() ▲클래스명과 그 뒤에 소괄호를 열고 닫아주면 생성자가 된다. 1) 기본생성자 미 사용 ▲ Saram이라는 클래스를 만들고 해당 클래스 안에 초기화용..

Java 2022.03.11

[Java]Over loading(중복 정의)

Overloading이란? : 하나의 클래스 안에서 같은 이름의 메소드를 여러개 정의하는 것을 말한다. 오버로딩을 위한 조건 : 매개변수 갯수가 다르거나 갯수가 같다면 매개변수 타입이 다르거나 타입과 갯수가 같다면 매개변수 순서가 달라야한다. 위 조건에 부합하면 메소드의 이름이 같아도 다른 메소드로 본다. 단, 반환타입과는 전혀 관계가 없다. 원래는 하나의 클래스안에서 메소드를 중복정의해서 사용할 수 없지만 오버로딩을 통해서 가능한 것이다. 예제를 보면서 알아보자 ▲ 위 두 메소드는 메소드명이 같다. 또한 매개변수의 갯수와 타입 그리고 순서가 모두 같기 때문에 오버로딩이아닌 그저 같은 메소드인 것이다. 각각 반환타입이 int형과 String형이고 return하는 값도 다르지만 이러한 조건은 오버로딩과는 ..

Java 2022.03.11

[Java]this

this의 규칙과 사용이유 예제를 통해 무슨말인지 알아보도록 하자. 우선 인스턴스형 맴버와 정적맴버들을 만들자. 이제 인스턴스형 메소드안과 정적메소드안에서 this를 각각 사용해보도록 하자 우선 인스턴스형 메소드안부터 해보자 ▲ 맨 위 this의 규칙에서도 말했지만 this는 자기가 속해있는 클래스를 가리킨다. 즉, this는 곧 클래스라고 생각하면된다. 따라서 우리가 A라는 클래스에서 B라는 클래스를 선언과 동시에 인스턴스화를 하고 나면 B. 으로 B클래스에 소속되어 있는 맴버들을 사용할 수있듯이 this. 하면 해당 this가 소속되어있는 클래스의 모든 맴버들을 사용할 수 있는 것이다. 또한 this의 규칙에서 this는 인스턴스형 맴버에 접근할 때 사용하는 키워드라고 했지만 정적맴버에 접근할 때 사..

Java 2022.03.11

[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]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