반응형

프로그래밍언어 19

[Java] 가변객체, 불변객체

Java에서 가변(mutable) 객체와 불변(immutable) 객체의 차이점은 객체의 내용을 변경할 수 있는지 여부! 사실 자바를 사용했다면, 해당 어휘에 대해서만 모를 뿐이지 모두가 사용해본 내용일 것이다. 아래 내용들을 보면서 어떤 의미인지 알아보자. 1. 가변 객체 (Mutable Object) 객체의 내용을 변경할 수 있는 객체입니다. 객체가 생성된 후, 내부의 상태를 변경할 수 있습니다. 가변 객체를 사용하면 메모리 사용량이 크게 증가할 수 있습니다. List mutableList = new ArrayList(); mutableList.add("A"); mutableList.add("B"); mutableList.add("C"); mutableList.remove(1); // "B" 제거 2..

[Java] String, StringBuilder, StringBuffer 차이점

Java에서 문자열을 사용할 때, 자주 보이는 클래스 String, StringBuffer, StringBuilder 차이점을 알아봅시다. 1. String String은 불변(immutable)한 문자열을 나타내는 클래스입니다. 문자열을 변경할 경우, 기존 문자열 객체를 변경하는 것이 아니라 새로운 문자열 객체를 생성합니다. 멀티 스레드 환경에서 안전합니다. String str = "hello"; str = str + " world"; // "hello world" 문자열 생성 2. StringBuilder StringBuilder는 가변(mutable)한 문자열을 나타내는 클래스입니다. 문자열을 변경할 때, 기존 객체를 변경하며, 새로운 객체를 생성하지 않습니다. 멀티 스레드 환경에서 안전하지 않습니..

[JAVA] StringBuilder 메서드 별 간단한 사용 예제

StringBuilder 클래스는 Java에서 문자열을 효율적으로 처리하는 데 사용되는 클래스이다. 사실, + 를 통해서 String을 append 하는 것 보다 객체 생성될 여지가 적기 때문에, 약간의 속도 개선이 있다. (가독성이 떨어진다는 점은 단점이긴 하다) 다양한 메서드와 사용 방법을 간단한 예제를 통해서 알아보자. 1. append(String str) : 문자열을 추가합니다. StringBuilder sb = new StringBuilder(); sb.append("Hello"); sb.append(" World"); String result = sb.toString(); // "Hello World" 2. insert(int offset, String str) : 문자열을 특정 위치에 삽입..

[JAVA] 다형성 간단한 예제 및 설명

Java에서 다형성이란 Java에서 다형성(Polymorphism)은 객체지향 프로그래밍(OOP)의 중요한 원칙 중 하나입니다. 다형성은 하나의 객체가 여러 가지 타입을 가질 수 있음을 의미합니다. 다형성은 다음과 같은 형태로 구현됩니다. 1. 오버로딩(Overloading) 오버로딩은 같은 이름의 메소드가 매개변수의 타입, 개수, 순서 등의 차이로 인해 다른 동작을 수행할 수 있도록 하는 것입니다. public class Example { public int add(int a, int b) { return a + b; } public int add(int a, int b, int c) { return a + b + c; } } 2. 오버라이딩(Overriding) 오버라이딩은 부모 클래스에서 정의된 메..

[JAVA] Functional Interface 함수형 인터페이스

