오늘은 Java의 'this'와 'this()' 키워드의 차이에 대해 적어보자 한다. this 'this' 키워드는 현재 객체를 가리킨다. 클래스 내부에서 인스턴스 변수와 메서드의 매개변수의 이름이 같은 경우 this를 사용해서 현재 객체의 인스턴스 변수를 참조할 수 있다. public class TestClass { private int x; public void setX(int x) { this.x = x; } } this() 클래스의 다른 생성자를 호출하는 데 사용된다. 'this()' 를 사용하여 같은 클래스의 다른 생성자를 호출할 수 있다. public class TestClass { private int x; private int y; public TestClass(int x, int y) {..
평소에 ArrayList를 자주 사용하지만 데이터를 추가했을 때 어떤 방식으로 공간이 더 늘어나는지 갑자기 궁금해졌다. 그래서 오늘은 ArrayList의 add를 호출했을 때 일어나는 동작을 정리해보려 한다. List arrayList = new ArrayList(); arrayList.add("A"); .... public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; } ArrayList를 생성하면 elementData라는 필드에 빈 배열을 할당한다. 이 때 size는 0이고 DEFAULT_CAPACITY는 10으로 설정된다. add()를 사용하면 아래의 코드가 호출된다. modCount : 해당 ArrayList가 수정된 횟..
스프링부트3이상의 버전에서는 JDK17버전 이상을 사용해야해서 JDK17버전을 한번씩 사용한다. 이때 해당 프로젝트에서 DTO를 위한 클래스를 만들 때 IDE에서는 아래와 같은 문구가 뜬다 “Class can be a record” 해당 클래스를 record라는 것으로 바꿀 수 있다는 것이다. 그리고 아래의 Convert to a reccord를 누르면 아래와 같이 된다. 책에서는 보지 못한 문법이고 어떠한 기능을 하는지, 어떻게 동작하는지 잘 알지못해 이번글에서는 이 record에 대해 정리해보고자 한다. Record란? 자바14 추가된 문법이며 불변 객체를 쉽게 생성할 수 있도록 하는 특별한 종류의 클래스이다. 주로 간단한 데이터를 저장하고 옮기는 역할로 사용하는 클래스를 만들 때 사용한다. 사용법 ..
데이터를 파라미터로 전달하는 방법에는 두 가지 방법이 존재한다. Call By Value 함수 호출 시 파라미터로 값의 복사복을 전달한다. 호출 함수에서 해당 파라미터를 변경하거나 하더라도 실제 데이터에는 아무런 영향을 끼치지 않는다. Call By Reference 함수 호출 시 파라미터로 전달되는 변수의 래퍼런스(주소)를 전달한다. 따라서 호출 함수에서 파라미터를 변경하면 실제 주소를 참조하여 원본 데이터가 변경된다. 그럼 자바는 Call By Value일까 Call By Reference일까? 결론부터 말하자면 자바는 Call By Value로서 동작한다. 인자로 넘기는 종류에는 기본 타입과 객체 두 가지가 존재한다. "파라미터로 기본 타입을 넘기는 경우" 파라미터로 기본 타입을 넘기는 경우 JVM..
추상클래스?? 추상 메서드를 하나라도 가지고 있는 클래스이고 클래스 선언부에 abstract 키워드를 명시해야 한다. 이러한 클래스를 추상 클래스라고 한다. 그리고 추상 클래스는 단독으로 인스턴스를 생성할 수 없다. 만약 인스턴스를 생성하고자 한다면 상속을 통해 자식 클래스에서 완성을 한 후 생성해야한다. public abstract class Employee { .... public abstract void 메서드(); //추상메서드 } extends 키워드를 통해 자식 클래스에게 상속한다. 자바에서 추상클래스는 대게 공통된 속성을 추상 클래스에 묶음으로서 코드를 재사용할 수 있게 해준다. 인터페이스?? 인터페이스는 다른 클래스를 작성하는데 도움을 주는 목적으로 작성하고 추상클래스와 다르게 implem..
String 클래스와 StringBuffer, StringBuilder클래스의 차이 String은 불변이라는 특징을 가지고 있는 것이 StringBuffer, StringBuilder와의 가장 큰 차이점이다. JVM의 Heap 메모리 영역에는 String Pool이라는 것이 존재하는데 어떤 문자열을 사용하는데 String Pool에 동일한 문자열이 존재한다면 이를 재사용한다. String str = "hello world"; str = "hello world and Hi!!!"; 위 코드를 보면 str은 "hello world"로 정의한다. 그리고 아래에서 "hello world and Hi!!!" 라는 문자열로 변경한다. 언뜻보면 str에 있는 내용을 수정하는 것처럼 보이지만 아니다. 참조를 변경하는 ..
- Total
- Today
- Yesterday
- 1316번
- java
- list
- 7568
- controller
- 파이썬
- springboot
- 회고
- 프로그래머스
- 4673번
- HTTP#HTTP특징
- 자바
- 서블릿#Servlet
- 백엔드#게시판
- 오류
- 백준#서강근육맨#20300
- MVC
- 1978
- 게시판#자바#JPA#Entity
- 백준
- 대충 만든 자판
- querydsl
- Spring
- 11659
- this()
- arraylist
- 사탕 게임#백준#3085
- 덧칠하기
- 스프링
- 백준#잃어버린 괄호#1541
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |