본문 바로가기

Spring/Java8

[Java] String Builder 데일리코딩 문제 중 순서가 뒤집힌 문자열을 리턴해야할때 사용한다. StringBuilder : 내부에 버퍼를 가지고있어 변경 가능한 문자열을 만들때 사용한다. StringBuilder.reverse 메서드를 사용하여 문자열을 뒤집을 수 있다. * 내부에 버퍼를 갖고 있다는 뜻 = 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 저장할 수 있다 연산이 많은 경우에는 String 계산보다 빠르고 효율적이여서 StringBuilder를 사용한다고 함. class Main { public static void main(String[] args) throws IOException { String str = "Study Hard!"; //스트링빌더 객체 선언 StringBuilder sb = new S.. 2022. 9. 26.
[JAVA - OOP 심화4] 추상화 ✨추상화 : 상속과 반대개념이라 생각해도 무방, 기존 클래스들의 공통적인 요소를 뽑아서 상위 클래스를 만듬 → 상위 클래스 or 하위 클래스를 만들어도 ㅇㅋ ✨장점 : 코드의 중복 줄일수 있고, 클래스 간 관계 설정 가능, 유지/보수 용이해짐 ✨abstract 제어자 : (기타제어자 중 하나) ‘추상적인’ = ‘미완성’ 메서드 앞에 붙은 경우 : 추상 메서드(메서드 시그니처만 有, 바디는 無) 클래스 앞에 붙은 경우 : 추상 클래스 → 클래스에 추상 메서드 포함시 자동으로 추상 클래스! ✨추상 클래스 - 객체 생성 불가함 그런데 추상 클래스를 왜 만들까? 상속관계에 있어 새로운 클래스 작성에 유용함 : 상위 클래스에서는 선언부만, 하위 클래스에서는 구체적 작성해서 유연한 대응 가능함 (오버라이딩 - 각각.. 2022. 9. 8.
[JAVA - OOP 심화3] 다형성 ✨다형성 (polymorphism) :하나의 객체가 여러가지 형태를 가질 수 있는 성질 = 상위 클래스 타입의 참조변수를 통해 하위 클래스의 객체를 참조할 수 있도록 허용 ✨핵심 : 상위클래스 → 하위클래스 객체 참조 가능 반대는 불가능하다! (상위 → 하위는 기능 보유..) (하위→ 상위는 하위의 추가된 기능들을 상위가 어떻게 가능해? 안되기 때문.. ) ✨예시 : 오버라이딩, 오버로딩 ✨참조변수 - 타입변환 가능 : 사용할 수 있는 멤버 갯수 조절 ✨타입 변환 위한 조건 1. 서로 상속관계에 있는 상위 클래스 - 하위 클래스 사이에만 타입 변환이 가능합니다. 2. 하위 클래스 타입에서 상위 클래스 타입으로의 타입 변환(업캐스팅)은 형변환 연산자(괄호)를 생략할 수 있습니다. 3. 반대로 상위 클래스에.. 2022. 9. 8.
[JAVA - OOP 심화2] 캡슐화 ✨캡슐화 (Encapsulation) : 특정 객체 안에 관련된 속성, 기능을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것 목적 : 1. 데이터 보호 2. 내부적 데이터 불필요한 외부 노출 방지 장점 = 정보 은닉 방법 : 접근제어자 getter, setter 메서드 ✨접근 제어자 / 기타제어자 접근제어자 : public, protected, default, private - 한번만 사용 가능 기타제어자 : static, final, abstract, native, transient, synchronized ✨접근제어자 : 클래스, 필드, 메서드, 생성자 등에 부가적인 의미 부여 키워드 (like 형용사) private - 동일 클래스에서만 접근 가능 default - 동일 패키지 내에서만 접근.. 2022. 9. 8.
[JAVA - OOP 심화1] 상속 객체지향 : 캡상추다 (캡슐화 / 상속 / 추상화 / 다형성) ✨상속 기존의 클래스를 재활용하여 새로운 클래스를 작성 상위클래스의 모든 멤버를 하위 클래스와 공유 (하위클래스의 멤버 개수 = 상위 클래스보다 같거나, 많다) 상속받았다 = 확장받았다 (extend) ✨상속 사용하는 이유? (장점) : 코드의 중복 제거 위함 (코드 재활용으로 인한) 다형적 표현이 가능 class Person { String name; int age; void learn(){ System.out.println("공부를 합니다."); }; void walk(){ System.out.println("걷습니다."); }; void eat(){ System.out.println("밥을 먹습니다."); }; } class Progra.. 2022. 9. 8.
[Java - OOP 기초3] 생성자와 내부클래스 🧭생성자 :인스턴스 변수들을 초기화하는데 사용되는 특수 메서드 (인스턴스 생성은 new 가 한다!) ✨메서드와의 차이점 : (생성자의 이름 = 클래스의 이름) 반드시 같아야 한다. 리턴타입 자체가 없다 (메서드에서 리턴값이 없을때 사용되는 void 마저 사용X) 클래스명(매개변수) { // 생성자 기본 구조 ...생략... } 매개변수 있을수도, 없을수도 있음 매개변수 없는 생성자 (=기본 생성자) : 매개변수 없기 때문에 객체 생성 방식으로 new 키워드와 생성자 호출해야함 매개변수 있는 생성자 : 개수, 타입에 맞게 생성자 호출해줘야 한다. * 생성자도 오버로딩이 가능하다. public class ConstructorExample { public static void main(String[] args.. 2022. 9. 7.
[Java - OOP 기초2] 필드와 메서드 👩‍💻변수 클래스 변수 / 인스턴스 변수 / 지역 변수 (=멤버변수, 필드) 메서드 내에 포함된 모든 변수 ✨클래스 변수, 인스턴스 변수 차이점 : static 이 있으면 클래스 변수, static이 없으면 인스턴스 변수 class Example { // => 클래스 영역 int instanceVariable; // 인스턴스 변수 static int classVariable; // 클래스 변수(static 변수, 공유변수) void method() { // => 메서드 영역 int localVariable = 0; // 지역 변수. {}블록 안에서만 유효 } } 인스턴스 변수 : new 로 생성됨, 각각의 고유한 속성 클래스 변수 : static 키워드로 선언됨, 공통된 저장공간 공유 손가락 수(5), .. 2022. 9. 7.
[Java - OOP 기초1] 클래스와 객체 🧱클래스와 객체 클래스 : 객체를 생성하는데에 사용하는 하나의 틀, 설계도 객체 : 클래스를 통해 생성된 객체 = 인스턴스 *인스턴스와 객체의 차이? : 객체 >= 인스턴스(사실상 같다!) 그러나 인스턴스는 어떤 '객체로부터 생성된것인지'를 강조 ✨클래스 정의 class 클래스명 { //클래스 정의 ~~~~~~ } ✨클래스의 구성 요소 public class ExampleClass { int x = 10; // (1)필드 void printX() {...} // (2)메서드 ExampleClass {...} // (3)생성자 class ExampleClass2 {...} // (4)이너 클래스 } (1)필드 (=속성): 클래스의 속성을 나타내는 변수 (2)메서드 (=기능) : 클래스의 기능을 나타내는 변.. 2022. 9. 7.