美文网首页Java
错误: 无法从静态上下文中引用非静态方法

错误: 无法从静态上下文中引用非静态方法

作者: 张沥 | 来源:发表于2019-04-08 14:33 被阅读0次

    静态方法中不能引用非静态变量
    静态方法中不能引用非静态变量
    静态方法中不能引用非静态变量

    静态方法可以通过所在类直接调用而不需要实例化对象,非静态成员变量则是一个对象的属性。它只有在有实例化对象时才存在的,所以在静态方法中是不可以调用静态变量。如果发生调用,则编译器会报出如上的错误。

    例如:

      1 public class Solution {
      2     public static void main(String[] arvgs){
      3         System.out.println("请输入股票价格");
      4         int[] profit = {1, 2, 3, 4, 5, 6};
      5       
      6         maxProfit(profit, 5); // 报错
      7         
      8     }
      9     public int maxProfit(int prices[], int day){
     10         int maxprofit = 0;
     11         for (int i = 0; i < day - 1; i++){
     12             for (int j = i + 1; j < day; j++) {
     13                 int profit = prices[j] - prices[i];
     14                 if (profit > maxprofit)  
     15                     maxprofit = profit;
     16             }       
     17         }   
     18         return maxprofit;
     19     }   
     20 }   
    ~                                      
    

    由于main方法其实是一个静态方法,而maxProfit方法并没有实例化,所以会报错 错误: 无法从静态上下文中引用非静态 变量 this

    修改方法:

      1 public class Solution {
      2     public static void main(String[] arvgs){
      3         System.out.println("请输入股票价格");
      4         int[] profit = {1, 2, 3, 4, 5, 6};
      5         Solution solution = new Solution();
      6         solution.maxProfit(profit, 5);
      7         
      8     }
      9     public int maxProfit(int prices[], int day){
     10         int maxprofit = 0;
     11         for (int i = 0; i < day - 1; i++){
     12             for (int j = i + 1; j < day; j++) {
     13                 int profit = prices[j] - prices[i];
     14                 if (profit > maxprofit)  
     15                     maxprofit = profit;
     16             }       
     17         }   
     18         return maxprofit;
     19     }   
     20 }   
    ~                                      
    

    只需要实例化调用的静态变量所属对象即可。

    相关文章

      网友评论

        本文标题:错误: 无法从静态上下文中引用非静态方法

        本文链接:https://www.haomeiwen.com/subject/tbkdsttx.html