Java 24

[Java] 자바 기본 문법 - 데이터 타입

자바의 데이터 타입데이터 타입(data type)이란 자바에서 다룰 수 있는 데이터의 종류를 말함 기본 타입 8개boolean (1비트, true or false)char (2바이트, Unicode)byte (1바이트, -128~127)short (2바이트, -32768~32767)int (4바이트)long (8바이트)float (4바이트)double (8바이트)레퍼런스 타입 1개용도 3가지배열에 대한 레퍼런스클래스에 대한 레퍼런스인터페이스에 대한 레퍼런스레퍼런스란 C/C++의 포인터와 비슷한 개념이다. 그러나 C/C++와 달리 실제 주소값을 가지지 않는다.[C/C++과 자바의 문자 차이점]자바에서 영어든 한글이든 문자 하나는 2바이트의 유니코드(Unicode)로 저장된다. 그러므로 자바에서 문자를 나타..

Java 2024.05.03

[Java] 자바의 생성자 목적과 특징, 기본 생성자, this 레퍼런스

생성자의 개념과 목적 생성자(constructor)는 객체가 생성될 때 객체의 초기화를 위해 실행되는 메소드이다. 생성자의 특징 생성자의 이름은 클래스와 동일하다. 생성자는 여러 개 작성(오버로딩)할 수 있다. 매개변수 개수와 타입만 다르면 여러 개 가능 생성자는 new를 통해 객체를 생성할 때 한번만 호출된다. 객체 생성은 반드시 new를 통해서만 이루어지며, 생성자는 이 순간 자동으로 한번만 호출된다. 생성자에 리턴 타입을 지정할 수 없다. 생성자는 어떤 값도 리턴하지 않기 때문 생성자의 목적은 객체가 생성될 때, 필요한 초기 작업을 위함이다. 객체 초기화를 하여 필요한 초기 준비를 하는 데에 이용 필드 초기화, 필요한 메모리 확보, 파일 열기, 네트워크 연결 등 객체가 활동하기 전에 필요한 초기 준..

Java 2024.04.08

[Java] 컴파일 오류, 런타임 오류, 예외(exception) 차이 및 자바의 예외처리 클래스와 try-catch-finally

예외(Exception)란? 자바에서 오동작이나 결과에 악영향을 미칠 수 있는 실행 중 발생한 오류를 예외(exception)라고 한다. 문법에 맞지 않게 작성된 코드는 사전에 컴파일러에 의해 컴파일 오류(compile time error)로 걸러진다. 예외는 사용자의 잘못된 입력이나 배열의 인덱스가 배열의 크기를 넘어가는 등, 예기치 못한 상황에 의해 프로그램 실행 중에 발생한다. 실행 중 발생하는 예외 예시 정수를 0으로 나누는 경우 배열의 크기보다 큰 인덱스로 배열의 원소를 접근하는 경우 존재하지 않는 파일을 읽으려고 하는 경우 정수 입력을 기다리는 코드가 실행되고 있을 때, 사용자가 문자를 입력한 경우 실행 중 예외 발생하면? 실행 중에 예외가 발생하면 자바 플랫폼이 가장 먼저 알게 되어, 현재 ..

Java 2024.04.08

[Java] main() 메소드의 특징과 매개변수

main() 메소드는 자바 응용프로그램의 실행이 시작되는 특별한 메소드이다. 위의 main() 메소드의 원형을 보며 특징을 정리해보자. main() 메소드의 특징 자바 응용프로그램의 실행은 main() 메소드부터 시작한다. main() 메소드는 public 속성이다. public 속성은 메소드가 다른 클래스에서 호출 가능함을 나타냄 자바응용프로그램이 실행을 시작할 때 JVM에 의해 호출되어야 하므로 public 속성으로 선언되어야 함 main() 메소드는 static 속성이다. main() 메소드는 자신을 포함하는 클래스의 객체가 생성되기 전에, 처음부터 JVM에 의해 호출되므로 static 속성으로 선언되어야 함 main() 메소드의 리턴 타입은 void이다. 아무 값도 리턴하지 않기 때문에 void ..

Java 2024.04.08

[Java] Java에서 레퍼런스 타입과 배열의 활용: C++ 포인터와의 비교

