프로그래밍/Java(8)
-
[Java] 중첩클래스 (내부클래스, 멤버클래스)
Java에서는 클래스 내부에 클래스 혹은 인터페이스를 중첩해서 사용할 수 있게 해준다. 이를 중첩 클래스라고 하고 인터페이스의 경우에는 내부 인터페이스/ 중첩 인터페이스라고 명명하는 듯 하다. 이 글에서는 중첩 클래스에 대한 간단한 2가지 경우만 살펴본다. 중첩클래스는 다음으로 나뉘어진다. 1. 멤버 클래스(Member Class) 2. 지역 클래스(Local Class) 이름 그대로의 뜻을 가지고 있다. 멤버는 말그대로 중첩클래스가 클래스의 가장 바깥쪽 중괄호 바로 안에 위치함으로써 멤버(필드)의 역할을 하는 것이다. 지역 클래스는 우리가 익히 알고 있는 지역 변수, 지역 변수의 스코프와 동일하다. 즉 지역 메서드 내에 선언돼서 해당 메서드 내에서만 객체를 생성하고 사용할 수 있는 것이 지역클래스이다...
2023.10.20 -
[Java] 람다 표현식(Lambda Expression)
람다라는 표현은 프로그램을 처음 배울 때 얼핏 들은 기억이 있다. 그러나 척 보기에도 사용하기 어려워보이고 그 당시의 내 수준에서는 공부할 부분이 아니라 생각해 넘기곤 했다. 그러나 생각해보면 JDK별로 다른 버전을 제공하고 내가 왜 그 버전을 사용해야 하는지에 대한 고민은 거의 해보지 않았던 것 같다. 그냥 라이브러리와 여러 프레임워크간의 호환성만을 위해 언어의 버전을 반 강제적으로 좇았기 때문이다. - 람다 표현식이란 무엇인가? JDK8버전부터 추가된 Lambda는 Stream과도 관련이 있는 듯하다. Oracle 공식 문서를 통해 알게 된 간단한 정보로는 익명클래스(인터페이스 포함)의 사용을 더욱 더 간결하게 해준다는 장점이 있었다. JDK8버전부터는 람다 표현식과 스트림 기능을 추가하게 됐다. 즉..
2023.10.18 -
[Java, JavaScript] 웹 소켓을 이용해 다중 1대1 채팅방 구현하기(DB 연동)
개발 환경 : Spring boot 2.7.6 (JPA), mysql, javascript(ajax) 팀 프로젝트 중 채팅을 구현해야 할 일이 생겼다. 채팅을 간단하게 1대 다 혹은 1대1 로만 구현하는 것은 굉장히 쉬워보였으나 내가 원하는 기능은 '1대1 대화가 서로 서로 가능한 채팅방 구현'이었다. 이게 된다면 1대다, 다대다도 비슷한 원리로 모두 가능하다. 그러나 우선은 내가 필요한 기능은 1대1로 서로 구분된 채팅을 하는 것이었다. 이를 위해서 우선 socket의 원리에 대해 이해해야 했다. 내 막연한 상상으로는 하나의 포트번호에서 여러개의 소켓으로 서로 다른 통신을 한다는 것이 불가능해보였기 때문이다. 그러나 엔드포인트를 다르게 둔다면 같은 포트에서도 충분히(당연한건지 모르겠으나) 가능한 일이었..
2023.09.20 -
[JSP] JSP란 무엇인가(feat.Servlet과 차이점?)
1. JSP(Java Server Page)란 무엇인가? JSP는 HTML언어를(HTML, CSS, JavaScript) java코드를 기반으로 작성하게끔 도와주는 프로그램 언어이다. 언어라고해도 크게 다를 건 없고 기존의 HTML언어와 java언어를 사용하되 몇가지 표현법(expression)을 이용하는 것이다. 즉 JSP는 간단하게 말하면 파일의 확장자는 .jsp를 기반으로 한 파일위에 java code를 얹을 수 있게 해주는 언어인 것이다. 2. JSP 태그종류와 사용방법 JSP 태그를 어떻게 사용하는지 잘 보여주는 Reference Code이다. 태그에는 일반적인 java태그를 작성하는데 여기에서 작성된 java code는 홈페이지 상으로 노출되지 않는다. 홈페이지에 값 혹은 문자열같이 변수를 나..
2023.06.14 -
[Java] equals 메서드를 오버라이딩 하는 이유
일반적으로 우리는 서로 같은 인스턴스인지 비교하기 위해 Object클래스에 정의돼있는 equals() 메서드를 사용하곤 한다. 그러나 프로그래밍을 하다 보면 equals메서드를 재정의해서 사용하는 것을 심심찮게 볼 수 있다. 그렇다면 우리가 equals메서드를 오버라이딩 해서 사용하는 이유는 무엇일까? 말 그대로 Object클래스에서는 equals 메서드를 실행시킨 참조변수와 매개변수로 주어진 변수와의 주소값만을 비교한다. 실제 Object클래스에 정의돼있는 equals메서드이다. 코드를 보면 알 수 있듯이 단순히 메서드를 실행시킨 참조변수 this와 매개변수로 주어진 obj와의 단순 주소값만을 비교한다. 그러나 일반적으로 우리가 문자열의 값을 비교할때도 equals를 사용하는데 이는 String 클래스..
2023.04.26 -
[Java] Collection( List, Set, Map )이란?
자바에서 자료구조를 배우다보면 필연적으로 접하게되는 개념이 바로 자료구조와 알고리즘이다. 처음에 이 단어를 들었을 떄는 '알고리즘은 많이 들어봐서 알겠는데 자료구조는 뭐지?'라는 추상적인 개념만이 머리속에 존재하고 있었다. 그러나 우리는 배움에 있어서 시각적인 요소를 활용했을 때 훨씬 효율적으로 받아들일 수 있고 나 역시 그랬다. 특히 자료구조를 단순히 프로그래밍과 글로서만 접하게 되면 이해하기 굉장히 난해할 수 있기 때문에 이렇게 시각자료와 덧붙여 정리하게 됐다. 1. Colletion이란? 2. List 컬렉션 3. Set 컬렉션 4. Map 컬렉션 1. Collection이란? 컬렉션 프레임워크는 인터페이스로 하위 4개의 인터페이스를 두고 있다. 각각 많이 들어봤던 List, Map, Set, Qu..
2023.04.21