자바에서 제공하는 함수형 인터페이스 사용 예제를 간단히 살펴보자. 목차는 아래와 같다. 1. Function 2. BiFunction 3. Consumer 4. Supplier 5. Predicate 6. UnaryOperator 7. BinaryOperator 1. Function - T타입을 받아서 R타입을 반환하는 함수 인터페이스 - .apply(T t) 방식으로 사용할 수 있다. - 함수 조합용 메소드로 andThen, compose 함수가 있다. 1-1. 먼저 인터페이스를 상속 받아서 사용 - Function 인터페이스를 상속 받아서 apply를 아래와 같이 구현하면 된다. public class Plus10 implements Function { @Override public Integer a..

[JAVA] 메소드 레퍼런스 (::사용하는 메소드)

이번 시간은 메소드 레퍼런스를 사용하는 4가지 종류를 알아보자. 1. 스태틱 메소드 참조 2. 특정 객체의 인스턴스 메소드 참조 3. 임의 객체의 인스턴스 메소드 참조 4. 생성자 참조 0. 메소드 레퍼런스를 사용할 대상이 되는 클래스는 아래와 같이 작성해보자 public class Greeting { private String name; public Greeting() { } public Greeting(String name) { this.name = name; } public String hello(String name) { return "hello " + name; } public static String hi(String name) { return "hi " + name; } public Stri..

[Python] 재귀 함수를 이용해 알고리즘 문제 풀기 - 프로그래머스 문제

문제 설명 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다. 타겟 넘버는 1 이상 1000 이하인 자연수입니다 문..

[Python] 병합 정렬 쉽게 이해하기

정렬의 종류는 다양하다. 그중에 병합 정렬을 쉽게 이해하기 위한 글을 작성해봤다. 1. 병합 정렬 병합 정렬은 Big O 시간 복잡도는 O(n log n) 의 복잡도가 나온다. 아래 사진과 같은 방법으로 소팅한다. (사진 출처 : '모두의 알고리즘 with 파이썬' 책) '모두의 알고리즘 with 파이썬' 책에 그림으로 소팅 과정을 쉽게 설명되어있다. 1. 리스트를 절반으로 나눕니다. 2. 1에서 나눈 리스트를 정렬합니다. (이곳에서 재귀함수 사용) 3. 각각의 리스트에서 가장 앞의 인원을 비교해서 작은 인원을 정렬합니다. (계속 반복) 2. 병합 정렬 소스코드 구현 소스 코드로 구현하면 아래와 같습니다. 혹시 재귀함수에 대해서 모르시는 분을 위해서 링크를 걸어두겠습니다. ([Python] 재귀함수 간단..

[Python] 재귀함수 간단예제 - 팩토리얼 구현

재귀함수는 함수에서 자신을 다시 호출하면서 반복하는 함수를 말합니다. 재귀함수를 사용하지 않고 팩토리얼을 구현해보고, 재귀함수를 사용해서 팩토리얼을 구현해보도록 합니다. 재귀함수의 일반적인 형태는 아래와 같습니다. 종료 조건을 충분히 작은 조건을 넣어서 종료가 되도록 구현해한다. (종료 조건이 없으면 무한루프) 재귀함수 일반적인 형태 def func(입력 값): if 입력 값이 충분히 작으면 : # 종료 조건 return 결과값 func(입력 값 보다 하나 작은 값) return 결과값 1. 재귀함수 없이 팩토리얼 구현 팩토리얼은 5! 이라고 하면 1x2x3x4x5 = 120 입니다. 소스 코드 # 1.재귀함수 사용 없는 팩토리얼 def fact(n): f = 1 for i in range(1,n+1):..

[Python] 리스트 안의 for문으로 생성하기 - 리스트 컴프리헨션

리스트 컴프리헨션은 반복문의 표현식 대괄호[ ] 안에 반복문을 넣어서 리스트를 생성할 수 있다. 아래 순서로 예제를 살펴 보도록 하자 1. [ 항목 for 항목 in 반복 가능한 객체 ] 2. [ 표현식 for 항목 in 반복 가능한 객체 ] 3. [ 항목 for 항목 in 반복 가능한 객체 if 조건문 ] 1. [ 항목 for 항목 in 반복 가능한 객체 ] 리스트를 반복가능한 객체를 넣어서 생성할 수 있다. 소스 코드 list1 = [x for x in range(1,11)] print(list1) 결과 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 2. [ 표현식 for 항목 in 반복 가능한 객체 ] 표현식을 사용해서 반복객체의 계산을 한 리스트를 생성할 수 있다. 소스 코드 list2..

반응형