Toggle Theme Editor
Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Charcoal

Stack Và Heap Trong Java

Discussion in 'Xây dựng các ứng dụng Java khác, các vấn đề khác' started by Meliodas0801, 11/4/18.

  1. Meliodas0801

    Meliodas0801 New Member

    PHP:
    class hello {
        
    int a;
        
    float b;
        
    char c;
        
    String d;
     
        public 
    void chao() {
            
    System.out.println("hello");
        }
     
        public static 
    void okay() {
     
        }
    }

    public class 
    main {
        public static 
    void main(String[] args) {
            
    //hello a = new hello();
            
    hello.okay(); //chạy đc ????
        
    }
    }
    cho mình hỏi là khi tạo 1 class chỉ tạo 1 class thôi ko làm gì với nó hết thì nó đc lưu ở stack hay heap ? ban đầu mình nghĩ nó như struct là định nghĩa 1 kiểu dữ liệu mới nó ko lưu ở đâu hết và với class mình cũng nghĩ tương tự như vậy nhưng sau khi mình gọi phương thức nó chạy thử thì lại đc nên rất khó hiểu ở chỗ này ? lên mạng đọc thì đa phần là ko đề cập gì đến vấn đề này chỉ là nói nhiều về việc new 1 class
     
    Last edited: 11/4/18
  2. D.A.N_3002

    D.A.N_3002 Active Member

    Mục đích bạn đăng cái này là j =_=
     
  3. Meliodas0801

    Meliodas0801 New Member

    à mình đang sữa lại câu hỏi
     
  4. D.A.N_3002

    D.A.N_3002 Active Member

    Mình nghĩ là nó sẽ ở Stack, vì khi dùng lệnh
    PHP:
    hello.okay();
    Thì class hello lúc này chỉ là 1 biến local
     
  5. Meliodas0801

    Meliodas0801 New Member

     
  6. D.A.N_3002

    D.A.N_3002 Active Member

    Đúng là trong trường hợp bạn đưa ra thì OS sẽ ko cung cấp bộ nhớ, vì nó khôn có giá trị nào để lưu lại cả :) Tuy nhiên, ở trong trường hợp này
    PHP:
    class Demo
    {
        public static  
    void Show()
        {
            
    String str "CongDongJava.vn";
            
    System.out.println(str);
        }
        
    }

    public class 
    Main
    {
        public static 
    void main(String[] args)
        {
            
    Demo.Show();
        }
    }
    Thì Ouput sẽ như sau :
    [​IMG]
    Vì ở void Show() tạo ra 1 String str = "CongDongJava.vn", vậy nên OS phải cung cấp bộ nhớ cho nó.
    => Dc lưu ở Stack
     
    Meliodas0801 likes this.

Chia sẻ trang này

Loading...