JAVA学习【2】错误:无法从静态上下文中引用非静态
来源:互联网 发布:手机淘宝5.8.0 编辑:程序博客网 时间:2024/05/20 10:21
编程时遇到“错误:无法从静态上下文中引用非静态”。
输出10到20的数字,程序如下:
public class MyCode1{int count=10;public static void main(String args[]){while(count<=20){System.out.println(count);count++;}}}
编译报错:
E:\CS码农知识学习\mycode\MyCode1.java:5: 错误: 无法从静态上下文中引用非静态 变量 countwhile(count<=20){ ^E:\CS码农知识学习\mycode\MyCode1.java:6: 错误: 无法从静态上下文中引用非静态 变量 countSystem.out.println(count); ^E:\CS码农知识学习\mycode\MyCode1.java:7: 错误: 无法从静态上下文中引用非静态 变量 countcount++;^3 个错误
分析:
main函数是静态函数,在runoob.com上查看修饰符static含义,如下
Static修饰符
静态变量:
Static关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。 静态变量也被成为类变量。局部变量能被声明为static变量。
静态方法:
Static关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数据。
对类变量和方法的访问可以直接使用classname.variablename和classname.methodname的方式访问。
静态方法不能使用类的非静态变量,因为静态方法在程序一开始就可以直接通过类调用,不需要对象实例化就可以访问。
而程序中count是一个实例变量。
实例变量
- 实例变量声明在一个类中,但在方法、构造方法和语句块之外;
- 当一个对象被实例化之后,每个实例变量的值就跟着确定;
- 实例变量在对象创建的时候创建,在对象被销毁的时候销毁;
- 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
- 实例变量可以声明在使用前或者使用后;
- 访问修饰符可以修饰实例变量;
- 实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;
- 实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
- 实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。
由上可知,实例变量count在对象创建时才会创建,而程序中,并未创建对象。
针对以上问题
方法1、将count放到main函数中
public class MyCode1{public static void main(String args[]){int count=10;while(count<=20){System.out.println(count);count++;}}}
方法2、创建对象,调用对象的实例变量
public class MyCode1{int count=10;public static void main(String args[]){MyCode1 code1 = new MyCode1();while(code1.count<=20){System.out.println(code1.count);code1.count++;}}}
方法3、将count更改成静态变量
public class MyCode1{static int count=10;public static void main(String args[]){while(count<=20){System.out.println(count);count++;}}}
1 0
- JAVA学习【2】错误:无法从静态上下文中引用非静态
- JAVA学习【2】错误:无法从静态上下文中引用非静态(转载)
- “无法从静态上下文中引用非静态”
- 无法从静态上下文中引用非静态变量
- 无法从静态上下文中引用非静态 变量 this
- 无法从静态上下文中引用非静态方法
- 无法从静态上下文中引用非静态方法
- 无法从静态上下文中引用非静态 变量 this
- 错误: 无法从静态上下文中引用非静态 变量 this
- java编译时出现无法从静态上下文中引用非静态
- 无法从静态上下文中引用非静态变量,非静态方法
- 静态方法:无法在静态上下文中引用非静态
- 静态方法:无法在静态上下文中引用非静态
- 初学java:“错误:无法从静态上下文中引用非静态”(在调用类中的类时出现的错误)
- 由“无法从静态上下文中引用非静态方法”引出的疑问
- “无法从静态上下文中引用非静态方法”这个问题怎么解决
- Java静态方法:无法从静态上下文中引入非静态方法
- 静态引用非静态出错
- LA 2531 The K-league 最大流
- FFT之大数乘法
- 最短路 spfa, dijkstra, Floyd
- Android布局详解之一:FrameLayout
- K短路 spfa + A*
- JAVA学习【2】错误:无法从静态上下文中引用非静态
- 线段树模板
- 字符串处理之后缀数组
- c#调用Win32 API如何处理指针类型的参数
- AC自动机 hdu2222
- 最小费用最大流
- vim 使用查找替换正则表达式
- 数论基础
- android studio导jar包找不到类的解决方法