OOPS란?OOPs는 Object-Oriented Programming System(객체 지향 프로그래밍 시스템)의 약자로, 객체 지향 프로그래밍은 데이터와 그 데이터를 조작하는 방법을 하나의 단위로 묶어 객체라는 개념을 사용하여 소프트웨어를 설계하고 구현하는 방식입니다. 클래스와 객체 (Class and Object)클래스(Class): 클래스는 객체를 만들기 위한 설계도 혹은 틀입니다. 클래스는 데이터(속성, 필드)와 메소드(함수)로 구성되며, 객체의 초기 상태를 정의합니다.// 예시: Person 클래스public class Person { // 필드(속성) private String name; private int age; // 생성자 public Person(S..
Programming/Java, Kotlin
Immutability(불변성)이란?불변성(Immutability)은 객체의 상태가 생성된 후 변경할 수 없는 성질을 말합니다. 즉, 한 번 생성된 객체의 상태는 그대로 유지되며, 변경할 수 없습니다. 이는 객체의 내부 상태(fields)가 변경되지 않음을 의미합니다. 불변 객체(Immutable Object) 특성불변 객체(Immutable Object)는 다음과 같은 특성을 가집니다:객체의 상태 변경 불가능: 객체가 한 번 생성되면 내부 상태는 변하지 않습니다. 따라서 객체의 모든 필드(fields)는 final로 선언되거나, 필드가 변경되지 않도록 해야 합니다.데이터 보호: 불변 객체는 내부 상태가 변하지 않기 때문에 다른 객체나 외부에서 객체의 상태를 변경할 수 없습니다. 이는 코드의 안정성을 높..
hashCode() 메소드hashCode() 메소드는 객체의 해시 코드를 반환합니다.해시 코드는 객체의 메모리 주소가 아닌 객체의 고유한 정수 값입니다.Java 컬렉션 프레임워크(예: HashMap, HashSet 등)에서는 객체를 해시 테이블에 저장할 때 hashCode() 값을 사용하여 저장 위치를 결정하고, equals() 메소드로 동등성을 비교합니다.hashCode() 메소드는 일반적으로 객체의 내부 상태(fields)를 기반으로 계산된 값입니다. 따라서 동일한 내용을 가진 객체들은 같은 해시 코드를 반환해야 합니다.만약 두 객체가 equals() 메소드로 동등하다면, 반드시 hashCode() 값도 같아야 하지만, hashCode() 값이 같다고 해서 equals() 메소드로 동등하다고 보장되지..
AOP란?AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)는 소프트웨어 개발 패러다임 중 하나로, 프로그램의 핵심 기능에 직접 관련되지 않은 부가적인 관심사(관점, Aspect)를 분리하여 모듈화하는 기법입니다. AOP는 주로 로깅, 보안, 트랜잭션 관리 등과 같은 공통 기능을 여러 모듈에 중복 없이 일관되게 적용할 수 있도록 합니다. 주요 개념Aspect (관점): 핵심 비즈니스 로직과는 분리되어 모듈화된 부가적인 기능을 의미합니다. 예를 들어, 로깅, 보안, 트랜잭션 관리 등이 있습니다.Join Point (조인 포인트): Aspect가 적용될 수 있는 실행 지점을 의미합니다. 메서드 호출, 객체 생성, 예외 발생 등이 조인 포인트가 될 수 있습니다.Advice (어드..
Java에서 URI와 URL은 둘 다 자원의 위치를 나타내기 위해 사용되지만, 둘 사이에는 몇 가지 중요한 차이점이 있습니다.URI (Uniform Resource Identifier)URI는 인터넷 자원의 식별자를 나타내는 일반적인 용어입니다. URI는 URL과 URN(Uniform Resource Name)을 모두 포함하는 개념입니다.형식: URI는 scheme, authority, path, query, fragment의 다섯 가지 구성 요소로 이루어집니다.예시: http://example.com:8080/docs/resource1.html?name=example#section2scheme: httpauthority: example.com:8080path: /docs/resource1.htmlque..
Spring Boot에서 기본 URL (예: "/")에서 특정 URL (예: "/home")로 리다이렉션하려면,컨트롤러 메서드에서 return 값으로 redirect: 접두사를 사용하면 됩니다. 아래 예제를 통해 어떻게 하는지 설명하겠습니다.1. 리다이렉션을 위한 컨트롤러 메서드 작성기본 URL로 요청이 들어왔을 때 다른 URL로 리다이렉션하는 컨트롤러를 작성합니다.src/main/java/com/example/demo/RedirectController.javapackage com.example.demo;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;@Contr..
1. length - arrays(int[], double[], String[]) - length는 배열의 길이를 알고자 할때 사용 2. length() - String related Object(String, StringBuilder etc) - length()는 문자열의 길이를 알고자 할때 사용 3. size() - Collection Object(ArrayList, Set etc) - size()는 컬렉션프레임워크 타입의 길이를 알고자 할때 사용 // 사용 예시int[] a = new int[7];System.out.println(a.length); // 7 String b = "qwertasdfg";System.out.println(b.length()); // 10ArrayList ..
// int to charchar a = (char)(int_value + '0'); // '0' 을 더하지 않으면 ascii 값 1 (인쇄 할 수 없는 머리글 시작 문자?)로 문자를 인쇄해서 잘못 된 값이 나옴char a = Character.forDigit(int_value, 10); // 10 = 10진수를 의미// int to char arraychar[] a = ("" + int_value).toCharArray();// List to int[]list.stream().mapToInt(Integer::intValue).toArray();
// int 배열 선언int[] z = {};int[] c = new int[queries.length];int[] a = {0, 4, 2};int[][] aa = {{0, 4, 2},{0, 3, 2},{0, 2, 2}};ArrayList arrayList = new ArrayList(Arrays.asList(1, 3, 5, 2, 4));// 배열 자르고 복사import java.util.Arrays;int[] b = Arrays.copyOf(a, count); // 인덱스 0부터 원하는 길이만큼 복사int[] b = Arrays.copyOfRange(a, startIndex, endIndex + 1); // 특정 범위만큼 복사// 배열을 스트림으로 변환 or 자르고 변환import java.util.s..
int[][] queries = {}; // 2차원 배열int index = 0;for (int[] a: queries) { // index 가져오기 index = queries.indexOf(a);}