본문 바로가기

전체 글97

[JAVA] String, StringBuilder, StringBuffer 자바에서 문자열을 다룰 때 String, StringBuilder, StringBuffer 클래스를 사용하게 된다. 보통 개발할 때 String을 많이 사용했는데, 이 세가지가 분명한 차이점과 쓰임이 있다는 걸 알게 됐다. String String에 값을 할당하면 Heap의 String Constant Pool에 저장된다. 그 값을 변화할 경우에는 String Class에서 새로운 String 객체를 생성하는 것이고, 기존 객체는 GC에 의해 제거된다. String이 불변성(immutable)을 갖고있기 때문이다. 따라서, 자주 변하는 객체를 String으로 생성하면 효율성이 떨어진다. 연산이 자주 일어나는 경우에는 StringBuilder와 StringBuffer를 사용하는 게 바람직하다. Abstra.. 2022. 9. 22.
[JAVA] equals() 와 hashCode() quals() equals가 구현된 방법은 2개의 객체가 참조하는 것이 동일한지(동일성 비교)를 확인하는 것이다. 즉, 2개의 객체가 가리키는 곳이 동일한 메모리 주소일 경우에만 동일한 객체가 된다. public boolean equals(Object obj) { return (this == obj); } 따라서, 두 객체가 타입과 속성이 같으면 같다고 비교하고 싶으면, equals()를 재정의(override)해서 동등성 비교를 하면 된다. 참고로, String 객체에서 equals() 메소드를 호출하면 자연스럽게 동등성 비교가 되는데, 이는 String Class가 equals()를 재정의하고 있기 때문이다. public boolean equals(Object anObject) { if (this =.. 2022. 9. 21.
[JAVA] 메모리 구조(Stack/Heap) 모든 자바 프로그램은 자바 가상 머신(JVM)을 통해서 실행된다. 자바 프로그램이 실행되면, JVM은 운영 체제로부터 해당 프로그램을 수행할 수 있도록 필요한 메모리를 할당받는다. 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 3가지 있다. method 영역 자바 프로그램에서 사용되는 클래스에 대한 정보와 함께 클래스 변수(static variable)가 저장되는 영역으로, JVM은 자바 프로그램에서 특정 클래스가 사용되면 해당 클래스의 클래스 파일(*.class)를 읽어들여, 해당 클래스에 대한 정보를 메소드 영역에 저장한다. Stack 영역 자바 프로그램에서 메소드가 호출될 때 메소드의 스택 프레임이 저장되는 영역으로, JVM은 자바 프로그램에서 메소드가 호출되면, 메소드의 호출과 관계되는.. 2022. 9. 21.
[C#] foreach 반복문 보호되어 있는 글 입니다. 2022. 9. 20.
[C#] 조건문 보호되어 있는 글 입니다. 2022. 9. 14.
[ORACLE] LISTAGG를 활용하여 하나의 행으로 합치기 https://docs.oracle.com/cd/E11882_01/server.112/e41084/functions089.htm#SQLRF30030 LISTAGG LISTAGG Syntax Description of the illustration ''listagg.gif'' See Also: "Analytic Functions" for information on syntax, semantics, and restrictions of the ORDER BY clause and OVER clause Purpose For a specified measure, LISTAGG orders data within each gro docs.oracle.com 업무 중 LISTAGG를 사용해야할 일이 있었다. 한 사람당 .. 2022. 9. 14.
[C#] Console.WriteLine() / Console.ReadLine() 보호되어 있는 글 입니다. 2022. 9. 6.
[C#] 플랫폼, 라이브러리, 프레임워크 보호되어 있는 글 입니다. 2022. 8. 31.