ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Static Variables and Methods
    Java 2022. 2. 9. 14:16

    자바의 Static한 변수와 메소드에 대해 정리하였습니다.

     

     


    < Static Methods >

    Static methods are methods that belong to an entire class, not a specific object of the class. Static methods are called using the class name and the . operator.

     

    Example)

    double randomNumber = Math.random();
    // Stores a random decimal between 0.0 and 1.0 in randomNumber
     
    double number = Double.valueOf("2.5");
    // Transforms the String "2.5" into a double

    : We didn’t need to create a object in order to use that method.

     

     


    < Static Variables >

    Much like static methods, you can think of static variables as belonging to the class itself instead of belonging to a particular object of the class.

    Just like with static methods, we can access static variables by using the name of the class and the . operator. 

     

    • Unlike static methods, you can still access static variables from a specific object of the class. However, no matter what object you use to access the variable, the value will always be the same.

     

    Example)

    public class Dog{
      // Static variables
      public static String genus = "Canis";
     
      //Instance variables
      public int age;
      public String name;
     
      public Dog(int inputAge, String inputName){
        this.age = inputAge;
        this.name = inputName;
      }
      
      public static void main(String[] args){
        System.out.println(Dog.genus); // Prints Canis
      }
    }
    
    // always same!
    public static void main(String[] args){
      Dog snoopy = new Dog(3, "Snoopy");
      Dog ringo = new Dog(5, "Ringo");
     
      System.out.println(Dog.genus); // Prints Canis
      System.out.println(snoopy.genus); // Prints Canis
      System.out.println(ringo.genus); // Prints Canis
    }

     

     


    < Modifying Static Variables >

    Often times, you’ll see static variables used to keep track of information about all objects of a class.

     

    Example : our variable numATMs is keeping track of the total number of ATMs in the system. Similarly, totalMoney variable is keeping track of all money across all ATMs.

    public class ATM{
      // Static variables
      public static int totalMoney = 0;
      public static int numATMs = 0;
    
      // Instance variables
      public int money;
    
      public ATM(int inputMoney){
        this.money = inputMoney;
        numATMs += 1;
        totalMoney += inputMoney;
      }
    
      public void withdrawMoney(int amountToWithdraw){
        if(amountToWithdraw <= this.money){
          this.money -= amountToWithdraw;
          totalMoney -= amountToWithdraw;
        }
      }
    
      public static void main(String[] args){
        System.out.println("Total number of ATMs: " + ATM.numATMs); 
        ATM firstATM = new ATM(1000);
        ATM secondATM = new ATM(500);
        System.out.println("Total number of ATMs: " + ATM.numATMs); 
    
        System.out.println("Total amount of money in all ATMs: " + ATM.totalMoney);  
        firstATM.withdrawMoney(500);
        secondATM.withdrawMoney(200);
        System.out.println("Total amount of money in all ATMs: " + ATM.totalMoney);    
      }
    }
    
    // Total number of ATMs: 0
    // Total number of ATMs: 2
    // Total amount of money in all ATMs: 1500
    // Total amount of money in all ATMs: 800

     

     


    < Writing Your Own Static Methods >

    One important rule to note is that static methods can’t interact with non-static instance variables.
    This is due to static methods not having a this reference.

     

    To wrap your mind around this, consider why we use this when working with non-static instance variables.
    Let’s say we have a Dog class with a non-static instance variable named age. If we have a line of code like this.age = 5; that means we’re setting the age of a specific Dog equal to 5. However, if age were static, that would mean that the variable belongs to the entire class, not a specific object.


    The this keyword can’t be used by a static method since static methods are associated with an entire class, not a specific object of that class. If you try to mix this with a static method, you’ll see the error message non-static variable this cannot be referenced from a static context.

     

     

     

     

    'Java' 카테고리의 다른 글

    Debugging  (0) 2022.02.10
    Inheritance and Polymorphism  (0) 2022.02.09
    Math Methods  (0) 2022.02.08
    Access, Encapsulation, and Scope  (0) 2022.02.08
    String Methods  (0) 2022.02.07

    댓글

Designed by Tistory.