자바 변수 유형
자바 변수 정의 : 타입 여기서 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 활성 선이 거짓 인 경우, 사이클을 정지