基础知识总结


                                                               
学习总结

前言:来蓝杰学习快一个月,感觉还是学了不少东西。但所学的东西还是一盘散沙,没有做过一个系统的总结。这次就这个机会,把前面所学的东西好好说说吧。

 

一、继承

一个类自动的拥有了另一个类中的某些属性或方法。我们就说这个类继承了另一个类。对于一些某些类都要用到的属性和方法,我们就可以为它们定义一个父类,然后要这些类作为子类去继承它。这样就显得程序的层次很清晰,且节省代码。

 

二、多态

多态是指一个消息可以与不同有对象结合产生不同的行为。多态的实现是由消息的接收者确定如何解释的,而不是由消息的发送者确定的。消息的发送者只需要知道另外的实例可以执行一种特定的操作即可。多态大大降低了程序模块的耦合性,提高了程序的抽象程度和简洁性。多态的两种基本实现方式:重载和覆盖.-

 

三、重写

重写是子类在继承了父类之后,可以重新再定义它从父类那继承来的方法应该如何去执行。重写的方法的名字,参数,返回类型都必须和从父类继承来的方法相同。

 

四、重载

重载是在同一个程序中有多个同名的方法,但它们的参数类型或个数有差别。

 

五、数据类型:

Java中有八种基本数据类型。分别是: byteshortintlongfloatdoublecharboolean

byte的取值范围是(-128~127),占一个字节。

short的取值范围是(-32768~32767),占两个字节。

int 的取值范围是(-2147483648~2147483647),占四个字节。

long的取值范围是(-9223372036854774808~9223372036854774807),占八个字节。

float是表示浮点型数,它占四个字节。double是双精度型数,它占八个字节。char中存放的是字符,它占两个字节。boolean是布尔型的变量,它只有两个值,一个true,一个false.

 

.当然这八种数据类型有它们相应的类类型:

ByteShortIntegerLongFloatDouble CharacterBoolean

 

六、值传递和引用传递的区别:

在调用方法时,我们有时会给方法中传入一些参数,而对这些参数的类型我们可以分为两类,一种是值传递的,一种是引用传递的。我们一般认为如果传入的是基本数据类型(String也是一种值传递)的话,那么它就是值传递的。即方法内部对它做的改变在方法外面并不起作用。最典型的一个例子就是交换。

swap( int a   ,   int b){

int  temp;

temp=a;

a=b;

a=temp;

}            

 很显然当外面在调用这个方法时,并不能达到交换的目的,因为它是值传递的。这个问题在CC++中可以通过用指针解决这一问题。指针传入的是它们的地址,通过交换后改变了它们所存地址里的数值,从而可以达到交换的目的。在Java中也可以通过对象解决这一问题。

swap( Points  a   ,   Points b){

int  temp;

temp=a.num;

a.num=b.num;

a.num=temp;

}

通过这样的改变就可以达到交换的目的了。这就是引用传递,它传递的是一个引用类型的对象。

 

七、关于Set ,List,Map

Set List都是Collection的子类,但它们也都是接口,不能直接用来创建实例对象。要创建它们的实例对象,我们应该用已经实现它的接口的子类。通过查看API文档我们可以知道,Set的实现类主要有:AbstractSet, HashSet, LinkedHashSet, TreeSet

List的实现类主要有:AbstractList, ArrayList, LinkedList, Vector

Set是一个集合,它里面的元素都是没有顺序的,因此也就决定了它里面不能有重复的元素。

由此我们可以想到Set类的一个用法是可以去除一堆数据中的重复数据。既然它里面的数据是没有顺序的,那怎么从它里面取出元素呢。这里我们要用到一个迭代器(Iterator),通过它我们就可以从它里面得到每一个元素了。我们可以通过使用这个语句得到迭代器对象Iterator it=Set.iterator();再查看API文档我们可以知道 ,它里面有3 个方法,hasNext(),next(),

