입력은 명령을 실행하는 데 필요한 데이터를 넣어주는 것을 의미합니다. 입력한 데이터를 프로그램에서 사용하려면 컴퓨터 어딘가에서 기억하고 있어야 하는데, 이것을 저장이라고 하며 컴퓨터의 메모리에서 담당합니다.
입력은 명령을 실행하는 데 필요한 데이터를 넣어주는 것을 의미합니다. 입력한 데이터를 프로그램에서 사용하려면 컴퓨터 어딘가에서 기억하고 있어야 하는데, 이것을 저장이라고 하며 컴퓨터의 메모리에서 담당합니다.
선언할 변수명 앞에는 자료형을, 뒤에는 세미콜론을 붙입니다.
자료형 또는 데이터 타입은 변수에 저장하는 데이터의 형태를 의미합니다.
변수를 선언한다고 바로 메모리 공간이 할당되진 않습니다. 변수 선언은 단지 프로그램에서 만든 변수에 어떤 데이터를 저장할 수 있는지를 자바 컴파일러에 알려주는 역할만 합니다.
프로그램에서 변수에 데이터를 넣으면 데이터가 변수에 저장되고, 이때 메모리가 할당됩니다. 이렇게 변수에 넣는 데이터를 값이라고 합니다. 값이 저장되면 변수명으로 메모리에 접근해 사용할 수 있습니다.
# 변수 초기화 예시 코드
int a; // 변수 선언만 한 상태
int b = 10; // 변수 선언과 동시에 초기화
a = 20; // 변수 초기화
자료형이 같으면 여려 변수를 한 번에 선언하고 초기화할 수도 있습니다. 이때 각 변수는 쉼표(,)로 구분합니다.
int num1, num2, num3;
int a = 1, b = 2, c = 3;
_와 $만 허용한다.int firstNumber;
int FirstNumber;
_)로 구분합니다.int first_number;
변수 선언 형식을 보면 변수명 앞에 자료형을 표시합니다. 자료형은 변수에 저장하는 값의 형태를 의미합니다.
프로그래밍 언어에서 변수는 특정 자료형을 가지며, 자료형에 따라 저장할 수 있는 데이터의 종류와 크기가 결정됩니다.
자료형에는 기본 자료형과 참조 자료형이 있습니다.
byte (1바이트)short (2바이트)int (4바이트)long (8바이트) - long 값은 숫자 끝에 L 또는 l을 붙여 표기합니다. 단, l은 숫자 1과 혼동이 일어날 수 있어 일반적으로 대문자인 L을 사용합니다.// 자료형 long 예시 코드
long largeNumber = 10000000000L;float (4바이트)double (8바이트)char (2바이트) - 단일 문자 저장boolean (1비트) - true 또는 false 값만 저장기본 자료형 외에도 자주 사용하는 자료형으로 String이 있습니다. String은 문자열로 된 값을 표시할 때 사용합니다.
문자열은 자바에서 큰따옴표("")로 표시합니다. 그래서 큰따옴표 사이에 숫자나 문자를 넣으면 모두 문자열로 인식합니다.
String과 같은 자료형을 참조 자료형이라고 합니다. 값을 저장하는 기본 자료형과 달리 참조 자료형은 값이 저장된 주소를 저장합니다. 이때 주소는 메모리에서 위치를 나타냅니다. 참조 자료형에는 배열, 클래스, 인터페이스 등이 있습니다.
String strTxt = "a";
String strWord = "Java";
String strNum = "123";
String strKor = "코딩 공부";
변수에 저장하는 값은 계속 바뀔 수 있습니다. 그런데 값을 한 번 저장하고 나면 변경하지 않아야 하는 경우가 있습니다. 이럴 때는 상수(constant)를 사용합니다.
상수는 저장한 값이 바뀌지 않는 변수를 말합니다. 상수로 선언하려면 변수를 선언할 때 앞에 final 키워드를 붙입니다.
final String HELLO = "hello"; // 변경 불가 (상수)
final int START_YEAR = 2025; // 변경 불가 (상수)
변수를 선언하며 값을 넣는데, 값을 정확히 표현하면 리터럴(literal)이라고 합니다. 리터럴은 '문자 그대로의'란 뜻입니다. 즉, 소스 코드에 직접 표시하는 값 그 자체를 의미합니다.
// 리터럴은 값 그 자체를 의미합니다.
int number = 123; // 123이 리터럴
double floatNumber = 0.1234; // 0.1234가 리터럴
char character = 'A'; // 'A'가 리터럴
String name = "홍길동"; // "홍길동"이 리터럴
프로그래밍 언어에서 연산자(operator)는 어떤 연산을 수행할 때 사용하는 기호입니다.
대표적으로는 사칙연산자(+, -, *, /)가 있으며, 추가적으로 모듈러(%) 연산자와 대입 연산자(=)가 있습니다.
산술 연산자는 수학적 계산을 할 때 사용되는 연산자입니다.
덧셈 연산자입니다.
두 값을 더합니다.
뺄셈 연산자입니다.
첫 번째 값에서 두 번째 값을 뺍니다.
곱셈 연산자입니다.
두 값을 곱합니다.
나눗셈 연산자입니다.
첫 번째 값을 두 번째 값으로 나눕니다.
double 자료형을 이용해야 합니다.// 나눗셈 예제:
int a = 10;
int b = 4;
System.out.println("정수 나눗셈: " + (a / b)); // 결과: 2
System.out.println("실수 나눗셈: " + (a / (double) b)); // 결과: 2.5
모듈러(나머지) 연산자입니다.
첫 번째 값을 두 번째 값으로 나눈 나머지를 반환합니다.
// 홀수, 짝수 판별 코드 예제:
int num = 7;
if (num % 2 == 0) {
System.out.println(num + "은(는) 짝수입니다.");
} else {
System.out.println(num + "은(는) 홀수입니다.");
}
// 사칙연산자 코드 예제:
public class Main {
public static void main(String[] args) {
int a = 10;
int b = 3;
System.out.println("덧셈: " + (a + b)); // 13
System.out.println("뺄셈: " + (a - b)); // 7
System.out.println("곱셈: " + (a * b)); // 30
System.out.println("나눗셈: " + (a / b)); // 3
System.out.println("나머지: " + (a % b)); // 1
}
}
+ 연산자는 숫자 덧셈 외에도 문자열을 연결하는 데 사용할 수 있습니다. 두 개 이상의 문자열을 하나로 이어붙입니다.
public class Main {
public static void main(String[] args) {
String firstName = "길동"
String lastName = "홍"
// 문자열 연결
String fullName = lastName + " " + firstName;
System.out.println("이름: " + fullName);
}
}
// 출력:
홍길동
문자열과 숫자를 연결하는 것도 가능합니다.
public class main {
public static void main(String[] args) {
int age = 20;
System.out.println("제 나이는 " + age + "살입니다.");
}
}
// 출력:
제 나이는 20살입니다.
Scanner 클래스를 사용하여 사용자로부터 값을 입력받아 사칙연산을 수행할 수 있습니다.
import java.util.Scanner;
public class main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 사용자로부터 입력 받기
System.out.print("첫 번째 숫자를 입력해 주세요: ");
int num1 = sc.nextInt();
System.out.print("두 번째 숫자를 입력해 주세요: ");
int num2 = sc.nextInt();
// 사칙연산 결과 출력
System.out.println("덧셈: " + (num1 + num2));
System.out.println("뺄셈: " + (num1 - num2));
System.out.println("곱셈: " + (num1 * num2));
System.out.println("나눗셈: " + (num1 / num2));
System.out.println("나머지: " + (num1 % num2));
// 사용한 자원 닫기
sc.close();
}
}
// 출력
첫 번째 숫자를 입력해 주세요: 10
두 번째 숫자를 입력해 주세요: 3
덧셈: 13
뺄셈: 7
곱셈: 30
나눗셈: 3
나머지: 1
형변환(type casting)은 변수의 데이터 타입을 변경하는 과정입니다. 자바에서는 서로 다른 타입의 데이터를 변환하여 사용할 때 형변환이 필요합니다.
형변환은 값의 데이터 타입을 다른 데이터 타입으로 변환하는 과정을 의미합니다. 예를 들어, 정수를 실수로 변환하거나, 실수를 정수로 변환하는 작업이 형변환에 해당합니다.
형변환은 프로그램에서 서로 다른 데이터 타입 간의 호환성을 보장하거나 특정 연산을 수행하기 위해 필수적인 과정입니다.
이 중에서도 명시적 형변환과 묵시적 형변환은 사용 방식과 데이터 손실 가능성에 차이가 있습니다.
명시적 형변환은 개발자가 직접 코드에 형변환을 명시적으로 지정하여 타입을 변환하는 방식입니다. 강제 형변환이라고도 하며, 더 큰 데이터 타입을 더 작은 데이터 타입으로 변환할 때 사용합니다.
이 과정에서는 데이터 손실이 발생할 가능성이 있으므로 주의가 필요합니다. 예를 들어, 실수를 정수로 변환할 때 소수점 이하 값이 제거되며, 큰 정수를 작은 데이터 타입으로 변환할 때는 데이터가 잘릴 수 있습니다.
// 형식:
타입 변수명 = (변환할 타입) 값;
// 명시적 형변환 (강제 형변환)
public class Main {
public static void main(String[] args) {
double doubleValue = 7.11;
int intValue = (int) doubleValue; // 명시적 형변환 (강제 형변환)
System.out.println("실수 값: " + doubleValue); // 7.11
System.out.println("정수 값: " + intValue); // 7 (데이터 손실)
}
}
묵시적 형변환은 컴파일러가 자동으로 수행하는 형변환으로, 데이터가 거의 손실되지 않고, 개발자가 명시적으로 코드를 작성하지 않아도 됩니다.
묵시적 형변환은 더 작은 데이터 타입에서 더 큰 데이터 타입으로 변환할 때만 발생하며, 이를 자동 형변환이라고도 합니다.
// 묵시적 형변환 (자동 형변환)
public class Main {
public static void main(String[] args) {
int intValue = 100;
double doubleValue = intValue; // 자동 형변환
System.out.println("정수 값: " + intValue); // 100
System.out.println("실수 값: " + doubleValue); // 100.0
}
}
주석(comment)은 코드에 대한 설명을 작성하거나 메모를 남기기 위해 사용됩니다.
주석은 소스 코드에는 표시되나 프로그램 실행 시 무시되며(프로그램 실행에 영향을 주지 않음), 코드의 가독성을 높이고 협업 시 의사소통을 원할히 하기 위해 필수적으로 사용됩니다.
자바에서 주석은 /* */와 //로 표시합니다.
블록 주석은 여러 줄에 걸쳐 작성할 수 있는 주석입니다.
코드의 큰 부분이나 파일 전체에 대한 설명을 작성할 때 사용합니다.
/*로 시작하고 */로 끝나며, /* */ 범위 안에 든 모든 내용을 주석으로 처리합니다.
/*
* 블록 주석:
* 이 프로그램은 두 숫자의 합을 계산합니다.
* 작성자: 홍길동
* 작성일: 2025-01-09
*/
public class Main {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a + b);
}
}
한 줄 주석은 코드에서 특정 줄에 대한 설명을 작성할 때 사용합니다.
/* */ 기호를 사용합니다.
public class Main {
public static void main(String[] args) {
/* 한 줄 주석: 두 변수 a, b의 합을 구합니다. */
int a = 10;
int b = 20;
System.out.println(a + b);
}
}
꼬리 주석은 코드의 오른쪽에 추가적인 설명을 덧붙이는 형태의 주석입니다.
/* */ 기호를 사용하고, 가독성을 유지하면서 간단한 정보를 제공하는 데 유용합니다.
설명하려는 코드와 같은 줄에 작성하고, 실행할 코드와 구분되도록 멀리 떨어뜨리는 것이 좋습니다.
public class Main {
public static void main(String[] args) {
int x = 10; /* 꼬리 주석: 초기값 설정 */
x = x + 5; /* 꼬리 주석: 값 증가 */
System.out.println(x); /* 꼬리 주석: 결과 출력 */
}
}
줄 끝 주석은 코드의 흐름에 따라 각 줄 끝에 간단한 설명을 추가하는 방식입니다.
한 줄 전체를 주석 처리하거나 일부분을 주석 처리할 때에도 사용합니다.
// 기호를 사용해 작성합니다.
public class Main {
public static void main(String[] args) {
int x = 10; // 줄 끝 주석: 변수 선언 및 초기화
int y = 20;
// System.out.println(x + y);
System.out.println(x - y);
System.out.println(x * y);
System.out.println(x / y);
}
}
코드 작성 규칙은 코드의 가독성과 유지보수성을 높이고, 협업 시 일관성을 유지하기 위해 정해진 지침입니다.
코드 작성 규칙은 내용이 방대하고 해석하기에 따라 달라지기도 합니다. 여기서는 몇 가지 규칙만 간단하게 살펴보겠습니다.
자바 소스 코드는 java, 빌드된 자바 바이트 코드는 class 확장자를 가집니다.
들여쓰기는 기본으로 빈칸 4개를 사용하며, space를 써도 되고 Tab을 써도 됩니다.
중첩된 블록은 들여쓰기를 추가하여 구조를 구분합니다.
코드를 한 줄에 80자 이상 작성하는 것은 지양합니다.
하나의 식이 한 줄에 들어가지 않으면 다음 원칙에 따라 두 줄로 나눕니다.
,) 뒤에서 나눕니다.longtemp1 = longtemp2 * (longtemp3 + longtemp4 - longtemp5)
+ 123 * longtemp6
선언문은 한 줄에 작성하기보다는 한 줄에 하나씩 작성하는 것이 권장됩니다. 그래야 주석을 작성하기가 편합니다.
int level, size; // 권장 X
int level; // 권장 O
int siez; // 권장 O
또한, 같은 줄에 서로 다른 자료형을 선언하면 안 됩니다.
int a = 10, b = 20, c = 30; String d = "hello"; // 서로 다른 자료형 선언 X