분류 전체보기

    [Java] brew로 자바 특정버전 설치하고 적용하기

    brew로 최신 Java를 설치하려면 아래와 같이 치면 됩니다. $ brew install --cask java 하지만 여러 이유로 최신버전이 아닌 다른 특정버전을 설치해야할 경우가 있습니다. 자바 특정버전 설치방법 brew 업데이트. brew를 쓰기전에 항상 업데이트먼저 하시는 것을 추천드립니다. $ brew update 원하는 jdk버전 적용해서 설치 $ brew install --cask adoptopenjdk8 설치완료 환경변수 설정 새로운 버전의 jdk를 설치했음에도 java -version을 해보면 원래 쓰던 jdk 버전이 나옵니다. 이 이유는 클래스패스 (환경변수) 설정이 되어있지 않기 때문입니다. 저는 zsh를 사용하기 때문에 .zshrc에 Path를 적어주겠습니다. (bash를 사용하시는..

    [Java] 패키지

    Pakage 패키지란, 클래스의 묶음입니다. 패키지에 클래스나 인터페이스들을 포함시킬 수 있으며, 서로 관련된 클래스끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있습니다. 같은 이름의 클래스 일지라도 서로 다른 패키지에 존재하는 것이 가능하므로, 다른 개발자가 개발한 클래스와 자신의 클래스의 이름이 충돌하는 것을 피할 수 있습니다. 클래스가 물리적으로 하나의 클래스파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리입니다. 사실 클래스의 이름은 패키지까지 포함한 이름입니다. 그래서 String 클래스의 실제 이름은 java.lang.String 입니다. 패키지 특징 (주의사항) 하나의 소스파일에는 첫 번째 문장으로 단 한 번의 패키지 선언만을 허용한다. 모든 클래스는 반..

    [Java] HashSet과 HashMap에서 equals 오버라이딩시 hashCode도 재정의 해주어야 하는 이유

    자바의 최상위 클래스인 Object 클래스에는 equals과 hashCode 메서드가 있습니다. Object 클래스에 대한 설명은 아래링크의 글에서 맨 아랫부분을 참고하세염 2021.07.13 - [Web/Java] - [Java] 상속 [Java] 상속 학습할 것 (필수) 자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 메소드 디스패치 (Dynamic Method Dispatch) 추상 클래스 final 키워드 Object 클래스 자바 상속의 특징 상속 상속이란, 기존의 ksabs.tistory.com Object의 equals는 객체의 주소를 비교하여 같은 객체인지 확인합니다. 그렇다면, 만약에 이름과 나이가 같다면 "같다"고 인식해줘야 하는 객체 Person이 있다고 생각해봅시다. p..

    [Spring] main과 test에서 따로 동작하는 클래스 만들기

    개발을 하다보면 main에서만 실행되고 test에서는 실행되길 기대하지 않는 메서드(나 클래스)가 있을 수 있습니다. main 과 test에서 따로 동작하는 클래스를 제작하는 방법에 대해 다뤄봅니다. 방법 1. application.yml 을 main과 test에 따로 만들고 spring.profiles.active 이름을 다르게 지정합니다. main의 application.yml spring: profiles: active: local ... test의 application.yml spring: profiles: active: test ... 2. main에서만 실행되길 기대하는 클래스에 @Profile("local")을 붙여줍니다. 보통은 개발단계에서 InitDB를 main에서만 실행시킬때 사용합니다..

    [ClassFlix] EP 17. QueryDSL 도입 (페이징, 정렬)

    Querydsl 도입 계획 build.gradle 작성, JPAQueryFactory등 Querydsl 도입 기존에 있는 jpql을 querydsl로 바꾸기 홈 화면에서 페이징, 정렬 기능 (대량 강의 데이터 추가, ddl 설정 변경) 강의 검색기능추가 (페이징, 정렬기능) Querydsl 도입 build.gradle, Q-type파일 생성 기존에 작성했던 QueryDSL 설정 포스팅을 참고하여 설정합니다. 2021.06.08 - [Web/QueryDSL] - [QueryDSL] EP1. QueryDSL 설정 [QueryDSL] EP1. QueryDSL 설정 QueryDSL 사용에 앞서 설정을 해주도록 하겠습니다. 기본적으로 QueryDSL은 start.io 에서 dependency를 제공하지 않기 때문..

    [IntelliJ] [Java] UnsupportedClassVersionError 해결

    에러상황 Exception in thread "main" java.lang.UnsupportedClassVersionError:dongho/classflix/ClassflixApplication has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 원래 프로젝트 클래스파일은 55.0 버전으로 컴파일되어있지만 현재 컴파일러 버전은 52.0 이라서 로딩이 불가하다는 에러입니다. 버전이 55.0, 52.0 이라고 되어있어서 헷갈릴 수 있는데, Java 버전은 이렇..

    [IntelliJ] Gradle 프로젝트 불러올때 에러해결

    에러상황 가끔씩 IntelliJ에서 기존의 프로젝트를 불러올때 spring boot annotation들이 적용이 안되고 빨간불이 들어올 때가 있습니다. 해결하고나서 포스팅하는거라 적용이 안됐을 때의 자료화면이 없습니다. ㅠ 나중에 또 같은 에러가 뜰 때 해당 에러 화면 사진 올리겠습니다. 그래도 아마 프로젝트 불러왔을때 원래 되던 스프링부트가 안될경우는 아마 이 해결방법으로 해결이 될 것입니다! 해결방법 해결은 간단합니다. 프로젝트 디렉토리에서 .idea 디렉토리를 삭제하고 다시 프로젝트를 import 하면 됩니다. 그리고 인텔리제이를 종료한 뒤, 다시 build.grade을 open해줍니다. 그러면 .idea가 없기때문에 아래와같이 gradle 프로젝트를 새로 임포트할 수 있는 화면이 뜹니다. 여기서..

    [Java] 상속

    학습할 것 (필수) 자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 메소드 디스패치 (Dynamic Method Dispatch) 추상 클래스 final 키워드 Object 클래스 자바 상속의 특징 상속 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것입니다. 구현방법 자바에서 상속을 구현하는 방법은 간단합니다. 새로 작성하고자 하는 클래스의 이름뒤에 상속받고자 하는 클래스의 이름을 'extends'와 함께 써주면 됩니다. class Chiled extends Parent { // ... } 이 두 클래스는 상속관계에 있다고 하며, 상속해주는 클래스 (Parent) 를 부모(parent)클래스 상위(super)클래스 기반(base)클래스 라고 합니다. 상속 받는 클래스 (C..

    [Java] Node와 BinaryTree 구현

    목차 (클릭시 해당 목차로 이동) 과제 int 값을 가지고 있는 이진 트리를 나타내는 Node 라는 클래스를 정의하세요. int value, Node left, right를 가지고 있어야 합니다. BinrayTree라는 클래스를 정의하고 주어진 노드를 기준으로 출력하는 bfs(Node node)와 dfs(Node node) 메소드를 구현하세요. DFS는 왼쪽, 루트, 오른쪽 순으로 순회하세요. Node.class package javastudy.ch5.assignment; public class Node { private int value; private Node left; private Node right; public Node() { this.left = null; this.right = null; ..

    [Java] 클래스

    목차 (클릭시 해당 목차로 이동) 클래스 정의하는 방법 클래스 객체를 정의해 놓은 것 객체의 설계도 또는 틀 이라고 이해하면 됩니다. *객체 클래스에 정의된 내용대로 메모리에 생성된 것 클래스 정의하는 방법 class 클래스명 {} class의 기본 접근 제어자는 public 입니다. 생략해주면 기본으로 public이 붙지만 되도록 직접 접근제어자를 붙여주는 것이 좋습니다. 한 java파일에는 하나의 public 클래스만 존재하도록 합니다. 클래스에는 public, default만 붙일 수 있습니다. public class Tv {} public class Tv{} 객체는 속성과 기능, 두 종류의 구성요소로 이루어져 있습니다. 이 구성요소를 객체의 멤버라고 합니다. 속성 = 멤버변수 기능 = 메서드 메서..