java学习总结(1)基础

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/iamtheevil/article/details/83693242
2010-7-27---2010-8-12
需要总结的内容:
1.继承、多态、重写?

继承:已经有一个parent父类,子类要调用父类的方法与属性,用extends关键字
public sonName extends parName {
//自动具有了parName父类中的方法是与属性
}
多态:方法名相同,传入参数不同,内部功能不同
public Study(){//.....}
public Study(String name){//.....}
public Study(String name,int num){//.....}

重写:在子类中对继承来的方法进行重写,方法定义不变,但方法的实现不同

2.数据类型、值传递和引用传递有什么区别,String是什么传递?
数据类型没有学,以我自己的理解写:
bype型(我在c++中没有用过这个类型)1个字节 8bit
short型 2个字节
char型 2个字节
int型 4个字节
long型 8个字节
float型 4个字节 1.234f 2.345F
double型 8个字节
Boolean型 true/false
// String型 8个字节(S要大写)String是一个类不是基本类型
值传递和引用传递的区别:
数据为八大基本类型是,数据在调用传递时是( 值传递)
数据为引用类型即类类型是,通过创建的对象来调用 (引用传递)通过方法可以改变值
String虽然为一个类,但是遵循值传递的规则

3.Set如何遍历,有哪些子类、List如何遍历,有哪些子类、Map如何遍历,有哪些子类
Map中是否可以放入null的key或Vlaue?Set,List呢?
<--这个我还没学-->
4.Swing界面相关,Swing组件的继承体系图、事件监听器的继承体系图。

Swing采用了一种MVC的设计范式,即"模型-视图-控制"(Model-View- Controller),其中模型用来保存内容,视图用来显示内容,控制器用来控制用户输入。
在javax.swing包中,定义了两种类型的组件:顶层容器(JFrame,JApplet,JDialog和JWindow)和轻量级组件。Swing组件都是AWT的Container类的直接子类和间接子类。

java.awt.Component
    -java.awt.Container
       -java.awt.Window
          -java.awt.Frame-javax.swing.JFrame
          -javax.Dialog-javax.swing.JDialog
          -javax.swing.JWindow
       -java.awt.Applet-javax.swing.JApplet
       -javax.swing.Box
       -javax.swing.Jcomponet

swing包是Swing提供的最大包,它包含将近100个类和25个接口,几乎所有的Swing组件都在swing包中,只有JtableHeader和   JtextComponent是例外,它们分别在swing.table和swing.text中。
  swing.border包中定义了事件和事件监听器类,与AWT的event包类似。它们都包括事件类和监听器接口。
  swing.pending包包含了没有完全实现的Swing组件。
  swing.table包中主要包括了表格组建(JTable)的支持类。
  swing.tree同样是JTree的支持类。
  swing.text、swing.text.html、swing.text.html.parser和swing.text.rtf都是用于显示和编辑文档的包。
http://www.itlearner.com/article/549(相当详细)

5.递归与循环的区别?
在方法里面在调用自己就是递归。递归可以看做是循环
循环体里面没有方法本身了。 循环不能看成是递归

6.I/O流继承体系结构图和分类。文件复制的实现,原始数据类型读写
<--貌似我现在还没接触过结构体系这样的字眼,惭愧!-->
文件复制的实现:
public boolean copyFile(Stirng srcFile,String destFile){
//创建一个从源文件来的输入流(水站)
InputStrean ins=new FileInputStream(srcFile);
//缓冲输出流对象(水缸)
OutputStream ous=new FileOutputStream(destFile);
//OutputStream ous=new FileOutputStream(destFile,true);//输出内容附加到已存在 文件后面
int i=0;
//从输出流中读取一个字节(但是定义是用的是int)
while(i=ins.read()!=-1){ 当i=-1时,文件到末尾了 .read()功能为读取下一个字节
ous.write(i);
}
ins.clouse(); //关闭水站龙头
ous.flush(); //清空输出流的缓存并关闭(将输水管中的水清掉,并撤掉水管)
ous.clouse();//关闭水缸水流入口

return true; //文件复制成功
}

http://java.chinaitlab.com/base/782283.html

7.线程:线程有几种创建方式?线程在程序中有几种状态?
3种创建方式:
1)重写Thread类实现线程
2)实现Runnable接口创建线程(没接触)
3)以内部类的方式创建线程
4)继承TimerTask类实现线程的定时执行(没接触)
●新线程态(New Thread)
   产生一个Thread对象就生成一个新线程。当线程处于"新线程"状态时,仅仅是一个空线程对象,它还没有分配到系统资源。因此只能启动或终止它。任何其他操作都会引发异常。
  ●可运行态(Runnable)
