Javase | Java 프로그램의 키워드, 메소드, 로딩 및 실행 원리

키워드

  1. abstract: 추상 클래스나 추상 메서드를 정의하는 데 사용됩니다.
  2. boolean: 부울 유형 변수 또는 메소드 반환 값을 선언하는 데 사용됩니다.
  3. break: 루프 또는 스위치 문을 중단하는 데 사용됩니다.
  4. byte: 바이트 변수를 선언하는 데 사용됩니다.
  5. case: switch 문의 선택 분기에 사용됩니다.
  6. catch: try 블록에서 발생한 예외를 처리하는 데 사용됩니다.
  7. char: 문자변수를 선언하는데 사용됩니다.
  8. class: 클래스를 정의하는 데 사용됩니다.
  9. const: 상수를 선언하는 데 사용됩니다.
  10. continue: 현재 루프 반복을 종료하고 다음 반복을 시작하는 데 사용됩니다.
  11. default: switch 문의 기본 분기에 사용됩니다.
  12. do: do-while 루프를 형성하는 데 사용됩니다.
  13. double: 배정밀도 부동 소수점 변수를 선언하는 데 사용됩니다.
  14. else: if 문의 조건 분기에 사용됩니다.
  15. extends: 클래스의 상속관계를 표현하는데 사용됩니다.
  16. final: 상수나 메서드를 궁극적으로 수정할 수 없도록 선언하는 데 사용됩니다.
  17. finally: try-catch-finally 구조에 정의된 예외 처리 코드 블록에 사용됩니다.
  18. float: 단정밀도 부동 소수점 변수를 선언하는 데 사용됩니다.
  19. for: for 루프를 형성하는 데 사용됩니다.
  20. if: 조건부 판단문에 사용됩니다.
  21. implements: 클래스가 인터페이스를 구현함을 나타내는 데 사용됩니다.
  22. import: 패키지나 클래스를 가져오는 데 사용됩니다.
  23. instanceof: 객체가 특정 클래스의 인스턴스인지 여부를 확인하는 데 사용됩니다.
  24. int: 정수형 변수를 선언하는데 사용됩니다.
  25. interface: 인터페이스를 정의하는 데 사용됩니다.
  26. long: 긴 정수 변수를 선언하는 데 사용됩니다.
  27. new: 객체나 배열을 만드는 데 사용됩니다.
  28. package: 패키지를 정의하는 데 사용됩니다.
  29. private: 비공개 접근 권한을 나타내는 데 사용됩니다.
  30. protected: 보호된 액세스를 나타내는 데 사용됩니다.
  31. public: 공개 액세스 권한을 나타내는 데 사용됩니다.
  32. return: 메서드에서 값을 반환하는 데 사용됩니다.
  33. short: 짧은 정수 변수를 선언하는 데 사용됩니다.
  34. static: 정적 멤버 변수 또는 정적 메서드를 나타내는 데 사용됩니다.
  35. super: 상위 클래스 객체에 대한 참조를 나타내는 데 사용됩니다.
  36. switch: 스위치 문을 구성하는 데 사용됩니다.
  37. synchronized: 스레드 동기화를 나타내는 데 사용됩니다.
  38. this: 현재 객체 참조를 나타내는 데 사용됩니다.
  39. throw: 예외를 발생시키는 데 사용됩니다.
  40. throws: 메서드가 throw할 수 있는 예외 유형을 선언하는 데 사용됩니다.
  41. transient: 특정 클래스의 멤버 변수를 표시하는 데 사용되며, 이 멤버 변수는 개체에 의해 직렬화될 수 없음을 나타냅니다.
    비영구적 개체 속성, 즉 개체가 직렬화될 때 저장할 필요가 없는 속성을 나타내는 데 사용됩니다.
  42. try: 예외 처리 코드 블록을 정의하는 데 사용됩니다.
  43. void: 반환 값 없이 메서드 유형을 나타내는 데 사용됩니다.
  44. volatile: 변수의 가시성을 나타내는 데 사용됩니다. 즉, 변수에 대한 다중 스레드 작업의 일관성을 보장하는 데 사용됩니다.
  45. while: while 루프를 형성하는 데 사용됩니다.
  46. native: 메소드가 Java가 아닌 다른 언어(예: C 또는 C++)로 구현되었음을 나타냅니다. 기본 키워드로 수정된 메소드에는 메소드 본문이 없으며, 메소드가 외부에서 정의되었으며 JNI(Java Native Interface)를 사용하여 구현되어야 함을 JVM에 알립니다.

