매개변수의 타입이나 수로 중복해서 함수를 정의할 수 있는 것부모로부터 상속받은 매서드를 자식객체가 재정의할 수 있는 것반드시 첫 줄에서만 호출이 가능하다.클래스가 생성되기 이전에 다른 코드가 있다면 문제가 발생할 수 있기 때문이다.상속 관계가있는 클래스가 둘 이상있는
다음 말을 듣고 SDK가 무슨말인지 궁금해져서 글을 쓴다그냥 vscode에 SDK 설정 따로 해주신게 아니면저거 11버전 까셨겠거니 해서 드려본말이고 pom.xml으로 레포지토리에서 디펜던시들 퍼올리니까요 pom.xml에 java 버전이 안맞는게 아닌가? 하는맘에 말씀
Windows의 cmd나 MAC, 우분투의 터미널에서 사용하는 명령어javac : java코드를 바이너리 파일인 .class로 컴파일할때 사용하는 명령어java : 컴파일된 바이너리 파일을 읽을때/실행시킬때 사용하는 명령어
깊은복사 - 메모리에 실제 공간을 하나 더 만들어서 그 공간을 참조하도록 하는것얕은복사 - 원본객체를 그저 참조만 하는 것다음과 같은 방법중 하나를 택해야한다Cloneable 인터페이스 구현복사 생성자복사 팩터리 등등....
중단점을 걸때 동그라미(줄단위중단점), 다이아몬드(함수단위중단점)이 있어요제가 줄단위중단점을 걸었을때는 잘 실행되던게, 함수단위중단점을 거니까 갑자기 되게 느려지면서 그 다음으로안넘어가더라구요그래서 찾아봤는데 다음과 같은 글이 있었어요https://stacko
PageRequest는 직렬화를 위해 Serializable 인터페이스를 상속받는다.그런데 Serializable 인터페이스 내부를 보면 다음과 같이 비어있다.업로드중..내부에 아무것도 없는 인터페이스를 상속받는다는게 이해가 가지 않는다. 사실은 보안 등의 이유로 내가
jvm은 자바파일을 실행하기 위한 가상의 컴퓨터다자바파일만으로는 cpu가 인식하지 못하므로 기계어로 컴파일하는 과정을 거쳐야 실행할수있다그 일을 해주는것이 jvm이다 jvm은 java파일을 기계어로 바로 변환하진 않는다왜냐하면 바로 기계어로 변환하려면 os에 종속적이될
위의 예시에서, 바이트 코드 조작부와 조작 대상의 클래스를 사용하는 부분 new Moja().pullOut() 을 동시에 사용할 수 없었다. 이유는, 바이트 코드 조작부에 의하여 빌드된 target 내 Moja.class 는 조작되겠지만, 그 전에 클래스 로더에 의해
스프링의 의존성 주입 어떻게 동작하는지 알아보자어떻게 스프링은 어노테이션만으로 자동으로 의존성을 주입해줄 수 있는걸까?어떻게 저 변수값들이 null이 아닌걸까?리플렉션은 힙 영역에 로드된 Class 타입의 객체를 통해, 원하는 클래스의 인스턴스를 생성할 수 있도록 지원
프록시와 리얼 서브젝트가 공유하는 인터페이스가 있고, 클라이언트는 일단 프록시를 사용한다. 그리고프록시에서 리얼서브젝트라는 필드를 가지고 있어서 그 필드를 사용해서 리얼서브젝트 전후에 어떠한 작업처리를 해주거나 그 값이나 메서드를 변경해줄수있다.하지만 이런형태는 매번
annotation processor내가 다 생성하기 귀찮은 코드를 생성해주는 툴getter,setter 같은 코드는 어떤 클래스에도 필요할 수 있지만 너무 장황해진다annotation만 붙였는데도 getter, setter를 만들 수 있다자바가 제공하는 annotat
entity에 update메서드를 다음과 같이 작성했다.그런데 이 코드는 dto에 의존적인 코드이다.의존성을 갖는다 라는 말에 대해 해당 객체가 있어야지만 사용된다. < 이 조건을 만족할때 의존성을 갖는다고 표현하는줄 알았다. 물론 entity를 사용할때 dto가
부모클래스에 A,B라는 메서드가 잇고 자식은 이를 둘다 오버라이딩햇어요자식의 A메서드에서부모의 A메서드를 호출했어요근데 부모의 A메서드 내부에선 B를 호출해요.그러면 부모클래스의 B가 호출되는거아닌가요?자식꺼가 호출되네요......??지금 부모 클래스에서 B를 호출하고
클래스에 static 키워드가 붙는것은 필드에 static이 붙는것과 완전히 다른것같다.클래스에 static키워드가 붙는다는것은 외부에 대한 참조 없이 자기자신을 생성할 수 있다는 의미이다.this라는 키워드는 인스턴스에 대한 참조를 의미하기 때문에 인스턴스라는 개념이
.JAVA로 된 파일을 실행할 수 있는 환경을 제공해주는 소프트웨어플랫폼(윈도우, 리눅스 등 OS를 의미함)의 영향을 받지 않는다어느 OS든 알아서 JVM이 해석을 해주어서 OS에게 해석결과를 알려준다C언어를 예로 들어봅시다 .C로 된 파일이 있다면 OS마다 다른 컴파
자바에서는 main메서드를 가장먼저실행해야한다는 규칙이있다.그런데 만약에 static을 붙이지 않게 되면클래스생성 이후 메서드를 호출하게 된다. 이렇게 되면main메서드를 먼저 호출한다는 규칙이 무너지게 된다따라서 static으로 선언하여 클래스 생성을 하지 않아도 호
절차적 프로그래밍이 계산기와 같은 아웃풋을 생성하는 프로그램을 만드는 것이라면, 객체지향 프로그래밍은 라이브러리와 같이 다른 개발자가 이용할수 있게 구조를 만드는 것으로 보면 된다.클래스를 정의할 때 불필요한 부분들을 생략하고 객체의 속성 중 중요한 것에만 중점을 두어
ArrayList의 add 코드를 살펴보던 도중 final변수의 선언과 초기화가 분리되어있는것을 발견하였다final변수는 언제 초기화와 선언이 분리될까?class의 멤버변수로 final이있다면 부모 생성자 생성 후 ~ 해당 클래스 생성자 생성 전에 초기화 된다생성자의
문자열을 한글자 단위로 읽는다매번 문자열 읽는것? 매우 비효율적InputStreamReader+버퍼링기능\-> 데이터 추가 요청시마다 데이터 읽는게 아닌, 일정한 크기의 데이터를 한번에 읽어서 버퍼에 보관하고사용자의 요청이 있을때 읽어오는 방식으로 동작 -> 빨라진 속
실행결과에 111만 출력된다. 디버깅 해보면 둘은 다른객체같은데도 close시에 아예 출력자체가 안된다. 그 이유가 뭘까? 스트림을 닫고난 뒤에 다시 여는게 안되는것일까? bw.write(숫자) 이상한게 출력이 되는이유는.. 이넘겨지는 숫자를 그대로 출력해주는게 아
힙 영역에 로드된 Class 타입의 객체를 통해, 원하는 클래스의 인스턴스를 생성할 수 있도록 지원하고, 인스턴스의 필드와 메소드를 접근 제어자와 상관 없이 사용할 수 있도록 지원하는 API여기서 로드된 클래스라고 함은, JVM의 클래스 로더에서 클래스 파일에 대한 로