Java에서의 레퍼런스 타입과 배열은 C++의 포인터와 유사한 개념을 가지고 있지만, 몇 가지 중요한 차이점이 있습니다. 레퍼런스 타입과 포인터의 차이점: Java의 레퍼런스 타입은 객체에 대한 참조를 저장하는 변수의 데이터 타입입니다. 이는 객체의 주소를 저장하며, 객체의 직접적인 메모리 주소에 접근할 수 없습니다. C++의 포인터는 메모리 주소를 저장하고 해당 주소에 직접 접근할 수 있습니다. 이는 메모리 주소를 직접 조작할 수 있는 강력한 기능을 제공하지만, 잘못 사용할 경우 메모리 누수(memory leak)나 잘못된 참조 등의 문제가 발생할 수 있습니다. 객체 생성 및 할당: Java에서 객체는 new 키워드를 사용하여 동적으로 할당되며, 자동으로 가비지 컬렉션에 의해 메모리가 관리됩니다. 이는..

Java 2024.04.08

[Java] Java에서의 equals() 메소드 사용 시 주의할 점: operator.equals("+") vs "+".equals(operator)

Java에서의 equals() 메소드 사용 시 주의할 점 Java에서 객체의 동등성을 비교할 때 equals() 메소드를 사용하는 것은 흔한 일입니다. 그러나 메소드를 호출할 때 객체가 null인 경우에 대한 처리 방식을 고려해야 합니다. 특히 문자열 비교 시 이러한 주의사항이 더욱 중요합니다. operator.equals("+") if (operator.equals("+")) { // 코드 실행 } else { // 다른 작업 수행 } 위와 같은 코드에서 operator가 null인 경우, NullPointerException이 발생할 수 있습니다. 왜냐하면 operator가 null인 경우, equals() 메소드를 호출할 때 해당 객체가 존재하지 않기 때문입니다. "+".equals(operator..

Java 2024.04.07

[Java] OpenJDK와 Oracle JDK 비교 및 JDK 선택 방법

Java 프로그래밍 언어 자체는 GPL 라이센스로 무료! 하지만! 자바를 컴파일해주고(JDK), 실행시키는 것(JVM)을 도와주는 것이 구독형 라이센스로 변경되면서 논란이 됨 OracleJDK 오라클(Oracle)이 내놓는 LTS 장기 지원 버전 종류 Java SE 8 - 2014년 출시 Java SE 11 - 2018년 출시 Java SE 17 - 2021년 출시 Java SE 21 - 2023년 출시 오라클의 라이스 오라클이 배포하는 Oracle JDK는 상업 라이센스로 2019년부터 유료화 정책을 강화함 Oracle JDK는 BCL (Binary Code License) 라이센스를 적용하고 있었고, '일반적인 목적의 컴퓨팅(General Purpose Computing)'에 사용 시에만 무료였음 즉..

Java 2024.04.06

[Java] 자바 서블릿(servlet)과 응용 프로그램 예시

서블릿(servlet) 웹 서버에서 실행되는 서버용 자바 프로그램 웹 쇼핑몰, 온라인 뱅킹 등의 구현에 사용 웹 브라우저의 요청에 따라 웹 서버에 탑재된 데이터베이스를 검색하거나 요청 받은 내용을 처리하고 웹 페이지로 만들어 웹 브라우저에 응답하는 방식으로 작동 사용자 인터페이스를 필요로 하지 않으며 웹 서버에 의해 실행이 제어됨 응용 프로그램 예시

Java 2024.04.04

[Java] 자바, JDK, JRE, JVM, 모듈화, 자바 API, IDE

JDK(Java Development Kit) 자바 개발자에게 무료로 배포하는 소프트웨어 JDK = 자바 컴파일러 등의 개발 도구 + JRE 참고 SDK(Software Development Kit) 특정한 소프트웨어 프레임워크, 하드웨어 플랫폼, 컴퓨터 시스템 게임기 등을 위한 응용프로그램 등을 만들 수 있게 해주는 개발 도구의 집합 자바의 SDK 가 JDK JRE(Java Runtime Environment) 자바 응용 프로그램이 실행될 때 필요한 소프트웨어들 JRE = 개발자가 활용할 수 있는 자바 API(이미 컴파일된 다양한 클래스 라이브러리) + 자바 가상 기계(JVM) 가발자가 아닌 일반 사용자의 경우 JRE만 필요하며 JRE만 따로 다운 가능 JDK(Demo와 Samples 포함)나 JRE은..

Java 2024.04.04