Remove();通过使用前面的两个方法,通过循环我们就可以得到Set里面的每一个元素了。

List是一个队列,它里面的元素是一个个放进去的,对于每一个元素都对应的有一个编号,就像一个数组一样的,需要哪个元素时,我们通过它的一个编号就可以得了。它和数组不同的一点是它的长度是随着放入的元素的多少而可以变化的。List 的遍历我们可以通过循环就从0到它的长度就可以完成。

Map它是一个映射,它里面有两个值,一个Key值和一个Value值。每一个Key 值对应一个Value值。Map里面的Value值可以为nullSet,List里面的值可以为null.HashMap里面的Key值可以为null,HashTable里面的Key值不能为null..

 

 

八、Swing界面的相关组件。

javax.swing包中,定义了两种类型的组件:顶层容器(JframeJappletJDialogJWindow)和轻量级组件。顶层容器组件中又可以放其它的组件。而轻量级组件则必须放在顶层容器组件上才能显示。Swing 组件是由AWT发展而来,因此它的很多组件是它发展而来的。

 

上面是和AWT相同的组件。

 



 

                        上面是 在Swing中,而AWT中没有的组件。

  

九、递归和循环:

递归是在定义一个方法时,在它的方法里面又调用了自己这个方法。那么总这么循环的调用,那不是不会停止了吗。所以在写递归的时候我们必须得定义一个出口,当递归达到某个要求的时候它就会结束。如果没有定义这个出口它就会出现死递归。而且在每一次递归的过程中都要向出口靠近。

循环就是重复的执行某一段语句,直到达到规定的次数或用break语名跳出循环。那么递归和循环到底有什么区别呢?几乎所有可以用递归实现的方法都可以用循环来实现,递归随着层次的深入,会使压入堆栈里的内容增多,因此会造成某种程度上的低效。而使用循环则不会出现这种问题。但在有的时候使用递归会使程序结构很清晰,若使用循环的话,会使程序变的很复杂。

 

十、文件复制的实现:

数据的保存是一个一个的保存在文件中的,要实现文件的复制我们必须先要使用输入流得到这样数据,再把它用输出流写到它要复制到的文件中去。

 

十一、线程:

线程的创建方式有两种,一种是继承Thread类。另一种是实现Runable这个接口。线程在程序中有五种状态:创建、就绪、运行、阻塞和死亡。

 

十二、Static 关键字的用法和注意事项:

static关键字声明的变量是类变量。在使用类来创建对象时不会给每一个static变量分配内存空间。它的所有对象都共享在类创建时的这个内存空间。所以,我们可以通过类名就可以调用它,而不需要创建它的对象。若我们需要多个类共享一个变量,我们就可以把它们声明为static型的。但是声明static变量会破坏面象对象里面的多态性。所以要慎用。

 

十三、= =equals的区别

= =一般是用于对两个数值的比较。对于基本数据类型我们可以用= =比较它们两个值是否相等。对于两个基本数据类型是否可以用equals来比较呢,答案是否定的。因为equals是一个方法,方法是要通过类名或对象名才能调用的。那equals到底是个什么东西呢,查看API文档,我们可以看到equals的定义。

public boolean equals(Object obj) {

  return (this == obj);

}这是在Object里面的一个定义。显然它是用于两个对象的比较,当这两个引用指向的是同一对象时,它们才相等。但在Object的很多子类中重写了它的这个方法。比如在:String里面就重写了它的equals方法。所以对于字符串类型号的比较,它们只要里面的内容相同即是相等。总之一句话,==是运算符,equals是方法。

十四、空指针问题

空指针问题是几乎是我们每天编程都会遇到的问题。当对象还未创建时我们就调用了它的方法或属性时它就会出现空指针问题。因为对象未创建,系统还没有给它分配内存空间。所以就不能去调用其方法或属性了。所以在调用某个对象的方法的时候,我们一定要认真的考虑该对象是否已经被创建。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值