JAVA 언어 사양에 따라 JAVA의 메서드는 한 번에 하나의 값만 반환할 수 있다. 따라서 메서드에서 여러 값을 반환하는 것은 이론적으로 JAVA에서 불가능하다. 이에 JAVA는 몇 가지 현명한 해결 방법으로 원하는 작업을 수행할 수 있게 해주었는데, 그 방법은 다음과 같다. 1. 사용 POJO (Plain Old Java Object) 클래스 인스턴스 이것은 JAVA의 메소드에서 여러 값을 리턴하는 데 가장 일반적으로 사용되는 메소드이다. 아이디어는 반환하려는 모든 필드를 포함하는 클래스의 인스턴스를 반환하는 것이다. *POJO란 객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 말한다. 그러한 POJO에 애플리케이션의 핵심로직과 기..
🧑🏻💻 Fac si facis
C++과 JAVA는 문법적으로 상당히 유사하다. 두 언어 모두 클래스 기반의 객체 지향 프로그래밍 언어이기 때문이다. 즉, 클래스 단위로 사용자 요구를 처리하는 속성(변수)과 메소드(함수)를 묶어 클래스의 인스턴스를 생성하여 처리하는 방식으로 전개해 나간다. 이처럼 유사한 이유는 java가 설계될 때 C++ 개발자들이 쉽게 배울 수 있도록 만들었기 때문이다. 하지만 여러 차이점이 존재하는데, 이는 설계 목표의 차이에서 발생했다. JAVA는 보안, 이식성, 빠른 개발에 비중을 두었고, C++은 속도와 C언어와의 하위 호환성에 중점을 두었다. 또한, JAVA는 가상 머신 바이트 코드로 컴파일하며, 실행시키려면 가상 머신이 필요하지만, C++은 각 머신에 맞는 기계어로 컴파일한다. 이러한 이유로 이론상 C++..
프로그래머가 지녀야 할 가장 중요한 능력은 문제 해결 능력이다. 다음은 C / C++ 에서 "표준 입력으로부터 입력받은 길이를 알 수 없는 문자열 저장하기"의 전형적인 문제의 예이다. char s[LENGTH]; scanf("%s", s); scanf ( ) 함수는 인자로 주어지는 형식지정자(format specifier)를 파싱해야 하는 오버헤드가 따른다. 공백 문자가 나타나면 읽기를 중단한다. 형 안정성을 보장받을 수 없다. ("%s" 대신 "%d"로 오타라도 낸다면?) 문자열의 예상되는 크기를 프로그래머도 알고 있어야 한다. char s[LENGTH]; gets( s ); gets( ) 함수는 문자열을 입력받는 데에 거의 완벽한 기능을 제공한다. scanf( ) 함수와 같이 형식 지정자를 파싱해야 ..
‘JAVA에서 두 개의 오브젝트가 같은가’ 라는 말은 주의해서 사용해야 한다. JAVA에서는 두 개의 오브젝트가 완전히 같은 동일한 (Identical) 오브젝트라고 말하는 것과, 동일한 정보를 담고 있는 (Equivalent) 오브젝트라고 말하는 것은 분명한 차이가 있다. 전자는 동일성(Identical) 비교라 하고, 후자는 동등성(Equivalent) 비교라고 한다. 동일성은 == 연산자로 동등성은 equals() 메소드를 이용해 비교한다. 두 개의 오브젝트가 동일하다면 사실은 하나의 오브젝트만 존재하는 것이고 두 개의 오브젝트 레퍼런스 변수를 갖고 있을 뿐이다. 두개의 오브젝트가 동일하지는 않지만 동등한 경우에는 두 개의 각기 다른 오브젝트가 메모리상에 존재하는 것인데, 오브젝트의 동등성 기준에 ..
스프링 개발 초기 환경 설정에 고생을 하면서 Java 버전을 다양하게 쓰고 싶다는 생각이 들었다. 구글링을 통해 Window 10에 Java version을 여러 개 설치하여 사용하는 법을 알게 되었고, 자바 1.8, 11, 18 버전을 설치하여 필요에 따라 변경할 수 있게 되었다. 1. 필요한 JAVA 설치 자바 설치는 구글링을 통해 간단하게 설치가 가능하다. OracleJDK와 OpenJDK 중 원하는 버전을 다운 받으면 되는데, 성능상 큰 차이는 없지만 나는 기존에 설치된 Oracle JDK 18버전이 있어서 Oracle JDK로 설치했다. 2. 환경 변수 설정 내 PC 마우스 우클릭 > 속성 > 정보 - 고급 시스템 설정 > 환경 변수 경로로 들어간다. JAVA 경로는 최신 버전인 JDK 18을 ..