23%
42,350원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
-
더 자바, Java 8
static 과 metaspace 관련 질문있습니다.
자바 8 이후, permgen이 metaspace로 대체되면서 static과 string 상수 풀이 heap 영역에서 관리되는 것으로 변경되었다고 알고 있습니다. 하지만 실제로 구글등과 각종 유튜브 설명들을 찾아본 결과 해당 내용을 서로 다른 두 가지 내용으로 설명하여 어떤 것이 맞는지 몰라 이렇게 질문드리게 되었습니다.(위의 사진은 static 변수가 method 영역에 속한다고 함)첫번째 설명입니다.jdk의 설명중 class statics를 static object로 번역하여, static 변수와 메서드는 Method 영역(metaspace)에 이전과 동일하게 있고 static object(static A a = new A();)들만 heap으로 이동했다. 두번째 설명입니다.static이 붙은 모든 static 변수(primitive 타입, static int a = 1;)과 static 메서드, static object 등이 모두 heap 영역으로 이동했다. 둘 중 어느 설명이 맡는 것인지 질문드리고 싶습니다.
-
더 자바, Java 8
Map의 가장 큰 특징이 key는 null이 아니다
안녕하세요Optional 소개 강의 13분쯤에 "Map의 가장 큰 특징이 key는 null이 아닙니다"라고 하셨는데 HashMap은 key값으로 null이 가능한 것으로 알고 있는데, (Hashtable은 key로 null이 불가능하고요) 혹시 제가 뭔가 잘못 알고 있는걸까요?
-
더 자바, Java 8
Optional 질문드립니다.
Optional 첫번째 강의영상 10분20초쯤 나오는 내용인데요.progress.ifPresent((p) -> { this.progress = p });위와 같은 코드가 나오는데, 제가 알기로는 람다식에서는 외부변수를 변경하면 안되는것으로 알고있는데 this.progress는 외부변수인것같은데도 변경이 되는것 같아서요..!이 경우에는 외부변수를 변경하는게 왜 가능한지 궁금합니다. 또, 변경가능하다면, 이렇게 외부변수를 변경하는 것은 지양해야하는 건가요?!
-
더 자바, Java 8
인텔리제이 콘솔창
안녕하세요인텔리제이로 실습을 하다 보니까기선님은 하나로 통으로 나오는데 저는 인텔리제이 콘솔창이 이렇게 두 개로 나눠서 나옵니다.하나로 나오게 하려면 어떻게 해야 하나요?
-
더 자바, Java 8
Supplier를 쓰는 이유
안녕하세요? 강의 잘 듣고 있습니다.Supplier는 매개변수가 없고 리턴값만 있잖아요,함수형 프로그래밍을 하려고 순수함수 조건을 만족시키려면 상태가 없어야 하니까 함수 밖에 있는 값을 가져와서 쓸 수 없는데 그러면 Supplier를 왜 쓰는지 이해가 가지 않습니다.클래스 변수나 인스턴스 변수의 값을 가져와서 리턴하지 않고 순수함수 조건을 만족시키려면 Supplier<Integer> supplier = () -> 10; 이런 식으로 항상 같은 값만 리턴할텐데 어떤 경우에 Supplier를 쓰는지 예시가 궁금합니다.
-
더 자바, Java 8
allOf()에서 컬렉션으로 반환하는 것을 설명할 때 코드
12:03분 쯤에 완성된 코드 List<CompletableFuture<String>> futures = Arrays.asList(hello, world); CompletableFuture<String>[] futuresArray = futures.toArray(new CompletableFuture[futures.size()]); CompletableFuture<List<String>> results = CompletableFuture.allOf(futuresArray) .thenApply(v -> futures.stream() .map(CompletableFuture::join) // join()은 Unchecked Exception, get()은 Checked Exception 발생 .collect(Collectors.toList())); results.get().forEach(System.out::println); Completablefuture 작업들을 컬렉션으로 만들지않고, thenApply()에서 결과값을 List로 만들어주기 CompletableFuture<List<String>> results = CompletableFuture.allOf(hello, world) .thenApply(v -> Arrays.asList(hello.join(), world.join())); results.get().forEach(System.out::println);이 때 두 개의 코드는 동일한 기능으로 작동해도 된다고 봐도 될까요??출력값도 동일하고, 강사님께서 말씀해주신대로 hello와 world 작업이 끝난 후에 그 결과값을 join()으로 가져와서 List로 만드는 기능으로 이해하고 있습니다.
-
더 자바, Java 8
[참고] LTS주기
LTS 주기가 JDK 17이후 2년주기로 전환이 된다고 합니다.https://blogs.oracle.com/java/post/moving-the-jdk-to-a-two-year-lts-cadence즉, JDK17이후 LTS 버전은 2023년 9월이 될것 같습니다.학습에 참고겸 달아둡니다.
-
더 자바, Java 8
orElseThrow()
optional이 널체크를 안해서 발생하는 nullPointException을 피하기 위함이라고 생각햇는데, orElseThrow()로 예외를 발생시키면 굳이 Optional을 쓸 필요가 없는게 아닌지 헷갈리네요.. orElseThrow를 쓰는 이유가 있을까요?
-
더 자바, Java 8
findFirst함수
findFirst함수를 쓰면 optional로 감싸져서 나온다고 하셨는데 of로 감싸지는 건지 아니면 ofNullable로 감싸지는 건지 궁금합니다.
-
더 자바, Java 8
메서드 레퍼런스
springClasses.stream().filter(Predicate.not(OnlineClass::isClosed))이부분에서isClosed는 static함수가 아닌데그러면 객체::isClosed가 되어야하는거 아닌가요??왜 타입::isCloese가 된건가요??
-
더 자바, Java 8
primitive type 질문
강의에서 OptionalInt같은 primitive type에서 사용할 수 있는 Optional 클래스들을 언급해 주셨는데, 이러한 타입을 사용하는 이유는 무엇일까요? 제 생각에는 Optional로 감싸는 것 또한 Integer로 박싱-언박싱하는 것과 비슷해 보이기도 하고, 또 primitive type은 null이 될 수 없지만 OptionalInt 자체가 null인 경우가 발생한다던지.. 여러가지 문제가 발생할 수 있을 것 같거든요 그런데도 primitive type에 Optional 클래스를 만들어둔 이유가 있을까요?
-
더 자바, Java 8
FunctionalInterface 상속 관계 질문
String::compareToIgnoreCase를 변수에 할당하면 BiFunction<String, String, Integer> 타입이 될 줄 알았는데, intellij의 자동완성 기능을 써보니 Comparator<String> 타입이 나왔습니다. 반대로 Comparator타입 변수에 BiFunction은 할당하지 못하는 걸로 봐서 Comparator가 BiFunction을 상속받고 있는 것 같은데, 실제 코드를 보면 상속과 관련된 부분이 없는 것 같네요. @FunctionalInterface 어노테이션이 상속관계를 만들어주는 것인지, 아니면 다른 상속 방법이 있는 것인지 궁금합니다.
-
더 자바, Java 8
함수형 인터페이스를 왜 사용하나요?
안녕하세요! 강사님의 강의를 열심히 수강중인 학생입니다.자바로 함수형 프로그래밍을 하기위해 함수형 인터페이스가 제공된다고 생각하면 되나요?
-
더 자바, Java 8
while문 세미콜론
while (spliterator.tryAdvance(System.out::println)); 위 코드처럼 세미콜론으로 끝내는 것은 언제 사용할 수 있는 문법인가요? 처음 보는거라 보면서 굉장히 당황했네요
-
더 자바, Java 8
flatMap Optional과 Stream에서의 차이점을 제가 잘 이해했는지 헷갈립니다!
Stream에서의 flatMap 같은 경우는 input이 하나면 output이 여러개일수 있고 Optional에서의 flatMap 같은 경우에서는 input이 하나면 output이 하나이다. 라고 이해했는데 혹시 맞나요?
-
더 자바, Java 8
람다식과 익명 클래스
댓글로 추가 질문 드렸었는데 확인이 어려우신 것 같아 새로운 질문으로 적습니다! (원글 : https://www.inflearn.com/questions/520706) 그럼 아래와 같은 코드의 경우 익명 클래스를 생성하는 것이 아닌건가요? (아래의 코드가 람다식을 통해 '해당 타입의 객체'를 생성하는 것임은 이해했습니다!) RunSomething runSomething = () -> System.out.println("익명 클래스");
-
더 자바, Java 8
steam api 예제 git 주소
steam API 예제 문제 github 주소가 있을까요 강의 자료에는 없어서요.
-
더 자바, Java 8
thread.sleep질문
anyof () 실습중에 직접 스레드를 주어서 테스트를 해보고 있는데요, main method 에 throws InterruptedException 을 선언해주었음에도 Thread.sleep( ) 을 호출할때 try catch 를 해주어야 하는 이유가 있을까요? task 마다 sleep 을 주려하는데, 중복되는 try catch 가 계속해서 발생시키는게 맞는건지 궁금해서 질문드립니다! public static void main(String[] args) throws ExecutionException, InterruptedException { CompletableFuture<String> apple = CompletableFuture.supplyAsync(() -> { System.out.println("Get Apple Stock " + Thread.currentThread().getName()); try { Thread.sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } return "apple $19"; });
-
더 자바, Java 8
.orElse 매개변수 질문
orElse 메서드에서 Optional.empty( )는 매개변수로 넘길수 있지만 Optional::empty (메서드 레퍼런스) 는 안되는 이유가 궁금합니다. 제가 무엇을 모르고 있고 놓치고 있는지 잘 모르겠습니다 ㅜㅜ
-
더 자바, Java 8
isPresent( ) 와 null 질문
값이 없는 경우 예외가 발생하는 건 똑같고, 예외처리로 할 수 있는게 옵셔널 일 경우 isPresent( ), 아닐 경우 null 체크 인데 굳이 왜 옵셔널로 isPresent 체크를 해야하는지 와닿지가 않습니다 ㅜㅜ 그냥 옵셔널 적용없이 null 체크 하면 되는거 아닌가요?