방법:

기본 문법

访问修饰符 返回类型 方法名(参数列表) {
    // 方法体
}
  • 액세스 한정자: 메소드의 액세스 권한을 지정하는 데 사용됩니다. 일반적으로 사용되는 액세스 한정자는 public, private, protected 및 default(접근 한정자를 쓰지 않음)입니다.
  • 반환 유형: 메서드에서 반환한 데이터 유형입니다. 메서드가 데이터를 반환하지 않으면 반환 유형은 void입니다.
  • 메소드 이름: 메소드의 이름입니다.
  • 매개변수 목록: 매개변수의 유형 , 순서개수를 포함하여 메소드에 전달된 매개변수 목록입니다 . 매개변수는 선택사항이며 메소드에는 매개변수가 포함될 수 없습니다.
  • 메소드 본문: 메소드의 동작과 기능을 정의합니다.

정적 방법

static 키워드를 사용하여 정의된 메서드는 정적 메서드입니다. 정적 메소드는 객체를 인스턴스화하지 않고 클래스명.메소드명()을 통해 직접 호출할 수 있으며 일반적으로 일반 작업 및 공유 리소스 작업을 가리키는 데 사용됩니다.


인스턴스 메소드

기본적으로 Java의 대부분의 메소드는 인스턴스 메소드입니다. 메소드는 객체 인스턴스화를 통해 호출되어야 합니다.


공법

객체를 생성하고 초기화하는 특별한 방법입니다. 생성자의 메소드 이름은 클래스 이름과 동일해야 합니다. 클래스는 여러 생성자를 가질 수 있으며 각 생성자는 서로 다른 매개변수 목록을 갖습니다.


메소드 정의/호출

Java의 메소드 정의 예:

public class MethodExample {
    
    
    
    //静态方法-----在类被加载时就被调用
    // 定义一个带有两个整型参数和一个返回值的方法
    public static int addNums(int num1, int num2) {
    
    
        int sum = num1 + num2;
        return sum;
    }
    
    //静态方法
    // 定义一个带有两个字符串参数和返回值的方法
    public static String concatenateStrings(String str1, String str2) {
    
     
        String result = str1 + str2;
        return result;
    }
    
    //实例方法-----必须通过对象实例来调用
    // 定义一个带有两个浮点型参数和返回值的方法
    public double calculateAverage(double num1, double num2) {
    
    
        double average = (num1 + num2) / 2;
        return average;
    }
    
    //实例方法
    // 定义一个没有参数和返回值的方法
    public void printInfo() {
    
    
        System.out.println("Hello, World!");
    }
    
    //构造反复噶
    // 定义一个带有参数的构造函数
    public MethodExample(String message) {
    
    
        System.out.println(message);
    }
    
    
    //方法的调用:   
    public static void main(String[] args) {
    
    
       //调用静态方法: 类名.方法名
        int i = MethodExample.addNums(1,1);
        
       //调用实例方法: 实例化对象,后调用方法
        MethodExample me =new MethodExample();
        me.printInfo();        
    }
}

메소드 오버라이딩/메소드 오버라이딩

  • 메서드 재정의(Override): "메서드 재정의"라고도 하며, 부모 클래스에 이미 존재하는 메서드를 하위 클래스에서 재정의하는 것을 말합니다. 하위 클래스는 필요에 따라 상위 클래스 메서드의 동작을 변경할 수 있습니다.
  • 메서드 재정의의 정의는 다음 조건을 충족해야 합니다.
    • 메서드 이름, 매개변수 목록 및 반환 유형은 상위 클래스의 재정의된 메서드와 정확히 동일해야 합니다.
    • 재정의된 메서드는 재정의된 메서드보다 더 제한적인 액세스 권한을 가질 수 없습니다.
    • 재정의된 메서드는 재정의된 메서드보다 더 적거나 더 넓은 예외를 발생시킬 수 있지만 새롭거나 더 엄격한 확인된 예외를 발생시킬 수는 없습니다.
    • @Override 주석을 사용하면 상위 클래스 메서드가 올바르게 재정의되었는지 확인하는 데 도움이 될 수 있습니다.
  • Java의 메소드 재정의 예:
 //父类
public class Animal {
    
     
    
