java 30

[Java] 자바 Math 클래스 - 수학 관련 함수

1. Math 클래스 소개자바의 Math 클래스는 수학적인 연산을 수행하는 데 유용한 다양한 메서드를 제공합니다. 이 클래스는 모든 메서드가 정적(static)이므로, Math 클래스의 객체를 생성할 필요 없이 바로 사용할 수 있습니다.또한, Math 클래스는 java.lang 패키지에 위치하고 있기 때문에 별도의 import 없이 사용 가능합니다.2. Math 클래스의 상수static double E : 자연 로그의 밑인 e에 가장 가까운 값static double PI : 원주율 PI3. Math 클래스에서 자주 쓰이는 메소드구분메소드절대값, 부호abs, signum제곱 관련pow, scalb, sqrt, cbrt, hypot최소, 최대min, max소수점ceil, floor, round, rint삼..

Java 2024.05.06

[Java] 자바에서 키 입력 System.in과 Scanner

자바에서 키 입력System.in키보드 장치를 직접 제어하고 키 입력을 받는 표준 입력 스트림 객체System.in은 입력된 키를 단순한 바이트 정보로 제공해서 바이트 정보를 문자나 숫자로 변환해야 하는 과정 필요Scanner키보드에서 입력된 키를 문자나 정수, 실수, 문자열 등 사용자가 원하는 타입으로 변환해주는 Scanner 클래스를 사용하는 것이 효과적import java.util.Scanner;Scanner scanner = new Scanner(System.in);Scanner 클래스는 사용자가 입력하는 키 값을 공백 문자(’ ‘, ‘\t’, ‘\n’)를 기준으로 분리하여 토큰 단위로 읽음// 1. next() 메소드는 공백을 기준으로 다음 입력 토큰을 반환String token = scanne..

Java 2024.05.03

[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에서의 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] 자바, 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

[Java] 특징부터 C/C++ vs Java 실행 환경 차이 비교

Java 특징: WORA (Write Once Run Anywhere) 컴파일 : 고급 언어를 컴퓨터가 해석할 수 있는 기계어로 바꿔주는 과정 컴파일러: 컴파일 해주는 소프트웨어 C/C++ 등 자바 이전의 프로그래밍 언어들의 컴파일러는 기계어 코드로 변환할 때 프로그램이 실행될 대상의 컴퓨터의 CPU와 운영체제에 종속적인 코드로 변환한다. 위의 이유로 같은 코드를 다른 플랫폼(다른 CPU or OS)에서 실행하려면 아래 2가지 중 하나를 해야 함 다시 컴파일하기 플랫폼에 맞도록 코드를 수정 같은 리눅스인데 CPU가 다르면 다시 컴파일 or 코드 수정, 같은 CPU인데 리눅스의 것을 윈도우에서 실행하려고 해도 컴파일 or 코드 수정 필요 => 플랫폼 종속성(platform independence) 플랫폼 ..

Java 2024.04.03

[Java] 프로그래밍 언어의 진화 그리고 컴파일과 실행

프로그래밍 언어 프로그래밍 언어는 컴퓨터가 실행할 프로그램을 작성하는언어 컴퓨터의 CPU는 이진수(binary code)인 0과 1밖에 이해하지 못함 이진수 명령어들로 구성된 언어를 기계어(machine language)라고 함 기계어의 각명령을 ADD, SUB, MOVE 등 가급적 표현하기 쉬운 상징적인 니모닉 기호(mnemonic symbol)로 일대일 대응시킨 어셈블리어(assembly language)가 만들어짐 어셈블이어 역시 사람이 다루기 힘들고, 다양한 프로그램이나 자료를 효율적으로 표현하는데에 한계 => 사람이 이해하기 쉽고 복잡한 알고리즘, 프로그램 등 효율적 표현 위해 고급 언어 생겨남 고급 언어는 초기에 절차 지향 언어 형태를 거쳐 지금의 객체 지향 언어로 진화 C++, 자바, C#은..

Java 2024.04.03