1. JAVA (자바)
프로그래밍 언어와 자바
- 자바(Java)는 객체 지향적이고 플랫폼 독립적인 프로그래밍 언어이다.
- 썬 마이크로시스템즈에서 1995년에 처음 발표한 자바는 현재 오라클에 의해 관리되고 있으며, '한 번 작성하여 어디서나 실행할 수 있다'는 철학을 가지고 있다.
- 이러한 특징 덕분에 자바는 웹 애플리케이션, 안드로이드 애플리케이션, 서버 측 애플리케이션 등 다양한 분야에서 널리 사용된다.
자바 프로그램 개발 과정
- 자바 프로그램은 컴파일러에 의해 바이트 코드(. class 파일)로 변환된 후, 자바 가상 기계(JVM)가 이 바이트 코드를 해석하여 실행한다.
- 이 바이트 코드는 운영체제에 독립적이므로, JVM이 있는 어디에서나 동일하게 실행될 수 있다.
- 자바 프로젝트를 생성하고 실행하기 위해서는 IDE(통합 개발 환경) 또는 명령 줄을 사용할 수 있다.
- Eclipse나 IntelliJ 같은 IDE를 사용하면 개발 속도를 높일 수 있으며, 명령 줄에서는 다음과 같은 단계를 통해 컴파일하고 실행할 수 있다.
// 컴파일하기
javac HelloWorld.java
// 실행하기
java HelloWorld
- 명령 줄에서 javac 명령어를 사용하여 소스 파일(.java)을 컴파일하면 바이트 코드 파일(. class)이 생성된다.
- 그런 다음 java 명령어로 바이트 코드 파일을 실행할 수 있다.
- 자바 소스 파일은 보통 클래스 선언과 main 메서드로 구성되어 있다.
- public static void main(String[] args) 메서드는 자바 프로그램의 진입점이며, JVM은 이 메서드부터 실행을 시작한다.
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
- 주석은 코드에 설명을 추가하여 가독성을 높이는 데 사용된다.
- 자바에서는 //를 사용하여 한 줄 주석을, /* */을 사용하여 여러 줄 주석을 작성할 수 있다.
// 한 줄 주석 예제
/*
여러 줄 주석 예제
코드의 설명을 위해 사용됨
*/
- 자바에서 실행문은 반드시 세미콜론(;)으로 끝나야 한다. 이는 컴파일러가 실행문의 끝을 인식하도록 돕는 역할을 한다.
2. 변수와 타입
변수
- 변수는 데이터를 저장하는 메모리 공간의 이름이다.
- 자바에서 변수를 사용하려면 먼저 데이터 타입과 함께 선언해야 한다.
int age;
- 변수에 값을 저장할 때는 = 연산자를 사용한다.
- 변수 선언과 값을 동시에 초기화할 수도 있다.
age = 25;
int height = 180;
- 선언된 변수는 그 값을 참조하여 연산에 사용하거나 출력할 수 있다.
System.out.println("나이: " + age);
- 변수는 선언된 블록 내에서만 사용 가능하다.
- 이를 변수의 유효 범위 또는 스코프(scope)라고 한다.
public void example() {
int localVar = 10; // localVar은 이 블록 내에서만 유효함
}
기본 타입
- 자바에는 여러 정수 타입이 있으며, 대표적으로 byte, short, int, long이 있다.
- 각 타입은 저장할 수 있는 정수의 범위가 다르다.
int num = 100;
long bigNum = 10000000000L;
- 실수를 저장하기 위한 타입으로 float와 double이 있다.
- float은 단정밀도, double은 배정밀도를 지원하며, 더 많은 소수점 이하 자릿수를 처리할 수 있다.
float height = 180.5f;
double weight = 75.8;
- 논리 타입은 boolean으로, 참(true)과 거짓(false)의 두 가지 값만을 가질 수 있다.
boolean isStudent = true;
타입 변환
- 자동 타입 변환은 작은 크기의 타입이 큰 크기의 타입으로 변환되는 경우 자동으로 이루어진다.
- 이를 '묵시적 형변환'이라고도 한다.
int num = 10;
double result = num; // int가 double로 자동 변환됨
- 큰 크기의 타입을 작은 크기의 타입으로 변환하려면 명시적으로 형변환을 해야 한다.
- 이를 '캐스팅'이라고 한다.
double d = 9.7;
int i = (int) d; // 실수를 정수로 강제 변환, 소수점 이하 부분이 제거됨
- 정수 타입끼리의 연산에서 크기가 작은 타입은 자동으로 큰 타입으로 변환된다.
byte a = 10;
short b = 20;
int sum = a + b; // byte와 short가 int로 자동 변환됨
- 실수 연산에서도 작은 크기의 타입이 큰 크기의 타입으로 자동 변환된다.
float f = 5.5f;
double d = 3.3;
double total = f + d; // float가 double로 변환됨
- 문자열과 다른 타입의 데이터를 + 연산자로 결합하면 다른 타입이 문자열로 자동 변환된다.
int num = 100;
String str = "결과: " + num; // 정수 num이 문자열로 변환되어 결합됨
- 문자열을 정수나 실수와 같은 기본 타입으로 변환하려면 래퍼 클래스의 변환 메서드를 사용한다.
String str = "123";
int value = Integer.parseInt(str); // 문자열을 정수로 변환
변수와 시스템 입출력
- System.out.println() 메서드를 사용하여 변수의 값을 출력할 수 있다.
int score = 95;
System.out.println("점수: " + score);
- Scanner 클래스를 사용하여 사용자로부터 입력을 받아 변수를 초기화할 수 있다.
import java.util.Scanner;
public class InputExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("나이를 입력하세요: ");
int age = scanner.nextInt();
System.out.println("입력한 나이: " + age);
}
}
3. 변수와 데이터 입력
연산자와 연산식
- 연산자는 데이터를 처리하여 결과를 얻기 위한 기호이다. 자바에는 산술, 비교, 논리, 비트 연산자 등 다양한 종류의 연산자가 있다.
- 연산자는 특정 방향으로 수행되며, 우선순위에 따라 계산 순서가 결정된다.
- 산술 연산자가 비교 연산자보다 우선하고, 비교 연산자는 논리 연산자보다 우선한다.
- 우선순위를 명확히 하기 위해 괄호를 사용할 수 있다.
int result = 5 + 3 * 2; // 곱셈이 덧셈보다 우선, 결과는 11
int correctedResult = (5 + 3) * 2; // 괄호로 우선순위 변경, 결과는 16
연산자의 종류
- 단항 연산자는 하나의 피연산자에 대해 연산을 수행한다. 대표적인 단항 연산자로는 +, -, ++, --,! 등이 있다.
- +, -: 수의 부호를 지정한다.
- ++, --: 변수를 1씩 증가시키거나 감소시킨다.
- !: 논리 값을 반전시킨다.
int a = 10;
a++; // a의 값이 11로 증가
boolean flag = false;
flag = !flag; // flag의 값이 true로 변경
- 이항 연산자는 두 개의 피연산자에 대해 연산을 수행한다.
- 이항 연산자는 산술 연산자(+, -, *, /, %), 비교 연산자(>, <, >=, <=, ==, !=), 논리 연산자(&&, ||) 등이 있다.
int x = 5;
int y = 3;
int sum = x + y; // 이항 연산자 '+' 사용
boolean result = (x > y); // 비교 연산자 '>' 사용, 결과는 true
- 삼항 연산자는 세 개의 피연산자를 필요로 하며, 조건문을 간단하게 표현할 때 사용된다.
- 형식은 (조건식) ? 참일 때 값 : 거짓일 때 값이다.
int a = 10;
int b = 20;
int max = (a > b) ? a : b; // a가 b보다 크면 a, 그렇지 않으면 b를 선택
System.out.println("더 큰 값: " + max); // 출력: 더 큰 값: 20
'IT & AI > AI 지식' 카테고리의 다른 글
JAVA 객체 지향 프로그래밍: 클래스, 상속 (0) | 2024.11.21 |
---|---|
JAVA 조건문, 반복문, 참조 타입(배열) 정리 (2) | 2024.11.21 |
C 언어 메모리 동적 할당, 구조체, 파일 입출력 (1) | 2024.11.20 |
C 언어 변수, 다차원 배열, 응용 포인터 정리 (1) | 2024.11.19 |
C 언어 배열, 포인터, 문자열 활용 심화 (0) | 2024.11.19 |