변수
Java에서 변수를 선언할 때에는 변수의 타입을 명시해주어야 합니다.
예를 들어, 정수형 변수를 선언하고 싶다면 다음과 같이 작성합니다.
int num;
여기서 int는 변수의 타입을 나타내며, num은 변수의 이름입니다.
변수를 선언할 때에는 반드시 초기값을 할당하지 않아도 됩니다.
데이터 타입
Java에서는 기본적으로 8가지 데이터 타입을 제공합니다.
byte: 8비트 정수 -> 잘 사용하지 않음
short: 16비트 정수 -> 잘 사용하지 않음
int: 32비트 정수 -> Default
long: 64비트 정수 -> 사용 시 뒤에 L 을 붙임(long A = 7L;)
float: 32비트 부동소수점(실수) -> 사용 시 뒤에 F 를 붙임(float B = 3.14F;)
double: 64비트 부동소수점(실수) -> Default
boolean: 참/거짓 값을 갖는 논리 타입
char: 16비트 유니코드 문자
연산자
Java에서는 산술, 비교, 논리 연산 등 다양한 연산자를 제공합니다.
산술 연산자: +, -, , /, %
비교 연산자: ==, !=, >, <, >=, <=
논리 연산자: &&, ||, !
대입 연산자: =, +=, -=, =, /=, %= 등
조건문과 반복문
if (조건식) {
// 조건식이 참일 경우 실행되는 코드
} else {
// 조건식이 거짓일 경우 실행되는 코드
}
switch (변수) {
case 값1:
// 변수의 값이 값1일 경우 실행되는 코드
break;
case 값2:
// 변수의 값이 값2일 경우 실행되는 코드
break;
default:
// 변수의 값이 어떤 case에도 해당하지 않을 경우 실행되는 코드
break;
}
for (초기식; 조건식; 증감식) {
// 조건식이 참일 동안 실행되는 코드
while (조건식) {
// 조건식이 참일 동안 실행되는 코드
}
do {
// 일단 한 번 실행되는 코드
} while (조건식);
for (데이터 타입 변수 : 배열 또는 컬렉션) {
// 배열 또는 컬렉션의 각 요소에 대해 실행되는 코드
}
메서드
Java에서는 메서드를 사용하여 코드를 모듈화하고 재사용성을 높일 수 있습니다.
메서드는 다음과 같이 선언됩니다.
public 반환타입 메서드이름(매개변수) {
// 메서드가 실행될 때 수행되는 코드
return 반환값;
}
여기서 public은 접근 제한자를 나타내며, 메서드를 어디서나 접근할 수 있도록 설정합니다.
반환타입은 메서드가 반환하는 값의 데이터 타입을 나타내며, 반환하지 않을 경우 void를 사용합니다.
메서드이름은 메서드의 이름을 나타내며, 매개변수는 메서드가 받는 인수를 나타냅니다.
반환값은 메서드가 실행된 후 반환하는 값입니다.
클래스
public class 클래스이름 {
// 클래스에 대한 멤버 변수와 메서드를 선언
}
여기서 public은 클래스의 접근 제한자를 나타내며, 클래스를 어디서나 접근할 수 있도록 설정합니다.
클래스에는 멤버 변수와 메서드가 포함됩니다.
멤버 변수는 클래스 내에서 사용되는 변수를 나타내며, 메서드는 클래스에서 사용되는 함수를 나타냅니다.
클래스를 사용하여 객체를 생성할 때에는 다음과 같이 작성합니다.
클래스이름 객체이름 = new 클래스이름();
여기서 객체이름은 생성된 객체의 이름을 나타냅니다.
객체를 생성한 후에는 해당 객체의 멤버 변수나 메서드에 접근할 수 있습니다.
접근제한자
public : 어디서나 접근 가능합니다.
protected : 같은 패키지나 상속 관계에서 접근 가능합니다.
default (package-private) : 같은 패키지에서만 접근 가능합니다. (접근 제한자를 명시하지 않은 경우 기본값으로 설정됩니다.)
private : 같은 클래스 내에서만 접근 가능합니다.
각각의 접근 제한자는 다음과 같이 사용됩니다.
public : 클래스, 멤버 변수, 메서드 모두에 적용될 수 있습니다. 다른 클래스에서 자유롭게 접근할 수 있는 경우에 사용됩니다.
protected : 멤버 변수와 메서드에 적용될 수 있습니다. 같은 패키지나 상속 관계에서 접근할 수 있도록 제한합니다.
default : 클래스, 멤버 변수, 메서드 모두에 적용될 수 있습니다. 같은 패키지에서만 접근할 수 있도록 제한합니다.
private : 멤버 변수와 메서드에 적용될 수 있습니다. 같은 클래스 내에서만 접근할 수 있도록 제한합니다.
Java 기초 문법을 사용한 예제 코드
// BasicSyntaxExample.java
package com.example;
// 클래스 선언
public class BasicSyntaxExample {
// main 메서드
public static void main(String[] args) {
// 변수 선언과 초기화
int x = 10;
int y = 20;
// if문
if (x > y) {
System.out.println("x is greater than y");
} else {
System.out.println("y is greater than x");
}
// for문
for (int i = 1; i <= 5; i++) {
System.out.println("i is " + i);
}
// while문
int i = 1;
while (i <= 5) {
System.out.println("i is " + i);
i++;
}
// switch문
int dayOfWeek = 3;
switch (dayOfWeek) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
default:
System.out.println("Invalid day");
}
// 메서드 호출
printMessage("Hello, world!");
}
// 메서드 정의
public static void printMessage(String message) {
System.out.println(message);
}
}
다양한 접근제한자를 사용한 예제 코드
// AccessModifierExample.java
package com.example;
// 클래스 선언
public class AccessModifierExample {
// public 접근 제한자를 가지는 멤버 변수
public int publicNumber = 10;
// protected 접근 제한자를 가지는 멤버 변수
protected int protectedNumber = 20;
// default 접근 제한자를 가지는 멤버 변수
int defaultNumber = 30;
// private 접근 제한자를 가지는 멤버 변수
private int privateNumber = 40;
// public 접근 제한자를 가지는 메서드
public void publicMethod() {
System.out.println("This is a public method.");
}
// protected 접근 제한자를 가지는 메서드
protected void protectedMethod() {
System.out.println("This is a protected method.");
}
// default 접근 제한자를 가지는 메서드
void defaultMethod() {
System.out.println("This is a default method.");
}
// private 접근 제한자를 가지는 메서드
private void privateMethod() {
System.out.println("This is a private method.");
}
}
static을 사용하는 이유
Java에서 static 키워드는 클래스 멤버 또는 메소드에 사용됩니다. static 멤버는 클래스의 모든 인스턴스에서 공유됩니다.
static 멤버는 클래스 레벨에서 존재하며, 객체를 생성하지 않고도 클래스 이름으로 직접 액세스할 수 있습니다. 이러한 이유로, static 멤버를 사용하는 이유 중 하나는 다른 클래스 또는 객체에서 해당 멤버에 접근하기 위해서입니다.
또한, static 메소드는 클래스의 인스턴스를 생성하지 않고도 호출할 수 있으며, 이는 코드를 더 간결하고 효율적으로 만들어줍니다. 또한 static 메소드는 클래스의 상태에 의존하지 않는 독립적인 기능을 수행하는 경우에 유용합니다.
또한, static 변수와 메소드는 클래스가 로드될 때 메모리에 할당되므로, 객체를 생성하지 않아도 사용할 수 있습니다. 이를 통해 메모리 사용을 줄일 수 있으며, 자주 사용되는 변수나 메소드의 경우 성능 향상을 기대할 수 있습니다.
따라서, static 멤버나 메소드는 클래스의 공유 상태를 유지하거나 독립적인 동작을 수행하는데 유용하며, 메모리 사용 및 성능 향상에도 도움이 됩니다.
final을 사용하는 이유
Java에서 final 키워드는 변수, 메소드, 클래스에 사용될 수 있습니다. 각각의 경우에 final을 사용하는 이유는 다음과 같습니다.
변수에 final을 사용하는 이유
final 변수는 한 번 초기화하면 값을 변경할 수 없습니다.
이를 통해, 값의 불변성을 보장할 수 있습니다.
예를 들어, 상수나 설정값을 나타내는 경우 final 변수를 사용하여 변경이 불가능하도록 하여, 코드의 안정성과 유지보수성을 높일 수 있습니다.
또한, final 변수는 선언시 초기화를 강제하기 때문에, 변수의 초기화를 누락하는 실수를 방지할 수 있습니다.
메소드에 final을 사용하는 이유
final 메소드는 오버라이딩을 금지합니다. 즉, 서브 클래스에서 해당 메소드를 재정의할 수 없습니다.
이를 통해, 메소드의 일관성과 안정성을 보장할 수 있습니다.
예를 들어, 부모 클래스에서 구현된 메소드가 서브 클래스에서 재정의될 경우, 예상하지 못한 동작이 발생할 수 있습니다.
이를 방지하기 위해, 부모 클래스에서 final 메소드를 사용하여 재정의를 금지할 수 있습니다.
클래스에 final을 사용하는 이유
final 클래스는 상속을 금지합니다. 즉, 다른 클래스에서 이 클래스를 상속받을 수 없습니다.
이를 통해, 클래스의 안정성과 일관성을 보장할 수 있습니다.
예를 들어, final 클래스는 수정이 불가능하기 때문에, 해당 클래스를 사용하는 코드가 안정적으로 동작할 것임을 보장할 수 있습니다.
또한, final 클래스는 설계 시 의도한 동작과 일관되도록 보장할 수 있습니다.
따라서, final 키워드는 값의 불변성과 코드의 안정성을 보장하는데 사용되며, 이를 통해 코드의 안정성과 일관성을 유지하는 데 도움을 줍니다.