묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결코틀린 문법부터 실무까지 (실전 자바->코틀린 변환)
build.gradle.kts 변경시 오류가 발생합니다.
안녕하세요. build.gradle.kts 로 변경하고 내용을 입력했는대 오류가 발생해서 질문드립니다.해당 파일에 전체 빨간줄이 그어지며 there are no configurations available kotlin 라는 메시지가 뜨는대요 실행자체는 되는대 문제는 util 파일 변경 강의를 수강하려고 convert to kotlin 을 누르니까 kotlin 설정이 안되어 있다고 나오면서 변환이 되지 않습니다. 제가 인텔리제이 2020년 버전을 사용중인대 kotlin버전이 최대 1.6까지 설치가 되더라고요 kts 파일안에는 1.9.20버전이던대 이것때문에 인식을 못하는걸까요? ㅠㅠ1.6으로 kotlin 버전값을 바까도 인식을 못하는대 도움이 필요합니다. 이렇게 뜨고요... 물론 cache clean restart랑... gradle 폴더 지우고 실행해도 마찬가지내요...회사 컴퓨터에 설치된 intellij 버전도 동일해서 해밨는대 증상은 동일하고요...
-
해결됨스프링 핵심 원리 - 기본편
Bean Configuration / Dependency Injection 에 관해 질문드립니다 :)
안녕하세요 영한님,Dependency Injection에 관해서 궁금한점이 있어 질문드립니다. 제가 실무중이나 code review중에 아래같은 코드를 자주봤는데 지금까지는 그냥 그런가보다 하고 넘어갔지만, 그래도 강사님께 좀 자세한 mechanism을 들으면 좀더 개념확립에 도움이 될것같아서 질문드립니다.//SecretVault.java @Component public class SecretVault { private final String secret = "Secret123"; public SecretVault() { } public String getSecret() { return this.secret; } } //SecretService.java public class SecretService { private SecretVault vault; public SecretService() { } public SecretService(SecretVault vault) { super(); this.vault = vault; } public String revealSecret() { return vault.getSecret(); } } //CoreApplication.java @SpringBootApplication public class CoreApplication { public static void main(String[] args) { SpringApplication.run(CoreApplication.class, args); } @Bean SecretService secretService(SecretVault vault) { return new SecretService(vault); } } //테스트 클래스 //JUnit Test Pass //MiscTest.java @SpringBootTest public class MiscTest { @Autowired ApplicationContext ac; @Test void testSecret() { SecretService service = (SecretService) ac.getBean("secretService"); Assertions.assertEquals(service.revealSecret(), "Secret123"); } }테스트 결과, secretService bean안에 vault 필드가 제대로 주입되어있습니다. 빈 생성하는 method parameter가 spring이 관리하는 bean이면 저절로 찾아서 넣어주나요? 저는 method parameter bean이 같은 configuration 클래스 안에서 생성되었을 경우에만 가능한걸로 알았는데, 위 예제의 dependency injection이 어떻게 일어나는지 궁금합니다.
-
미해결김영한의 실전 자바 - 중급 1편
ChronoUnit, ChronoField 주입 에러
현재 java 21버전으로 강의를 따라가고 있었고 ChronoUnit, ChronoField 부분을 찾지 못하는 것 같습니다. import java.time.temporal.ChronoUnit 으로 import 해도 intellij 가 찾지 못하고 있습니다.
-
미해결김영한의 실전 자바 - 중급 1편
6. 날짜와 시간 duration 부분에서
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]생성 부분에 of(): 특정 시간을 지정해서 Period를 생성한다 < 이 부분은 Duration을 생성한다가 맞는걸까요? 혹은 객체를 뜻하는게 아니라 기간의 period를 말하시는걸까요?
-
해결됨스프링 핵심 원리 - 기본편
테스트 오류 관련 질문
java.lang.IllegalStateException: Failed to load ApplicationContext for [MergedContextConfiguration@6c302a1d testClass = hello.core.CoreApplicationTests, locations = [], classes = [hello.core.CoreApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@b5cc23a, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@758f4f03, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@9cd25ff, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@70ab80e3, org.springframework.boot.test.context.SpringBootTestAnnotation@699a8e45], contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:180) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:130) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:142) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:98) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260) at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:163) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:310) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734) at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762) at java.base/java.util.Optional.orElseGet(Optional.java:364) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberServiceImpl' defined in file [C:\Users\uniti\OneDrive\바탕 화면\Developer\Back End\Spring\core\basic\core\core\out\production\classes\hello\core\member\MemberServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:795) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:237) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1355) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1192) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:962) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) at org.springframework.boot.SpringApplication.run(SpringApplication.java:334) at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3(SpringBootContextLoader.java:137) at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58) at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46) at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1454) at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:553) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:137) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:108) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:225) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:152) ... 17 moreCaused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository at org.springframework.beans.factory.config.DependencyDescriptor.resolveNotUnique(DependencyDescriptor.java:218) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1420) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:782) ... 41 more CoreApplicationTests 에서 위와 같이 오류가 납니다
-
해결됨김영한의 실전 자바 - 중급 1편
5. 열거형 enum 문제와 풀이 2번
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.enum 문제풀이 2번에서 isSuccess()에 return 값으로 200~299사이면 true로 반환되게 해놓으셨는데요 그전에 findByCode에서 200을 제외한 201부터 299까지는 열거형 상수로 존재하지 않아서 정의되지 않은 코드라고 출력이 되는데요 그럼 isSuccess의 역할은 그냥 200만 표현해주기 위해서 만들어 놓은걸까요?
-
미해결김영한의 실전 자바 - 기본편
자바 메모리 구조에 대해 질문드립니다.
안녕하세요 영한님. 항상 양질의 강의로 지식을 공유해주시는점에 우선 감사하다는 인사부터 올리겠습니다.자바 메모리 구조에 대해 강의를 들으면서 문득 궁금한 점, 스스로 지식 정리가 되지 않는 부분이 있어 질문드립니다. 우선 제가 알고 있는 사실입니다. JDK 스펙에서 메소드 영역의 구현 방식에는 제한하지 않기에 벤더마다 상이하다Java8 이전 오라클 핫스팟에선 이를 Permgen(Permanent Genration) 이라 명하였고 힙 메모리 안에 위치시켰다.우리가 일반적으로 아는 static 변수 및 메소드, 클래스 정보, 런타임 상수 풀, String Pool 등이 이 메소드 영역 (Permgen)에 저장되었다.하지만, Java8 이후 Permgen 의 고정된 메모리 이슈로(잦은 OOME) metaspace 라는 새로운 대체 공간을 만들고 이를 os영역인 Native memory 쪽에 두었다.java8 이후 현재, 기존의 Permgen 에 저장되던 클래스 메타 정보들 (constant pool)은 대체된 metaspace안에 저장되고 static 변수 및 메소드, String Pool(리터럴 String 및 interned String 저장 pool) 들은 Heap 영역으로 저장되게 변경되었다. 우선 제가 옳게 이해하고 있는지, 지식에 오류가 없는지 궁금하며 몇 가지 문의사항이 있습니다.위 내용중 2)에서 Permgen을 힙 메모리 안에 두었다고 하지만 heap / non-heap 으로 구분하여 Permgen 은 non-heap 에 속한다 라고 설명하는 레퍼런스가 많습니다. Permgen이 non-heap 이라고 하는 이유가 비록 Permgen 이 논리적으로는 힙 메모리 안에 위치하지만, 일반적으로 gc 대상에선 제외되기 때문에 그런건지 아니면 실제로 물리적으로 분리된 공간이어서 non-heap 이라는건지 궁금합니다.(+ 지속적으로 찾아보니 Permgen 은 Heap 영역안에 특별한 공간 정도로 이해하면 될 듯 합니다. GC(major/full GC) 또한 동작한다고 하네요..! 이것과 별개로 metaspace의 경우도 더이상 사용하지 않는 클래스에 대해 메모리 회수가 일어난다고 합니다. 근데 이 metaspace 는 navtive 영역에 있는데 이걸 "gc가 동작하여 최적화한다" 라고 말할 수 있는 건지 아니면 그냥 Metaspace 자체에서 메모리관리를 한다고 봐야할지 궁금합니다..!)궁극적으로 궁금한 부분인데요 메소드 영역 이라는 것에 대해 어떻게 이해하면 좋을지 의문입니다. 두 가지 정도로 생각하고 있는데,1. 메소드 영역 이라는 것은 JDK spec 에서 정의하고있는 하나의 추상화된 공간(인터페이스)이다. 이것이 과거엔 힙에 위치한 permgen으로 구체화 되었고 현재는 native 메모리에 위치한 metaspace로 구체화 되어 대체되었다. (메소드 영역이 상위 개념이다)2. 옛날 permgen, 현재의 metaspace 안에 특정한 데이터(클래스 메타데이터 같은)를 저장하는 별도의 공간이 있고 이를’ 메소드영역’ 이라고 한다.(메소드 영역이 하위 개념이다) 메소드 영역과 permgen, metaspace 이들간의 카테고리 상 포함관계가 어떻게 되는지 개념이 궁금합니다.(1 번과 2번중에 어떤게 맞는지)또한 현재 메소드 영역을 담당하는 metaspace 기준으로, static 변수, string pool 등은 Heap 영역에 저장되고(static 변수의 경우 heap 영역안의 static pool 안에) 클래스 정보, 런타임 상수 풀(constant pool) 등은 Metaspace 에 저장이 되는데 “메소드 영역에는 클래스정보, static 변수, 런타임 상수 풀이 저장된다” 라는 개념이 아직도 유효하고 옳은 개념인지 문의드립니다. 이게 말이 되려면 메소드영역이란 heap 영역의 일부 + metaspace 가 되어야 하기 때문입니다. 감사합니다.
-
해결됨스프링 핵심 원리 - 기본편
MemberApp, OrderApp에 의해 각각 두개의 스프링 컨테이너가 생성됐다 생각하면 될까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요.전 섹터의 마지막강의 "스프링으로 전환하기"에서 스프링을 이용해 DI를 적용하면서MemberApp, OrderApp에 각각 ApplicationContext ac = new ... 를 사용했는데 이떄,MemberApp, OrderApp클래스 각각 서로 다른 스프링 컨테이너를 띄었다 생각하면될까요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
메서드 - 문제와풀이2 예제
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.package method.ex;import java.util.Scanner;public class MethodEx4 {public static void main(String[] args) {int balance = 0;Scanner scanner = new Scanner(System.in);System.out.println("---------------------------------------");System.out.println("1. 입금 | 2. 출금 | 3. 잔액 확인 | 4. 종료");System.out.println("---------------------------------------"); while (true) {System.out.print("선택: ");int choice = scanner.nextInt();switch (choice) {case 1:case 2:case 3:case 4:System.out.println("시스템을 종료합니다."); return;}}}해당 코드에서 switch문 4를 선택해도 return으로 main 메서드가 즉시 종료되지 않고, ---------------------------------------1. 입금 | 2. 출금 | 3. 잔액 확인 | 4. 종료---------------------------------------가 반복 출력되는 이유는 무엇일까요? 해당 코드가 반복문도 아닌데 계속 반복되는 이유와,4를 입력해도 코드가 즉시 종료되지 않는 이유가 궁금합니다.해당 반복출력되는 부분을 while문 안에 넣어주니 4 입력시 코드가 즉시 종료되는데, 왜 이런 차이가 발생하는지 잘 모르겠습니다. 답변 부탁드립니다. 감사합니다.
-
미해결코틀린 문법부터 실무까지 (실전 자바->코틀린 변환)
서비스, 컨트롤러 질문입니다.
1. 컨트롤러를 변환후 test실행했는데요.com.makers.princemaker.exception.PrinceMakerException: 해당되는 왕자님이 안계십니다.at com.makers.princemaker.controller.PrinceMakerController.getPrinces(PrinceMakerController.kt:31) ~[main/:na] 31번째 라인 소스입니다.@get:GetMapping("/princes") val princes: List<PrinceDto> get() = princeMakerService.allPrince 오류메세지를 자세히 보니 수업시간에 말씀하신부분인거 같은데 정확하게 어딘지 못찾겠네요... ERROR 68014 --- [ Test worker] c.m.p.e.PrinceMakerExceptionHandler : url: /create-prince, message: Validation failed for argument [0] in public com.makers.princemaker.dto.CreatePrince$Response com.makers.princemaker.controller.PrinceMakerController.createPrince(com.makers.princemaker.dto.CreatePrince$Request): [Field error in object 'request' on field 'experienceYears': rejected value [null]; codes [NotNull.request.experienceYears,NotNull.experienceYears,NotNull.java.lang.Integer,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [request.experienceYears,experienceYears]; arguments []; default message [experienceYears]]; default message [must not be null]] 컨트롤러 변환이후 서비스에서 WoundedPrinceRepository해당 파라미터가 not-null인데 null로 설정되어있다고 오류메시지가 나와서 서비스 상단 생성자 부분을 아래와 같이 수정했더니 오류가 사라졌는데 맞게 수정한걸까요?class PrinceMakerService ( private val princeRepository: PrinceRepository, private val woundedPrinceRepository: WoundedPrinceRepository? )
-
미해결스프링 핵심 원리 - 기본편
DIP구현 중, AOP과의 이슈가 발생하여 질문 드립니다
안녕하세요! 알려주신 내용을 바탕으로 제 개인프로젝트에 적용해서 리팩토링을 해보고있는데요! DIP를 위배하지않기위해@Getter @Configuration public class IamportConfig {@Value("${secret.sec.key}")private String secretKey ;@Value("${api.api.key}")private String apiKey ;@Bean public IamportClient iamportClient(){ return new IamportClient(apiKey, secretKey); } }이런식으로 IamportConfig를 선언해서 주입을 해주었고실제 코드에는private final PurchaseService purchaseService;private final ItemService itemService;private final IamportClient iamportClient;private final RedissonClient redissonClient;private final JwtUtil jwtUtil;private final IamportConfig iamportConfig;이렇게 선언했습니다!이후 @PostMapping("/api/payment/cancel") private boolean cancelPayment(@RequestBody RefundRequestDto refundRequestDto) throws JsonProcessingException { RestTemplate restTemplate = new RestTemplate(); String url = "https://api.iamport.kr/payments/cancel"; // 요청 파라미터 설정 MultiValueMap<String, String> formData = new LinkedMultiValueMap<>(); formData.add("impUid", refundRequestDto.imp_uid()); formData.add("checksum", String.valueOf(refundRequestDto.checksum())); formData.add("reason", refundRequestDto.reason()); // 요청 헤더 설정 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); String token = getAccessToken(new PaymentRequestDto.getToken(iamportConfig.getApiKey(), iamportConfig.getSecretKey())); headers.set("Authorization", "Bearer " + token); // 요청 객체 생성 HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(formData, headers); // 요청 보내기 ResponseEntity<String> response = restTemplate.postForEntity(url, requestEntity, String.class); // 응답 처리 if (response.getStatusCode() == HttpStatus.OK) { // 각 아이템에 대해 수량 롤백 진행 purchaseService.rollbackItemsQuantity(refundRequestDto.imp_uid()); // 주문 상태 변경 purchaseService.ChangeStatusToCancelled(refundRequestDto.imp_uid()); return true; } else { return false; } } 이런 코드를 사용하는과정에서 String token = getAccessToken(new PaymentRequestDto.getToken(iamportConfig.getApiKey(), iamportConfig.getSecretKey()));이부분의 iamportConfig 가 null로 나오는 문제가 발생했습니다.다방면으로 답을 찾아보다가 AOP를 전부 주석처리하니까 해결되더라구요. 그래서 AOP의 적용범위에서 해당 컨트롤러를 제외시켰는데 해결이 되었습니다.이를통해 좀 알아보니까 AOP가 실행되는 시점은 새로운 PaymentRequestDto 인스턴스가 생성되기 전 이므로AOP 프록시 객체가 cancelPayment를 감쌀때 PaymentRequestDto는 null이게 된다.(AOP 로직이 @Value로 주입된 프로퍼티 값에 접근하기 전에 실행되어 값을 정상적으로 참조할 수 없는 상황이 발생)라는 결론에 다다르게 되었는데, 제가 잘 이해한게 맞을까요?...!
-
미해결김영한의 실전 자바 - 기본편
상속
public class cd{public int amt ;........... } public class ab extends cd{public int count ;public void method(){count += amt ;}이 상황에서 class ab 는 cd 의 instance variable 인 amt 를 자유자재로 쓸 수 있나요? 그렇다면 위와 같이 그냥 amt 만 써야 하나요?마찬가지로 이 아래 BankAccount class 의 private double balance 가 아니라 public double balance 였다면 Checking class 에서 만약 withdraw method 를 public void withdraw{transcations ++ ;balance = balance + amt ; } 라고 해도 되는건가요 ?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
MethodEx4 지역변수 선언 관련 질문
[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 공부하는 도중에 질문이 있어서 남깁니다.1. 왜 balance 지역변수는 메인 메서드 범위 내에 선언을 하고 0으로 초기화를 하였는지 왜 amount 지역변수는 while문 범위 내에 선언을 하고 초기화를 하지 않았는지초기화값을 줄 때와 주지 않을 때의 상황이 따로 있는것인지 위에 3가지가 궁금합니다. 이미 여러 예제들을 통해 제가 작성한 코드와 강사님이 작성하신 코드를 비교해봤을 때, 발생한 공통된 질문들입니다.감사합니다.
-
해결됨스프링 핵심 원리 - 기본편
스프링 빈 상속 관계에서 6분쯤 라이브코딩하는데
강사님과 똑같이 쳤는데 빨간줄이 뜨네요 뭐가 문제일까요?
-
해결됨김영한의 실전 자바 - 중급 1편
섹션 5 - 3(타입 안전 열거형 패턴) if 문대신 개선된 switch 문으로 변경
package enumeration.ex2; public class DiscountService { public int discount(ClassGrade grade, int price) { if (grade == ClassGrade.BASIC) { return price / 100 * 10; } if (grade == ClassGrade.GOLD) { return price / 100 * 20; } if (grade == ClassGrade.DIAMOND) { return price / 100 * 30; } return 0; } } package enumeration.ex2; public class DiscountServiceTest { public int discount(ClassGrade grade, int price) { switch (grade) { case ClassGrade.BASIC -> { return price / 100 * 10; } case ClassGrade.GOLD -> { return price / 100 * 20; } case ClassGrade.DIAMOND -> { return price / 100 * 30; } default -> { return 0; } } } } 안녕하세요. 위의 코드 같이 if 문으로 사용하면 정상적으로 실행이 가능한데아래 처럼 if 문을 개선된 switch 문으로 바꾸면 왜 컴파일 오류가 뜨는지 정확히 알고 싶습니다.case 에는 리터럴 상수만 사용 가능하고참조값은 case에 적을 수 없는 것 같은데 맞나요?
-
미해결김영한의 실전 자바 - 중급 1편
예외 처리
수업중에 만약 예외 처리를 못하고 계속 던지면 main() 밖으로 나가는 순간 예외 로그를 출력하면서 시스템이 종료된다고 나와 있는데, 시스템이 종료된다는 말은 무슨 말인가요 ?저 아래 코드에서 다른 줄에 있는 .... 코드를 실행하지 않고 line 10 으로 건너뛴다는 이야기인가요? 아니면 건너뛰지도 않고 그냥 끝나버린다는 말인가요 ?public class Main { public static void main(String[] args) { ........ .......... } } ( line 10)
-
미해결김영한의 실전 자바 - 중급 1편
섹션4 문제풀이2
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]사소할 수도 있는데 궁금해서요.로또 제너레이터 클래스 만드실때Private final Random random = new Random();에서 왜 final로 만드나요?
-
미해결김영한의 실전 자바 - 중급 1편
charArr 출력값에 대하여 질문있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.이 부분에서 charArr은 참조변수니까 인덱스를 따로 지정하지 않고 charArr을 통째로 출력하면 참조값이 나와야 하는거 아닌가요? 강의에서는 hello가 출력되더라고요 아무리 생각해도 이상해서 제가 놓친 개념이 있는 거 같아서 궁금해서 질문드립니다.추가로 System.out.println(charArr)을 하면 hello가 나오던데 사진처럼 "charArr = " + charArr로 하니까이렇게 참조값이 나오더라고요 무슨 차이인지도 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
김영한 선생님 인텔리제이 테마 설정 질문입니다
스프링 잎사귀모양이랑 클래스마다 C로 표시되게 하는 테마는 어떻게 설정할 수 있을까요? 얼티밋에서만 가능한 설정이더라도 알려주시면 감사드리겠습니다.
-
미해결김영한의 실전 자바 - 중급 1편
예외처리
12-12-2안녕하세요. 저는 2-2 처럼 throw new 를 잡으면 1 클래스에 try{} 를 통해 예외를 잡는다는 것을 알게 되었습니다 그런데 만약 2-1 처럼 throw new Exception 을 안잡게 되면 어떻게 되나요 ? 그렇다해도 자동으로 try {} 문 안에서 예외를 잡아주지 않나요 ?