今天晚上到蓝杰上了一节课,胡哥给我们讲了一些关于java编程中比较容易又经常犯的错误。借此也回顾了前面学过的一些知识。
今天晚上讲的内容大概如下:
1.死递归
比如有这样一个类A{
A a=new A();
}
类中用该类实例化了一个对象,就像c语言中在一个函数中调用自己,我们知道这个是一种递归。很容已看出,当new A()语句运行时内部有得实例化对象,这种过程会一直持续下去。即会陷入死递归。
这种情况编译并不出错,但运行时就出错了。运行时会出现这样的语句Exception in thread "main" java.lang.StackOverflowError,当应用程序递归太深而发生堆栈溢出时,抛出该错误。
2.栈溢出
其实上面那种情况我觉得也是栈溢出的一种类型,栈溢出还包括下面这种情况
比如我们创建一个数组,我们知道创建一个数组,也就向内存申请的一段空间,所以创建数组也称作申请内存或申请缓冲区,内存都是有限的所以当数组所占空间超过内存时便发生栈溢出。
8bit(位)=1Byte(字节)
1024Byte(字节)=1KB
1024KB=1MB
1024MB=1GB
1024GB=1TB
所以我们可以根据数据类型所占字节数算出其所占内存空间的大小。看其是否超出内存空间的大小。
3.数据类型和一些关于内存空间的问题:
数据类型(1)基本数据类型(2)引用类型
其中要注意的是String它是一个类,但是它属于值传递(一般类的都是属于引用传递),而数组虽然不是一个类但也属于引用传递(址传递)
如:
String s1="abc";
String s2="bed";
s1=s2;
s2="opq"
运行出来s1是"bed",这便是值传递。
再者假设A{}是我们自己创建的一个类
A a1=new A();
A a2=new A();
A a3=new A();
当执行a1=a2时a1便指向了原来a2所值的对象,a1原来所指向的内存空间被释放掉。
当我们创建一个整形数组如 int a[]=new a[10];我们知道a数组里面所指的元素都是0,同样内存也给他分配了相应的空间。
但如A[]=new A[10];(A{}是一个类),又是怎样分配内存空间的呢?
是这样的,默认该数组内所指的对象都是一个空指针,指针是四个字节的。
当执行A a=A();a[1]=a;时a[1]便指向了一个具体的对象,其所占内存就和对象a有关系了。
再看如下代码
A{
private B b;
A(B b){
b=this.b;
}
}
在主函数中运行下面语句
B b=new B();
A a=new A(b);
很明显我们知道在A{}中构造方法中b对象永远指向没有实例化的属性b,所以这个程序运行便出现了空指针的错误。虽然按照我们的习惯犯这种错误的几乎是不可能的,但这个例子很好的让我们理解了引用传递(值传递)。
4.请看如下代码:
A a=new B();
一看这句代码我们马上可以看出要是这句代码是正确的,那么A和B肯定有继承关系,并且Aw为B的父类。
但老师让我们说什么情况下这句代码是错的,当你听到这句话时或许你会觉得很简单,错误的情况多得是,但要你一一列举还真不是一件简单的事。
根据同学们的讨论有一下一些情况这句代码是错误的。
(1)类没有创建。
(2)B是A的父类。
(3)两个类没有关系。
(4)B是接口或者抽象类(我们知道接口和抽象类是不能实例化对象的)
(5)B类中参数的问题(比如B中的构造方法中有参数,那么默认无参的构造方法调用就 会出现问题)
。。。。。。。其他具体我一时也想不出来了,大家要是看到这篇文章刚好想出一些不同的情况的可以补充一下。。
分享到:
相关推荐
【初三数学复习课听评课总结】 本次初三数学听评课活动主要针对一次函数的复习,旨在提升学生对基础知识的理解和应用能力,同时也为教师提供了一个教学交流的平台。共有180位教师参与,体现了教学团队对教学质量的...
在学习Web开发的过程中,结课总结是对整个学习阶段的重要回顾,它涵盖了从基础概念到高级技术的全面理解。"sadasdsad"可能是对某个具体情境的随意提及,但在这里我们可以将其视为对Web开发深入探讨的象征。Web开发是...
在本节"第六课 总结整理1"中,我们将回顾和总结学习的Python编程相关知识,特别是关于软件开发和Python插件的应用。Python是一种流行的高级编程语言,以其简洁、易读性强和丰富的库支持而受到广大开发者的喜爱。本课...
【春光小学新课程改革回顾与总结】 春光小学在过去十年间积极响应并实施新课程改革,以此推动学校素质教育,全面提升教师的专业素质。学校注重师资培训,转变教学观念,旨在为学生提供更优质、更适合个体发展的教育...
【期中考试总结班会课】是一份针对会计学1班级学生的教育材料,旨在通过期中考试的结果,帮助学生分析自身学习状况,总结经验教训,提高学习效率和成绩。以下是根据PPT内容提取的关键知识点: 1. **正视现实篇**: ...
而王xx老师的复习课则巧妙地引导学生回顾和巩固已学知识,使学生在复习过程中有所提高。 在整个听评课过程中,老师们不仅关注学生的学习过程,还积极参与评课活动,讨论各自在教学中遇到的问题。大家在观摩两位老师...
课堂总结环节,教师通过回顾和总结,帮助学生巩固所学知识,明确教学目标的达成情况。这样的总结不仅强化了学生对年、月、日概念的理解,也对学生的记忆和反思能力进行了训练。 《年月日》公开课的教学设计体现了以...
2. 知识点总结:不应仅针对错题进行总结,而应全面回顾所有答题情况。对于答题困难或思维受阻的题目,要深入复习相关知识,避免陷入只看表面的误区,而应由点及面地复习整个知识体系。 3. 考试技巧总结:思考考试...
【大学课综总结】 在大学四年的学习生活中,个人综合素养的提升是至关重要的。这不仅体现在学术成绩上,还包括品德修养、社交能力、团队协作、个人价值观等多个方面。以下是对大学综合素养评价的一些关键点: 1. *...
【标题】:对一门课的总结怎么写 【描述】:本文主要探讨了如何撰写一门课程的总结,从翻译课程的角度出发,分享了...在总结一门课程时,不仅要回顾理论知识,更要反思学习方法和教学过程,以便不断优化学习体验和效果。
本节课主要回顾了初中九年级数学中的锐角三角比知识,适用于沪教版五四制的教学体系。锐角三角比是直角三角形中锐角与边长比例的关系,是解决几何问题和实际应用中计算角度、长度的重要工具。 1. **锐角三角比的...
综上所述,2021年高三年级政治课的教学总结,不仅仅是对一年教学工作的回顾,更是对未来教学方向的规划。在这一年的教学中,我们看到了孙丽老师以身作则的教学态度,科学的备课与教学计划,积极参与教研活动的热情,...
《苏教版五年级语文知识点下册总结》对于学生掌握五年级语文知识具有重要指导作用。总结内容全面,涉及多音字、易错字、词语运用、近反义词、课文理解等多个方面,为学生的语文学习提供了宝贵的复习资料。下面将详细...
复习课不仅仅是简单的回顾,而是通过归纳总结,使学生能够更好地理解和应用所学知识。 复习课的作用与意义体现在以下几个方面: 1. 知识体系的构建:复习课有助于将零散的知识点串联起来,形成知识网络,使学生能...
"计算机专业课复习总结.rar" 这个压缩包文件集合了核心课程的重要知识点,包括机组(计算机组成原理)、数据结构、操作系统以及数学思维的相关内容。这些主题是计算机科学教育的基础,对于理解和解决实际问题至关...
下面将详细回顾这五篇班会总结的核心内容,展现开学第一课的丰富内涵与深远影响。 首先,在第一篇班会总结中,班主任针对收看《开学第一课》电视节目进行了强调,目的是让学生们认识到这一教育活动的重要性。节目...
总结归纳阶段,教师带领学生回顾整个探究过程,提炼关键概念,形成知识网络,帮助学生将零散的信息整合成有条理的知识体系。课后作业的设计则要求学生将学到的算法分析方法应用于新的情境中,从而实现知识的迁移和...
- **方法**:通过总结、练习等方式,引导学生对知识点进行回顾和思考。 ### 四、班主任工作的要点 #### 1. 建立良好的师生关系 - **第一印象**:作为班主任,初次见面时给予学生深刻而正面的第一印象非常重要。 - ...
回顾这一年,我们不难发现,即使在家中,学习的本质并未改变,知识的传递和吸收依然是教育的核心。老师们通过网络平台,用他们独特的方式诠释着每一门课程的魅力。数学老师在屏幕前复习着上节课的知识点,强调着...
【标题】:“李睿豪的结课作品及总结PPT.zip”这个压缩包文件很可能包含了李睿豪在完成某一课程或项目后的成果展示和学习总结。通常,这种类型的文件会包含一个PPT(PowerPoint演示文稿)和/或他的实际作品集。这...