




已阅读5页,还剩61页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA程序执行内存分析,内存分析,内存中的存放,codesegment,datasegment,stack,heap,存放代码,静态变量,字符串变量,局部变量,new出来的东西,Birthdate类,classBirthDateprivateintday;privateintmonth;privateintyear;publicBirthDate(intd,intm,inty)day=d;month=m;year=y;publicvoidsetDay(intd)day=d;publicvoidsetMonth(intm)month=m;publicvoidsetYear(inty)year=y;publicintgetDay()returnday;publicintgetMonth()returnmonth;publicintgetYear()returnyear;publicvoiddispaly()System.out.println(day+-+month+-+year);,Test类,publicclassTestpublicstaticvoidmain(Stringargs)Testtest=newTest();intdate=9;BirthDated1=newBirthDate(7,7,1970);BirthDated2=newBirthDate(1,1,2000);test.change1(date);test.change2(d1);test.chang3(d2);System.out.println(date=+date);d1.display();d2.display();publicvoidchang1(inti)i=1234;publicvoidchang2(BirthDateb)b=newBirthDate(22,2,2004);publicvoidchang3(BirthDateb)b.setDay(22);,内存中变量存放说明,Testtest=newTest();test为局部变量,指向new出来的对象,test:xxx,stack,heap,内存中变量存放说明,intdate;定义局部变量,占一块内存,stack,date:9,内存中变量存放说明,BirthDated1=newBirthDate(7,7,1970);局部变量d1,指向new出来的对象,stack,d1:xxx,y1970,m7,d7,heap,day,month,year,构造方法调用结束后,d,m,y将被释放,内存中变量存放说明,test.change1(date);调用Test中的change1方法,stack,date:9,i,i:9,i:1234,传值,赋值,调用结束,i被释放,内存中变量存放说明,test.change2(d1);,heap,stack,d1:xxx,b:xxx,day:7,month:7,year:1970,传地址,new:xxx,day:22,month:2,year:2004,传地址,1,2,3,4,5,6,方法调用结束后b和new消失,7,内存中变量存放说明,test.chang3(d2);,stack,heap,d2:xxx,b:xxx,day:1,month:1,year:2000,d:22,1,3,2,4,传值,传值,方法调用结束后b和d消失,5,三维坐标中的点,classPointintx,y,z;Point(inta,intb,intc)x=a;y=b;z=c;voidgetDistance(Pointp)return(x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)+(z-p.z)*(z-p.z);Pointp1=newPoint(1,2,3);System.out.println(+getDistance(newPoint(0,0,0);,上例内存分析,System.out.println(+getDistance(newPoint(0,0,0);,stack,heap,x:1,y:2,z:3,x:0,y:0,z:0,p1:xxx,p:xxx,1,3,2,传地址,调用结束后p被释放,this关键字的引用,publicclassLeafinti=0;Leaf(inti)this.i=i;Leafincreament()i+;returnthis;voidprint()System.out.println(i=+i);publicstaticvoidmain(Stringargs)Leafleaf=newLeaf(100);leaf.increament().increament().print();,this关键字的引用,Leafleaf=newLeaf(100);,stack,heap,this,i:100,i:100,调用结束后i被释放,leaf:xxx,想象this在类中,this关键字的引用,leaf.increament().increament().print();,leaf:xxx,this,i:102,leaf1:xxx,leaf2:xxx,this是当前对象的引用,stack,heap,this关键字的引用,leaf.increament().increament().print();相当于以下程序段:leaf.increament();leaf.increament();leaf.print();leaf.increament().increament().print();,返回leaf对象的引用l1,指向leaf对象,返回leaf对象的引用l2,指向leaf对象,内存分析(一),classPointXY/分析程序在内存中执行过程privatedoublex;privatedoubley;PointXY(doublex1,doubley1)x=x1;y=y1;publicdoublegetX()returnx;publicdoublegetY()returny;publicvoidsetX(doublei)x=i;publicvoidsetY(doublei)y=i;,内存分析(二),classCircleprivatePointXYo;privatedoubleradius;Circle(PointXYp,doubler)o=p;radius=r;Circle(doubler)o=newPointXY(0.0,0.0);radius=r;booleancontains(PointXYp)doublex=p.getX()-o.getX();doubley=p.getY()-o.getY();if(x*x+y*yradius*radius)returnfalse;elsereturntrue;publicvoidsetO(doublex,doubley)o.setX(x);o.setY(y);publicPointXYgetO()returno;publicdoublegetRadius()returnradius;publicvoidsetRadius(doubler)radius=r;publicdoublearea()return3.14*radius*radius;,内存分析(三),publicclassTestCirclepublicstaticvoidmain(Stringargs)Circlec1=newCircle(newPointXY(1.0,2.0),2.0);Circlec2=newCircle(5.0);System.out.println(c1:(+c1.getO().getX()+,+c1.getO().getY()+),+c1.getRadius();System.out.println(c2:(+c2.getO().getX()+,+c2.getO().getY()+),+c1.getRadius();System.out.println(c1area=+c1.area();System.out.println(c2area=+c2.area();c1.setO(5,6);c2.setRadius(9.0);System.out.println(c1=(+c1.getO().getX()+,+c1.getO().getY()+),+c1.getRadius();System.out.println(c2=(+c1.getO().getX()+,+c2.getO().getY()+),+c2.getRadius();System.out.println(c1area=+c1.area();System.out.println(c2area=+c2.area();PointXYp1=newPointXY(5.2,6.3);System.out.println(c1.contains(p1);System.out.println(c1.contains(newPointXY(10.0,9.0);,Circlec1=newCircle(newPointXY(1.0,2.0),2.0);,c1:xxx,x:1.0,y:2.0,x1:1.0,y1:2.0,o,radius:2.0,p:xxx,r:2.0,紫色的调用结束后释放,红色的几位调用结束后内存布局,stack,heap,Circlec2=newCircle(5.0);,c2:xxx,o,radius:5.0,r:5.0,x1:0.0,y1:0.0,x:0.0,y:o.o,stack,heap,System.out.println(c1:(+c1.getO().getX()+,+c1.getO().getY()+),+c1.getRadius();,c1:xxx,o,radius:2.0,x:1.0,y:2.0,和o里的值一样,1.0,返回值,返回值,stack,heap,2.0,返回值,c1.setO(5,6);c2.setRadius(9.0);,o,radius:2.0,o,radius:5.09.0,x:1.05,y:2.06,x:0.0,y:0.0,c1:xxx,c2:xxx,x:5,y:6,i:5,i:6,r:9.0,heap,stack,System.out.println(c1.contains(p1);,o,radius:2.0,x:5,y:6,x:5.2,y:6.3,c1:xxx,p1:xxx,p:xxx,x,y,stack,heap,true,static关键字的使用,publicclassCatprivatestaticintsid=0;privateStringname;intid;Cat(Stringname)=name;id=sid+;publicvoidinfoSystem.out.println(Mynameis+name+NO.+id);publicstaticvoidmain(Stringargs)Cat.sid=100;Cat.mimi=newCat(mimi);Cat.pipi=newCat(pipi);();();,static关键字的使用,stack,heap,dataseg,sid:100101102,id:100,name,id:101,name,mimi:xxx,pipi:xxx,mimi,pipi,name,name,类的继承,student,Person,name,age,school,stack,heap,子类,父类,Java权限修饰符,super和this的使用,cc:xxx,valeu,value,this,super,子类,父类,Testsupr.classStus1=newStu(C,s1);,pers,name,location,school,this,super,heap,beijing,C,s1,s1,name,school,n,l,school,name,location,dataseg,stack,hashcodestable,hashcodestable,对象,对象,对象,对象,对象,每一个对象都有独一无二的hashcodes,通过它可以找到所在对象的位置,对象转型casting(TestAnimals),classAnimalclassDgextendsAnimalAnimala=newAnimal();/a=newDg();/Dgd1=(Dg)a;/,对象转型casting(TestAnimals),Animala,Animal,name,furcolor,程序中把a当成一只普通的Animal,不能访问Dg中的成员,Dg,不能访问,表明,实质,只能访问作为父类的那部分成员,Dgd1,动态绑定和多态(TestPolymoph),Catec,name:catname,eyeColor:blue,name:l1,Animapet,ladyl1,实质上指向,codeseg,Animaenjoy,Cateenjoy,Doenjoy,根据实际对象类型来调用,方法,星际的多态应用,父类GameObject,draw(),继承,使用多态,异常的概念,publicvoidsomeMethod()throwsSomeExceptionif(someCondition()thrownewSomeException(错误原因);,声明该方法可能抛出的异常,构造并抛出异常对象,抛出异常,trysomeMethod();catch(SomeExceptione)/异常处理代码;,调用该方法时试图捕捉异常,定义处理异常的代码,异常的分类,Throwable,Error,Exception,RuntimeException,可抛出的,系统错误,处理不了,能处理的错误,经常出的错误,可以不catch,必须得catch的异常,运行时异常,非运行时异常,method()throwsSomeException.,包含,异常类的父类,异常的捕获和处理,try/可能抛出异常的语catch(SomeExceptione1).catch(SomeExceptione2).finally.,统一的出口,都要被执行,可进行资源的清除工作,readFile()throwsIOException.method1()throwsIOExceptionreadFile()method2()throwsIOExceptionmethod1()publicstaticmain(Strings)trymethod2()catch(IOExceptione).,抛异常,抛异常,抛异常,捕获,处理,main方法可不处理,向外抛,ints;数组定义s=newint5;,xxx,s,stack,heap,自动初始化都为0,Datedays;数组分配空间和赋值days=newDate3;for(inti=0;i3;i+)daysi=newDate(2004,4,i+1);,xxx,xxx,xxx,xxx,2004,4,1,2004,4,2,2004,4,3,days,stack,heap,数组动态初始化,inta;/定义a=newint3;/分配空间a0=1;a1=2;a2=3;/赋值Datedays;/定义days=newDate2;/分配空间days0=newDate(2004,4,1);/赋值days1=newDate(2004,4,2);/赋值,数组定义与为数组元素分配空间和赋值分开进行,数组元素静态初始化,inta3=1,2,3;Datedays=newDate(2004,4,1),newDate(2004,4,2),newDate(2004,4,3);,在定义数组的同时就分配空间和赋值,数组元素的默认初始化,数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐式初始化,inta=newint3;System.out.println(a1);Datedays=newDate3;System.out.prinyln(days2);,数组作为返回值,.,Dated,xxxx,返回值,数组模拟链表,1,2,3,4,0,5,0,1,5,4,3,2,3,4,5,0,2,0,2,3,4,5,删除该元素,二维数组,xxxx,a0,a2,a00,a01,a10,a11,a20,a21,.,.,.,heap,stack,a1,xxxx,xxxx,xxxx,a,一维数组,数组的数组,Java中多维数组的声明和初始化应按从高维到低维的顺序进行,inta=newint3;/动态初始化a0=newint2;a1=newint4;a2=newint3;inta=newint35;/动态初始化inta=4,2,13,32,424,32,1,32,12;/静态初始化二维数组的访问:aij,二维数组的输出,inta=1,2,3,4,5,6,7,8,9;for(inti=0;i,List,Map,HashSet,LinkedList,ArrayList,HashMap,无顺序,不可重复,有顺序,可重复(equals),一个一个向里装,一对一对向里装,Iterator容器,next,元素,游标,Array与Linked比较,去掉,Array,Linked,改时要建一个新的数组,读时沿着链表向下查找,InputStream流,PipedInputStream,FilterInputStream,ByteArrayInputStream,SequenceInputStrea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年贵州科级领导干部选拔考试仿真试题及答案
- 甘南州中考试题及答案
- 工厂机电考试题库及答案
- 日照地理中考试题及答案
- 融创会计笔试题库及答案
- 人资岗位笔试题库及答案
- 2025年护士执业资格考试题库(妇产科护理学专项)产前检查护理案例分析试附答案
- 2025年“世界知识产权日”线上知识竞赛题库(附答案)
- 2025年畜牧防疫知识试题及答案
- 2025年应急预案知识考试题库及答案(共80题)
- 2025-2030中国钩针系列行业市场发展趋势与前景展望战略研究报告
- 司法确认调解协议(2025年版)
- 医疗器械直调管理制度
- (高清版)DBJ33∕T 1294-2023 建设工程造价指标采集分析标准
- 海姆立克急救法操作考核标准
- 2025年店铺转租合同模板版
- 八年级英语上学期 选词填空解题方法及专项训练(解析版)
- 【语文试题卷】2024学年第一学期九年级12月学情调研(终)
- 2022年第十七届广东省中学生天文知识竞赛试题(含答案)
- 2023年温州市苍南县粮食收储有限公司招聘考试真题
- 《永遇乐-京口北固亭怀古》课件
评论
0/150
提交评论