java问题总结.doc_第1页
java问题总结.doc_第2页
java问题总结.doc_第3页
java问题总结.doc_第4页
java问题总结.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

java问题总结 Java基础问题问题1Question49public classQues49public staticvoid main(Stringargs)Employee employee=new Employee(4321);System.out.println(employee.empID);class PersonString name=No name;/*public Person()this(fern);System.out.println(Person1);*/public Person(String nm)name=nm;System.out.println(Person2=+nm);class Employeeextends PersonString empID=0000;public Employee(String id)/super(id);empID=id;问题为什么需要在父类中定义一个默认的构造函数或者需要在子类的构造函数中加super问题2Question101public classQues101extends Fruit1int size=42;public staticvoid main(Stringargs)Ques101b=new Ques101();/对象序列化ObjectOutputStream oos=null;tryoos=new ObjectOutputStream(new FileOutputStream(D:food.txt);oos.writeObject(b);catch(Exception e)e.printStackTrace();finally/反序列化ObjectInputStream ois=null;tryois=new ObjectInputStream(new FileInputStream(D:food.txt);b=(Ques101)ois.readObject();System.out.println(restored+b.size+);catch(Exception e)e.printStackTrace();finallyclass Food1Food1()System.out.println(1);class Fruit1extends Food1implements Serializableprivate staticfinal longserialVersionUID=1L;public Fruit1()System.out.println(2);输出121restored42问题反序列化机制无需通过构造器来初始化对象,如何理解?问题3Question29public classQues29public staticvoid main(Stringargs)intx=1,2,3,4,5,6;inty=x;/*输出结果相同,“Ide6cedIde6ced”,内存地址相同,说明x和y指向同一个对堆内存空间*/System.out.println(x);System.out.println(y);System.out.println(x2);System.out.println(y2);输出结果Ide6cedIde6ced33问题数组x和数组y的栈内存和堆内存的情况?问题4Question102public classQues102implements Serializableprivate int x;public intgetX()return x;public Ques102(int x)this.x=x;private voidwriteObject(ObjectOutputStream s,Object b)throws IOException/s.defaultWriteObject();s.writeObject(b);public staticvoid main(Stringargs)Ques102b=new Ques102 (100);/对象序列化ObjectOutputStream oos=null;tryoos=new ObjectOutputStream(new FileOutputStream(D:food.txt);/oos.writeObject(b);/oos.defaultWriteObject();/使用默认的“写对象”/b.writeObject(oos);b.writeObject(oos,b);catch(Exception e)e.printStackTrace();finally/反序列化ObjectInputStream ois=null;tryois=new ObjectInputStream(new FileInputStream(D:food.txt);b=(Ques102)ois.readObject();System.out.println(restored+b.x+);catch(Exception e)e.printStackTrace();finally问题defaultWriteObject()的使用问题5Question119public classQues119extends Threadprivate intx=2;public staticvoid main(Stringargs)throws Exceptionnew Ques119().makeItSo();new Ques119().go();public Ques119()x=5;System.out.println(Thread.currentThread().getName();start();public voidmakeItSo()throws Exceptionjoin();x=x-1;System.out.println(makeItSo+x);public void run()System.out.println(Thread.currentThread().getName();x*=2;System.out.println(run+x);public voidgo()System.out.println(gogogo+x);输出main Thread0run10makeItSo9main gogogo5Thread1run10问题join()问题6Question123public classQues123private staticObject resource=new Object();private staticvoid delay(long n)tryThread.sleep(n);catch(Exception e)System.out.println(error);e.printStackTrace();public staticvoid main(Stringargs)System.out.println(StartMain);new Thread1().start();delay (1000);Thread2thread2=new Thread2();thread2.start();delay (1000);errupt();delay (1000);System.out.println(EndMain);static classThread1extends Threadpublic voidrun()synchronized(resource)System.out.println(Start1);delay (6000);System.out.println(End1);static classThread2extends Threadpublic voidrun()synchronized(resource)System.out.println(Start2);delay (2000);System.out.println(End2);输出结果StartMain Start1EndMain End1java.lang.InterruptedException:sleep interruptedStart2error End2at java.lang.Thread.sleep(Native Method)at Ques123.delay(Ques123.java:11)at Ques123.aess$1(Ques123.java:9)at Ques123$Thread2.run(Ques123.java:50)问题interrupt();后为何报错问题6Question125public classQues125intx=0;public classRunner implementsRunnableOverride public voidrun()int current=0;for(int i=0;i4;i+)current=x;System.out.println(current+,+Thread.currentThread().getName();x=current+2;public staticvoid main(Stringargs)new Ques125().go();public voidgo()Runnable runnable=new Runner();new Thread(runnable).start();new Thread(runnable).start();选题答案0,2,4,4,6,8,10,6和0,2,4,6,8,10,12,14自己试验的结果如下输出结果10,Thread00,Thread12,Thread02,Thread14,Thread04,Thread16,Thread16,Thread0输出结果20,Thread02,Thread02,Thread14,Thread04,Thread16,Thread06,Thread18,Thread1输出结果30,Thread02,Thread04,Thread06,Thread08,Thread110,Thread112,Thread114,Thread1问题7Question126public classQues126private Listnames=new ArrayList();public synchronizedvoid add(String name)names.add(name);public synchronizedvoid printAll()for(int i=0;i 使用设计模式是为了可重用代码、提高代码可维护性,可理解性、保证代码可靠性。 一方面,设计模式是对代码设计经验的总结,另一方面,设计模式也被经常的使用到各高效,成熟,稳定的系统架构中也就是说在现有成熟系统中运行着无数这样的高质量的代码,比如Java本身,Android的设计,无处不存在对设计模式的运用撰写高质量的代码是每个开发人员应当追求的目标设计模式学习和使,我总结的经验是1.多写代码,2.多看代码,3.设计模式的案列结合实际系统来看,比如学习一个设计模式,可以去找找java中,android哪里用到了,是怎么用的另外一点,设计模式并不是生搬硬套的,有时会出现各种变种,或者交叉使用问题2黄工厂模式中,子类实例化的好处?与父类实例化的区别?工厂方法定义一个创建产品的接口,由子类(工厂)来实现这个接口,在这个接口方法里来实例化具体产品相比简单工厂,是更高一层的抽象,简单工厂在一个类里面来实例化多种产品,对于要扩展一个新产品就会需要修改代码,而工厂方法就能在不修改原有代码的情况下,新增一个工厂类来产生新产品,从这点来说工厂方法更易于扩展问题3黄接口和抽象类的区别?为什么接口让代码更具有弹性?具体体现在哪里?这个很基本的东西了,很多面试题都会提到这个吧,建议多看看书和相关资料先,如果这个没明白,后面讲再多也白搭问题4黄命令模式与模块方法模式的区别?理论的东西不讲了,我举个列子Java的线程实现了Runnable接口,这就是个典型的命令模式Activity生命周期,就是一个典型的模块方法问题5顾抽象工厂模式?看书去问题6傅模板方法模式,P295页中,如何理解将这些步骤实现成钩子,而不是实现成抽象方法,这样就可以让抽象类的子类的负荷减轻?书本中提到的例子哪些地方体现上句话的内容?以Activity生命周期为例,为什么有些步骤在父类实现,为什么有的才让子类来实现:Activity负责全局的生命周期,很多钩子方法在父类中已有默认实现,但子类可以改写他来做更深的定制抽象方法在父类不实现,全由子类来实现子类在不改写钩子的情况下默认调用父类的实现,当然减轻了负荷,至少代码变少了啊P300页开始的“用模板方法排序”中,如何理解“排序”也是一种模板方法?不是“排序”也是一种模板方法是可以用模板方法模式来实现排序算法比如,java中list类的sort方法就是用的模板方法模式(某种程度上也可认为是策略模式)他只提供了一个sort方法,这个方法实现了一个归并排序算法的模板,但排序最根本,大家知道对于数字就是比大小,字母就是比先后,但其他对象呢,怎么得到这个准则,所以sort方法对外暴露了一个实现了pare方法的Comparator接口对象pare方法就是用来得知,俩对象,俩俩比较的时候,谁排第一谁排第二问题7傅模板方法和策略的比较,及其在实际场合的应用。 前面讲到了,Activity生命周期就是典型的模板方法模式模板方法和策略有相通的地方,都是子类来实现父类需要实现的方法但策略侧重于多个子类来实现同样的接口或者抽象方法,在编译时或运行时通过判断(配置或某种策略)来加载/实例化具体子类,并且这些子类是可以置换的策略模式,android中状态栏运用了此模式,分别实现了phone和pad的相关类,并通过配置来决定使用那种模式问题8傅网上看到的话“设计模式就是定式,碰到这种场合你才用得上,所以学习设计模式,你只需要花2个小时过一遍,脑子里面有个印象就赶快收手,到用的时候再去copy&paste”。 对于我们这些没有什么项目经验的初学者来说,设计模式的学习是一个怎样的过程?如果把Head First设计模式中所有的例子都消化了,但是在实际应用中却还是不知道该用什么设计模式怎么办?公司开发的项目中有没有一些固定的模块使用了相关的设计模式,我们在以后的实际开发中可以套用这些模块?见问题1/问题9傅p136页,工厂模式中。 工厂模式的好处将创建对象的代码集中在一个对象或方法中,可以避免代码中的重复,并且方便以后的维护。 这意味着客户实例化对象时,只会依赖于接口,而不是具体类。 我在学习中可以发现,这可以帮助我针对接口编程,而不是针对实现编程。 这让代码更具有弹性,可以应对未来的扩展。 书本中的例子以上将创建对象的代码集中在一个方法中。 这方法之前你要产生NYStylePepperonPizza是不是得依赖具体类NYStylePepperonPizza.class使用之后,你只要调用NYPizzaStore.CreatePizza(“pepperoni”),就不用依赖具体类了从下面的代码中如何理解“这意味着客户实例化对象时,只会依赖于接口,而不是具体类”?依赖于orderPizza接口方法而不是具体去new某个具体类p156页中,“抽象工厂允许客户使用抽象的接口来创建一组相关的产品,而不需要知道(或关心)实际产出的具体产品是什么。 如何在代码中体现?看书看代码去这么说吧简单工厂就是抽象产品,一个工厂生产多个产品,告诉工厂需要什么就能得到什么工厂方法就是从工厂层次进行抽象,一个工厂对应一个产品,告知我要什么工厂就能得到什么产品抽象工厂同时抽象产品和工厂,n个工厂,每个工厂产生多种产品,告诉每一次都是站在更高的层次来进行抽象以获得更高层次的扩展或更多的对象,更好的弹性开场白许多学生认为数学是枯燥的、乏味的。 一些非数学老师在听完一堂数学课后,往往这样评价思路清晰、语言精练、解题严谨,就是太乏味、缺少趣味性,让人昏昏欲睡。 那么,如何调动学生的上课积极性,引发他们的好奇心?设计好“开场白”,非常关键。 下面是数学课的几个片断动手实验式“开场白”桌上摆满了切成各种形状的萝卜,大伙好像还在热列地讨论着什么。 老师微笑问“同学们,用一个平面去截一个正方体,截出的面可能是什么形状?”悬念式“开场白”老师一上讲台,故意神神秘秘地说“你们每人随便想一个自然数,将这个数乘5减7,再把结果乘2加14”。 “你们算得的结果个位数字一定是0”。 顿时教室里象炸了锅似的,“等你学了字母表示数,你也会算了”。 故事式“开场白”为了让学生体会图形的边长、周长、面积在变化过程中的关系,领会列方程解应用题时,关键是捕捉到不变的量。 老师先给学生讲了一个故事父亲的羊越来越多,想拆旧羊圈扩大面积,可是没有多余的篱笆,怎么办呢?他叫来了儿子,儿子不慌不忙地

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论