Javaj基础知识runtime error
2024-10-19 15:34:00
遇到的java 运行时错误:
NullPointerException空指针 ,简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话)
遇到一个错误:
No enclosing instance of type Employee is accessible
在StacticBlock.java中定义了Employee 类和 Manager类。
class Employee{
public Employee (String aName,double aSalary){
name= aName;
salary=aSalary;
}
...
} class Manager extends Employee{ public Manager(String aname,double asalary)
{
super(aname,asalary);
this.bonus =0;
}
...
}
在另外一个Emp.java中报错:No enclosing instance of type Employee is accessible
Manager m = new Manager("sgs",203.2); //error
m.setBonus(800);
Employee e = new Employee("dingwei",8300);
Employee f= new Employee("pangzi",8000);
解决办法: 将Manager类改成:public static class Manager extends Employee{...}
网上查了下,很多说到是静态方法调用动态方法了。
关于静态方法和实例方法到区别:
在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
在hasStaticMethod.java中定义两个方法:
public class hasStaticMethod { public static void callMe()
{
System.out.println("I'm a static method from hasStaticMethod.");
} public void callAgain()
{
System.out.println("I'm not static method");
}
}
在InvokeStaticMethod.java中调用两种方法时:
public class InvokeStaticMethod { public static void main(String[] args){
//静态方法可以直接调用,不用实例化
hasStaticMethod.callMe();
//实例方法,需要先实例化一个对象。
hasStaticMethod d = new hasStaticMethod();
d.callAgain(); }
}
public class staticMethod {
private static int sa; //定义一个静态成员变量
private int ia; //定义一个实例成员变量 //下面定义一个静态方法
static void statMethod(){
int i = 0; //正确,可以有自己的局部变量sa = 10;
//正确,静态方法可以使用静态变量
otherStat();
//正确,可以调用静态方法
ia = 20; //错误,不能使用实例变量
insMethod(); //错误,不能调用实例方法
} static void otherStat(){} //下面定义一个实例方法
void insMethod(){ int i = 0; //正确,可以有自己的局部变量
sa = 15; //正确,可以使用静态变量
ia = 30; //正确,可以使用实例变量
statMethod(); //正确,可以调用静态方法 }
}
静态方法只能访问静态成员,实例方法可以访问静态和实例成员。
之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。
最新文章
- Web缓存杂谈
- JS-自制提速小工具:开发页面时需要按比例计算宽高值的快速计算器
- Linux vi/vim(转载)
- Ubuntu 系统 update-rc.d 命令
- mvc、三次握手
- springmvc 双亲上下文导致的 No mapping found for HTTP request
- Stanford CoreNLP--Split Sentence
- Multiple dex files define Lcom/sina/sso/RemoteSSO错误解决办法
- AJP协议总结与分析
- oracle设备
- HDU ACM 1290 献给杭电五十周年校庆的礼物
- PowerDesigner设置
- python 模块添加
- Linux OpenGL 实践篇-6 光照
- 1.使用RNN做MNIST分类
- javascript 之 面向对象【理解对象】
- 【转载】使用Jquery操作Cookie对象
- slice的部分说明
- php 出现Warning: A non-numeric value encountered问题的原因及解决方法
- ML: 降维算法-概述
热门文章
- 使用getopt 解析参数
- 攻防世界 WEB 高手进阶区 XCTF 4th-CyberEarth ics-06 Writeup
- Mysql教程:(五)多表查询
- 通过t-sql定期自动备份SQL Server 上的所有数据库
- Spark面试题(五)——数据倾斜调优
- Python学习手册(第四版)——使用入门(自学用)
- System.Web.Optimization
- 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明
- 使用protobuf-java-format包 JsonFormat转Json部分默认值字段消失问题
- NOI2021 去不了记