>  기사  >  Java  >  Java의 정적 수정 속성 분석(코드 예)

Java의 정적 수정 속성 분석(코드 예)

不言
不言앞으로
2018-11-16 15:51:542361검색

이 기사의 내용은 Java의 정적 수정 속성 분석(코드 예제)에 대한 내용입니다. 필요한 친구가 참고할 수 있기를 바랍니다.

static 키워드인데, 우리는 아직도 개발 중에 이 키워드를 꽤 많이 사용하고 있습니다. "Java 프로그래밍 생각"에 다음과 같은 구절이 있습니다.

static 메소드는 이것이 없는 메소드입니다. 비정적 메서드는 정적 메서드 내에서 호출할 수 없지만 그 반대의 경우도 가능합니다. 그리고 객체를 생성하지 않고 클래스 자체를 통해서만 정적 메서드를 호출할 수 있습니다. 이것이 실제로 정적 메서드의 주요 목적입니다.

static은 정적 변수, 정적 멤버, 정적 함수 등 널리 사용됩니다. 단일 열 모드를 사용할 때 사용합니다. 그리고 정적 데이터 멤버는 정적 저장 영역에 저장되며 한 번만 저장되므로 메모리를 절약할 수 있습니다.

정적 선언 속성

정적 멤버 변수 수정

클래스에서 필요할 때# 🎜🎜# , 이 속성이 모든 클래스에 공통적으로 필요하고 이 속성의 값이 동일해야 하는 것과 같습니다. 定义一个属性为公共的属性

Test.java

class Book{
    
    // 设置一个默认的值
    static String pub = "清华大学出版社";
    
    // 用来和 static 作为对比
    String description = "描述";
    
    // Book 类正常的属性
    private String title;
    private double price;
    
    // Book 的构造类
    public Book(String title, double price) {
        this.title = title;
        this.price = price;
    }
    
    // 获取 Book 的信息
    public void getInfo(){
        System.out.println("图书名称:"+ this.title + ",价格为:"+ this.price + ",出版社为:"+ this.pub + ",描述 "+ this.description);
    }
}

public class Test {

    public static void main(String[] args) {
        // 实例化三个Book类
        Book book1 = new Book("Android开发实战", 69.8);
        Book book2 = new Book("Java EE开发实战", 49.8);
        Book book3 = new Book("Java 开发教程", 79.8);
        
        // 在没有设置 pub 属性的情况下输出
        book1.getInfo();
        book2.getInfo();
        book3.getInfo();
        
        System.out.println("————————————————————无敌分割线————————————————————");
        
        // 我们给 book1 设置一个 pub 属性
        book1.pub = "中信出版社";
        book1.description = "这本书很牛逼,看了你就知道";
        
        book1.getInfo();
        book2.getInfo();
        book3.getInfo();
    }
}

콘솔 출력

图书名称:Android开发实战,价格为:69.8,出版社为:清华大学出版社,描述 描述
图书名称:Java EE开发实战,价格为:49.8,出版社为:清华大学出版社,描述 描述
图书名称:Java 开发教程,价格为:79.8,出版社为:清华大学出版社,描述 描述
————————————————————无敌分割线————————————————————
图书名称:Android开发实战,价格为:69.8,出版社为:中信出版社,描述 这本书很牛逼,看了你就知道
图书名称:Java EE开发实战,价格为:49.8,出版社为:中信出版社,描述 描述
图书名称:Java 开发教程,价格为:79.8,出版社为:中信出版社,描述 描述
From Control You 스테이션의 출력 결과를 볼 수 있습니다:

  • 속성에 기본값을 할당하면 위 예에서는 (설명 및 pub) 출력 결과가 됩니다. 둘 다 기본값입니다.

  • 클래스의 static 키워드로 선언된 속성을 수정할 때 한 번만 수정하면 다른 모든 개체의 이 속성도 수정됩니다.

클래스를 통해 정적으로 선언된 속성 호출

하지만 위 코드를 기반으로 우리는 그것이 클래스 객체 중 하나라면 모든 것이 물체의 속성이 바뀌는데, 이렇게 조작하면 특히 기분 좋지 않나요? 그러면 Java에서는 static을 사용하여 속성 값을 선언하면 클래스를 통해 직접 호출할 수 있습니다.

public class Test {

    public static void main(String[] args) {
        // 实例化三个Book类
        Book book1 = new Book("Android开发实战", 69.8);
        Book book2 = new Book("Java EE开发实战", 49.8);
        Book book3 = new Book("Java 开发教程", 79.8);
        
        // 在没有设置 pub 属性的情况下输出
        book1.getInfo();
        book2.getInfo();
        book3.getInfo();
        
        System.out.println("————————————————————无敌分割线————————————————————");
        
        // 我们使用 Book 类直接调用pub
        Book.pub = "中信出版社";
        
        book1.description = "这本书很牛逼,看了你就知道";
        
        book1.getInfo();
        book2.getInfo();
        book3.getInfo();
    }
}
클래스가 인스턴스화되지 않은 경우 정적 속성은

Test.java

class Book{
    
    // 设置一个默认的值
    static String pub = "清华大学出版社";
    
    // 用来和 static 作为对比
    String description = "描述";
    
    // Book 类正常的属性
    private String title;
    private double price;
    
    // Book 的构造类
    public Book(String title, double price) {
        this.title = title;
        this.price = price;
    }
    
    // 获取 Book 的信息
    public void getInfo(){
        System.out.println("图书名称:"+ this.title + ",价格为:"+ this.price + ",出版社为:"+ this.pub + ",描述 "+ this.description);
    }
}

public class Test {

    public static void main(String[] args) {
        // 在没有实例化对象时,就调用
        System.out.println(Book.pub);
        
        // 没事实例化对象的时候,去给static属性赋值上默认值
        Book.pub = "北京大学出版社";
        System.out.println(Book.pub);
        
        // 新建一个类,输入 pub 属性
        Book book = new Book("Java", 88);
        book.getInfo();
    }
}
# 🎜🎜# 콘솔 출력

清华大学出版社
北京大学出版社
图书名称:Java,价格为:88.0,出版社为:北京大学出版社,描述 描述
이를 통해 객체가 인스턴스화되지 않은 경우 클래스를 통해 정적 속성을 직접 제거할 수 있으며 정적 속성도 제거할 수 있음을 알 수 있습니다. 수정되었습니다. 정적 속성 선언은 클래스 구조에 있지만 개체에 의해 제어되지 않고 독립적으로 존재합니다.

정적 속성과 비정적 속성의 차이점

    정적 선언 속성과 일반 속성(비정적 속성)의 가장 큰 차이점 저장된 메모리 영역이 다릅니다. 정적에 의해 수정되는 것은 정적 데이터 영역에 있습니다. 힙과 스택 대신.
  • 정적 속성과 비정적 속성의 가장 큰 차이점은 모든 비정적 속성은 액세스하기 전에 인스턴스화해야 한다는 것입니다. 그러나 정적 속성은 다음의 영향을 받지 않습니다. 인스턴스를 제어합니다. 즉, 개체를 인스턴스화하지 않고도 정적 개체를 계속 사용할 수 있습니다.

위 내용은 Java의 정적 수정 속성 분석(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제