[Java]

TomCat·2023년 3월 15일
0

변수

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문: 조건에 따라 실행 여부를 결정하는 조건문

if (조건식) {
    // 조건식이 참일 경우 실행되는 코드
} else {
    // 조건식이 거짓일 경우 실행되는 코드
}

switch문: 여러 가지 조건에 따라 실행 여부를 결정하는 조건문

switch (변수) {
    case 값1:
        // 변수의 값이 값1일 경우 실행되는 코드
        break;
    case 값2:
        // 변수의 값이 값2일 경우 실행되는 코드
        break;
    default:
        // 변수의 값이 어떤 case에도 해당하지 않을 경우 실행되는 코드
        break;
}

for문: 지정한 횟수만큼 반복하는 반복문

for (초기식; 조건식; 증감식) {
    // 조건식이 참일 동안 실행되는 코드

while문: 조건식이 참일 동안 반복하는 반복문

while (조건식) {
    // 조건식이 참일 동안 실행되는 코드
}

do-while문: 일단 한 번 실행하고 조건식이 참일 경우 반복하는 반복문

do {
    // 일단 한 번 실행되는 코드
} while (조건식);

for-each문: 배열이나 컬렉션을 순회하는 반복문

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 키워드는 값의 불변성과 코드의 안정성을 보장하는데 사용되며, 이를 통해 코드의 안정성과 일관성을 유지하는 데 도움을 줍니다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN