프로그래밍/자바21 [JAVA] 자바 메소드 참조 메서드 참조란 말 그대로 다른 클래스의 메소드를 참조하여 사용한다입니다. 구현부를 빌려쓴다고 이해하시면 됩니다. 함수형 인터페이스가 클래스의 메서드 구현부를 빌려서 자신이 구현한 메서드인 것처럼 사용합니다. 람다식같은 경우는 직접 개발자가 구현부를 작성하는 것이고, 메서드 참조는 클래스를 빌려 쓰는 것입니다. 코드로 설명하겠습니다. public class ProviderClass { public int providerFunc1(int x, int y){ return x + y; } public int providerFunc2(int x, int y){ return x - y; } public static int providerFunc3(int x, int y){ return x * y; } public .. 2022. 4. 12. [JAVA]자바 익명 클래스와 람다식 정리 익명 클래스는 말 그대로 클래스의 이름이 없다. 익명 클래스는 설계도가 1회성이라는 말이다. 이름이 없으므로 생성자를 구현할 수 없다. 익명 클래스를 정의하려면 상속을 받거나 인터페이스로 구현해야한다. 참조 변수에 넣어두고 재사용할 수 있다. 상위 클래스의 생성자 지정, 오버 라이딩은 가능하다. 상속을 받은 익명 클래스 상속받아서 사용할 Outer 클래스 Outer 클래스를 익명 클래스로 활용 참조변수 o는 Outer를 상속받아서 1회성 구현부를 작성하고 인스턴스를 생성한 것과 같다. 인터페이스로 구현한 익명 클래스 추상메서드 2개를 갖는 인터페이스를 정의한 후 상속과 마찬가지로 인터페이스를 익명 클래스로 구현해서 사용할 수 있다. 참조변수 ti는 TestInterface의 추상메서드들을 구현하고 인스턴.. 2022. 4. 11. [JAVA] String 참조값 비교와 StringBuilder, StringBuffer 사용 이유 [JAVA] String 참조값 비교와 StringBuilder, StringBuffer 사용 이유 String에서 + 연산을 사용하면 안 되는 이유 StringBuilder, StringBuffer를 사용하는 이유 String에서 + 연산을 사용하면 메모리를 추가로 사용한다. str1, str2 는 같은 곳을 참조함 (String pool에서의 같은 위치) str3는 String을 + 연산을 사용해서 "abc"를 만들었는데도 String pool의 "abc"를 참조하지 않는다. +연산을 String에서 하게 되면 String pool에서 찾지 않고 마치 new("abc")를 한 것처럼 "abc" 새로운 메모리가 생성된다. 이는 GC의 부담, 메모리의 낭비를 야기한다. 그러므로 String에서는 + 연산.. 2022. 4. 8. [JAVA] 자바 접근 제어자 [JAVA] 자바 접근 제어자 자바의 접근제어자는 4종류가 있다. public : 제한 없음 protected : 패키지 내부 // 다른 패키지여도 상속(extends) 했다면 사용 가능 defalut : 패키지 내부 private : 클래스 내부 이 중 접근제어자로 protected가 헷갈리는 경우가 많아 정리하고자 한다. protected는 같은 패키지 내부에서 사용 가능하다. 이점은 헷갈리지 않는다. 헷갈리게 하는 부분은 다른 패키지여도 상속했다면 사용가능하다는 의미에서 헷갈린다. 결론부터 말하자면 protected는 메서드, 멤버변수에 사용가능하고 다른 패키지에서 사용하려면 protected 메서드, 멤버변수를 가진 class가 public이어야 한다. 테스트 구조도 패키지 Classtest (d.. 2022. 4. 7. [JAVA] 자바 String, StringBuilder 클래스 활용 [JAVA] 자바 String, StringBuilder 클래스 활용 자바를 사용하다 보면 문자열을 처리해줘야 할 경우가 많이 생긴다. 이때 String과 StringBuilder 클래스를 활용하면 좋다. 그리고 경우에 따라 String을 써야 할 경우와 StringBuilder를 써야 할 경우가 구분된다. 어떤 경우에 String과 StringBuilder를 맞게 써야 하는지 정리하고, 함수들의 활용법을 정리하고자 한다. String과 StringBuilder의 구분 String 클래스와 StringBuilder는 용도가 다르다. String은 클래스 명 그대로 문자를 이용해서 활용을 해야 할 때 사용하는 클래스이다. * 문자를 변경, 검색, 반복, 대소문자 변환, 비교, 분리 등 "문자 특성"을 이용.. 2022. 3. 29. [JAVA] 자바 오버로딩 (Overloading) [JAVA] 자바 오버 로딩 (Overloading) 하나의 클래스 안에서 여러 개의 같은 이름의 메서드를 여러 개 정의하는 것을 오버 로딩이라고 합니다. 이름이 같은 함수가 여러 개의 인자를 갖고 있는 것처럼 보여서 과적되었다고 표현하는 것입니다. 오버 로딩은 조건이 필요한데, 3가지를 기억하시면 됩니다. 메서드의 이름이 같아야 한다. 매개변수의 개수 또는 타입이 달라야 한다. 반환 타입이 다른 것은 오버 로딩에 영향을 미치지 않는다. 결국 오버 로딩이란 메서드들의 이름은 같지만, 매개변수의 개수 또는 타입이 달라질 때 사용하는 것입니다. 주의해야 할 점은 반환 타입이 다르다고 할지라도 이름과 매개변수가 같으면 같은 함수로 인식된다는 점입니다. 반환 타입은 오버 로딩에 영향을 주지 않습니다. 반환 타입.. 2022. 3. 18. 이전 1 2 3 4 다음