start()方法产生运行线程所必须的资源,调度线程执行,并且调用线程的run()方法。在这时线程处于可运行态。该状态不称为运行态是因为这时的线程并不总是一直占用处理机。特别是对于只有一个处理机的PC而言,任何时刻.只能有一个处于可运行态的线程占用处理 机。Java通过调度来实现多线程对处理机的共享。
  ●非运行态(Not Runnable)
  当以下事件发生时,线程进入非运行态。
  ①suspend()方法被调用;
  ②sleep()方法被调用;
  ③线程使用wait()来等待条件变量;
  ④线程处于I/O等待。
  ●死亡态(Dead)
  当run()方法返回,或别的线程调用stop()方法,线程进入死亡态 。通常Applet使用它的stop()方法来终止它产生的所有线程。



8.static用法与注意事项,==和equals的区别?
使用static限定的方法称为静态方法或类方法,其调用不必经过创建该类的对象,类的某一个static属性值被改变之后,这个类所有对象的static属性值都会改变(类似于C++中#define num 10),static属性可以在任何方法中调用,但在static方法中只能直接调用static属性,非static属性必须通过创建对象来调用
==必须使用的是原始数据 如1==1
equals 使用时,可以是对象,相等的标准比较灵活,不如 stu1.equals(stu2). equals是一个方法
9.完成的项目功能说明和缺陷分析。(画板、五子棋、弹球游戏3选2)
1)弹球游戏(到目前为止不知道这是啥玩意儿),画出一个球来还不收控制
2)画板
初步实现了画直线、椭圆的方法,可以重绘,可以保存并提取文件,实现了对颜色的设置。目前的缺陷很多,多到不知道该怎么说!
重绘的时候颜色会改变
不明白为甚么要搞保存和提取,还没有进行深一步的研究
实现的功能还非常简单。画面设计不够美观
3)五子棋
初步实现了棋盘的绘制、棋子的落子,单局输赢判断(人人对战版)
缺陷:不能进行下一局
没有难度区分
没有实现人机对战(弱智的简单人工智能)
无法设置先手后手
。。。。。未知问题
10.自己的学习到的经验?典型的碰到什么难题?如何解决?
做画板是一直是画一个图形,重绘后图形就发生走样,纠结两天后在查了N次代码后发现是自己粗心将paint()函数内的this.x2=x2写成了this.x2=y2;(找hu总求救,他让我自己再纠结纠结,结果自己本着“失败九十九次,第一百次一定成功”的信念再认真检查后终于找到症结所在了,希望大家也能引以为戒,低级问题一定要自己耐心的去发现)
最开始把所有代码都写到一个类里面,看着非常没有条理,随着对值传递理解的加深,这才开始慢慢分开写


做五子棋时最纠结的是各种值的调用和监听器的设置,到现在还是比较迷糊(actionListener和mouseLitener)~典型的问题是每次老师给分析完之后自己会做一步,然后下一步就不知道该怎么办了!!缺乏自主性啊

最开始设置棋盘线是有问题的,找坐标计算坐标用了很长时间,但搞出来后也觉得没有想象中的那么难了。
画棋子设置监听器的时候确实遇到了很大问题,大部分是hu总帮忙解决的,现在还在消化过程中
每一个棋子画完后要存入chessBox数组中时也遇到了问题。当重绘时需要提取数组中的值,没有参数的数组是null,最开始忽略了这点
当一方获胜后弹出提示窗口,当关掉窗口后还可以继续落子。这个问题通过移除监听器来解决了
目前最大的问题是放一个棋子后,机器自动添加另外一方的棋子,虽然按照傻瓜规则可以添加,但判断输赢却出问题了~~
求高手指教!
展开阅读全文

没有更多推荐了,返回首页