자바 변수와 수식

자바 변수 유형

자바 변수 정의 : 타입 여기서 variableName [변수 이름 = 값 = 값

  • 로컬 변수 : 변수 방법

    지역 변수는 메소드 선언

    액세스 한정자는 지역 변수에 사용할 수 없습니다

    스택에 할당 된 지역 변수

    선언 후 디폴트가 있으므로,이 초기화되어야합니다 지역 변수

  • 변수의 예 : 독립 변수의 방법이 아닌 정적 변형
    인스턴스 변수는 클래스 체외 방법 선언

    오브젝트 멸망의 인스턴스 변수

    액세스 한정자 인스턴스 변수를 수정할 수

    비공개로 설정 인스턴스 변수, 당신은 액세스 한정자의 사용을 통해 서브 클래스의 인스턴스 변수를 볼 수 있습니다

    인스턴스 변수 직접 변수 명에 의해 액세스되지만 정적 메소드와 다른 클래스, 오브젝트 이름 인스턴스 변수 이름을 사용할 수있다

  • 클래스 변수 : 정적 변형을 이용하는 방법 이외의 다른 독립 변수

    클래스 변수는 메소드 본문 외부에 선언 된 정적 변수, 정적 키워드 문으로 알려져있다

    정적 변수 이외에 외부 거의 상수로 사용되지 선언 상수 변수를 의미는 공공 / 개인 + 최종 / 정적으로 선언

    정적 변수가 될 수 있습니다 ClassName.var 액세스

    클래스 객체의 생성 얼마나 많은 상관없이 클래스는 클래스 변수의 하나의 사본이

public class Variable{
    static int Class_var = 0;//类变量
    String instance_str = 'this is';//实例 变量
    public void method(){
        int i=0; //局部变量
    }
}
    //salary是静态的私有变量
    private static double salary;
    // DEPARTMENT是一个常量
    public static final String DEPARTMENT = "开发人员";

자바 수정

액세스 수정

수정 전면에 일반적으로 클래스, 메소드, 또는 변수를 정의하는 데 사용

  • 기본값 : 기본, 쓰기 아무것도 아니다, 우리는 같은 패키지 내에서 객체의 사용을 볼 수 클래스, 인터페이스, 변수, 메소드

    변수가 암시 적으로 공공에 대한 기본 액세스 권한의 경우 공공 정적 최종 인터페이스 메소드로 선언 된 인터페이스

    实例:
    String version = "1.5.1";
    boolean processOrder() {
       return true;
    }
  • 개인 : 같은 클래스 내에서 볼 수. 객체 사용 : 클래스 변수 인터페이스 방법을

    private 메소드로 선언, 변수는 소유 클래스, 클래스에 액세스 할 수 있으며, 인터페이스는 개인 선언 할 수 없습니다

    유일한 유형 클래스 공개 게터 방법의 변수를 통해 선언 된 개인 액세스는 클래스 외부에서 액세스 할 수 있습니다

    public class Logger {
       private String format;
       public String getFormat() {
          return this.format;
       }
       public void setFormat(String format) {
          this.format = format;
       }
    }
    //format为私有变量,可以通过共有的getFormat()和setFormat()进行操作
  • 공개 : 클래스, 인터페이스, 변수, 메소드 모든 클래스, 오브젝트의 사용을 볼

    공용 클래스, 변수, 메소드, 생성자, 인터페이스 선언된다 액세스 임의의 다른 유형이 될 수있다

    다양한 패키지에서 클래스는 가방에 도입 될 필요가

  • 보호 : 변수, 목적, 방법 : 오브젝트를 이용하여 통합 패키지 시야 내의 모든 클래스 및 서브 클래스에 대해. 클래스 (내부 클래스 제외) 수정할 수없는, 인터페이스는 수정 될 수 없다

    보호 필요성은 다음과 같은 두 가지 점에서 분석 할

    • 동일한 패키지베이스 클래스의 서브 클래스 : 변수는 보호 방법으로 선언되고, 다른 액세스 클래스를 동일한 패키지에 구성된
  • 기본 클래스의 서브 클래스는 같은 패키지에되지 않습니다 : 서브 클래스에서, 단어의 클래스 인스턴스, 그 보호 방법은 기본 클래스에서 상속 된 기본 클래스에 액세스 할 수 있습니다 및 보호 방법 인스턴스에 액세스 할 수 없습니다

액세스 수정 액세스

수정 현재의 클래스 (같은 패키지에서) 자손 클래스 동일 포에 (다른 패키지) 자손 클래스 기타 패키지
공공의
보호 Y / N
기본
사유의

질문 : 부모 클래스에 액세스 할 수있는 서브 클래스에 같은 패키지 변수에 액세스 할 수없는되지 않는다

비 액세스 한정자

  • 정적 개질제 : 클래스 변수 클래스 방식을 수정하기 위해 사용

    정적 변수 :

    정적 키워드는 객체, 클래스 인스턴스의 많은 개체가, 정적 변수, 자신의 하나의 복사본 만 아무리 독립적 정적 변수를 선언하는 데 사용되는 정적 변수는 또한 클래스 변수라고도

    정적 방법 :

    정적 키워드 정적 메소드 선언의 객체를 구분하는 데 사용된다. 정적 메서드는 비 정적 변수 클래스를 사용할 수 없습니다.

    액세스 방법 :

    액세스 클래스 변수 및 방법으로 사용될 수있는 클래스 / obj.variablename클래스 / obj.methodname 액세스 방법.

       private static int numInstances = 0;
       protected static int getCount() {
          return numInstances;
      }
  • 최종 수정

    최종 변수 :

    지정된 초기 값을 표시한다 인스턴스 변수의 최종 수정 클래스 상수와 함께 정적을 생성하여, 변경하지 않아야

      final int value = 10;
      // 下面是声明常量的实例
      public static final int BOXWIDTH = 6;
      static final String TITLE = "Manager";
    //final类的声明
      public final class Test {
       // 类体
    }

    마지막 방법 :

    마지막 방법은 부모 클래스 덮여 재기록 아니지만 될 수 있고, 주요 목적은 수정이 방법의 마지막 방법을 방지하기위한 것이다

    최종 종류 :

    최종 클래스는 서브 클래스에 의해 상속되지 않습니다

  • 추상적 수정

    추상 클래스입니다 :

    추상 클래스가 인스턴스화 개체를 사용할 수 없습니다, 추상 클래스의 유일한 목적은 클래스의 미래의 확장을위한 선언

    클래스 개요 및 최종 수정할 수없는 추상 클래스는 추상 클래스 꼭 같은 방법을 포함하는 경우

    추상 클래스는 추상적 인 방법과 비 추상 메소드를 포함 할 수있다

    abstract class Caravan{
       private double price;
       private String model;
       private String year;
       public abstract void goFast(); //抽象方法
       public abstract void changeColor();
    }

    추상 방법

    추상 메소드는 서브 클래스의 추상 메소드를 구현해야합니다, 그 방법은 아닙니다

    추상 클래스는 메소드는 추상 클래스로 추상 클래스해야합니다, 추상 메소드를 포함 할 수 없습니다

    추상 방법은 최종 정적으로 선언 할 수 없습니다

    서브 클래스가 추상 클래스도하지 않는 한 부모 클래스의 서브 클래스의 모든 메소드 모두, 추상 클래스가 구현해야하는 상속

    public abstract class SuperClass{
        abstract void m(); //抽象方法
    }
    
    class SubClass extends SuperClass{
         //实现抽象方法
          void m(){
              .........
          }
    }

    동기화 수정

    하나의 스레드 만 액세스 할 수있는 동일한 시간을 선언하는 동기화 된 키워드의 방법은, 그것은 네 개의 액세스 한정자 사용할 수 있습니다

    public synchronized void showDetails(){
    .......
    }

    과도 수정

    개질 과도 인스턴스 변수를 포함 객체를 직렬화하는 경우, 자바 가상 머신은 변수를 건너 뛸

    개질제는 전처리 및 클래스 변수의 정의 명세서 변수의 데이터 타입에 포함

public transient int limit = 55;   // 不会持久化
public int b; // 持久化

휘발성 수정

멤버 변수 변경, 스레드가 공유 메모리에 다시 기록 값을 변경해야하는 경우가 스레드에 액세스 할 때마다이 강요 휘발성 변형 멤버 변수, 공유 메모리로부터 멤버 변수의 값을 다시 읽고, 그래서 어떤 시점에서, 두 개의 다른 스레드는 항상 멤버 변수의 동일한 값을 볼 수있다

public class MyRunnable implements Runnable
{
    private volatile boolean active;
    public void run()
    {
        active = true;
        while (active) // 第一行
        {
            // 代码
        }
    }
    public void stop()
    {
        active = false; // 第二行
    }
}

정상적인 상황에서, 스레드는 다른 스레드 호출 정지 () 메서드 (오픈 실행 가능한 스레드) 실행 () 메소드를 호출합니다. 버퍼 값의 제 액티브 라인이 사용되는 경우 제 2 활성 선이 거짓 인 경우, 사이클을 정지

추천

출처www.cnblogs.com/Mr-l/p/11870622.html