    public void sing() {
    
      //这个父类的方法可以被子类重写: 更改方法体内容
        System.out.println("动物会唱歌");
    }
    
    public void eat() {
    
    
        System.out.println("动物会觅食");
    }
}

 //子类继承父类
public class Dog extends Animal {
    
     
    
    @Override
    public void sing() {
    
     //重写了父类的sing()方法
        System.out.println("狗会唱歌");
    }
    
    public void eat() {
    
    
        System.out.println("狗会吃饭");
    }
}

//main()方法
public class Main {
    
    
    public static void main(String[] args) {
    
    
        Animal animal = new Animal();
        animal.sing(); // 输出 "动物会唱歌"
        animal.eat(); // 输出 "动物会觅食"
        
        Dog dog = new Dog();
        dog.sing(); // 输出 "狗会唱歌"
        dog.eat(); // 输出 "狗会吃饭"
    }
}

메소드 오버로딩

  • 메소드 오버로딩(Overloading)은 동일한 클래스에서 메소드 이름은 동일하지만 매개변수 목록이 다른 여러 메소드를 정의할 수 있음을 의미합니다.

  • 매개변수 수 또는 매개변수 유형이 다르기 때문에 매개변수 목록이 다를 수 있습니다.

  • 메서드 오버로딩의 정의는 다음 조건을 충족해야 합니다.

    • 메소드 이름은 동일해야 합니다.
    • 매개변수 목록은 매개변수 수 또는 매개변수 유형을 포함하여 달라야 합니다.
    • 메소드의 반환 유형은 동일할 수도 있고 다를 수도 있습니다.
  • 알아채다:

    • 메소드 이름과 매개변수 목록이 다른 메소드는 오버로딩을 구성하지 않습니다.
    • 메소드 오버로딩을 사용하면 프로그램을 더욱 유연하게 만들고 다양한 요구에 적응할 수 있습니다. 예를 들어 수학적 계산에서는 이름은 같지만 매개 변수가 다른 여러 메서드를 정의하여 더하기, 빼기, 곱하기, 나누기와 같은 연산을 수행할 수 있습니다.

Java의 메소드 오버로딩 예:

public class Calculator {
    
    
    
    //一个add()方法
    public int add(int a, int b) {
    
     
        return a + b;
    }
    
    //又是一个add()方法
    //这两个方法有相同的方法名,但是参数列表不同,因此它们在类中是重载的.
    public double add(double a, double b) {
    
    
        return a + b;
    }
}

public class Main {
    
    
    public static void main(String[] args) {
    
    
        Calculator calculator = new Calculator();
        //分别调用两个不同的add()方法
        int result1 = calculator.add(10, 20);
        double result2 = calculator.add(10.5, 20.5);
        
        System.out.println(result1); // 输出 30
        System.out.println(result2); // 输出 31.0
    }
}

Java 프로그램의 로딩 및 실행 원리:

Java 프로그램에는 매우 중요한 두 단계(컴파일 단계와 실행 단계)가 있습니다.

컴파일 단계

  • 1단계: Java 프로그래머는 Java 구문을 준수하는 소스 코드(.java)를 작성합니다.

  • 2단계: 컴파일러를 사용하여 소스 코드를 바이트코드 파일(.class)로 컴파일합니다.

  • 참고:
    ① 작성된 소스 코드가 문법 규칙을 준수하면 컴파일이 통과되고 .class 파일이 생성되며, 그렇지 않으면 오류가 보고됩니다.
    ②소스 코드는 여러 개의 바이트코드 파일을 생성할 수 있습니다.

    ③컴파일은 실제로 구문을 확인합니다.


실행 단계

  • 3단계: 바이트코드 파일을 JVM에 로드합니다 . (JVM은 클래스 로더를 사용하여 바이트코드 파일을 JVM 에 로드합니다 .)
  • 4단계: JJVM은 바이트코드 파일을 해석합니다(인터프리터는 바이트코드를 로컬 기계어 코드로 해석하는 역할을 담당합니다).
  • 5단계: JVM은 로컬 기계어 코드를 운영 체제에 넘겨주고, 운영 체제는 바이너리 코드를 실행하여 하드웨어와 상호 작용합니다.
  • 참고:
    JRE는 실행 단계에서 작동합니다.

여기에 이미지 설명을 삽입하세요.

추천

출처blog.csdn.net/m0_70720417/article/details/132141793