数组
先说说数组吧,在Java中,数组分为了一维数组,二维数组,以及多维数组。
数组是一种数据类型,作用是来专门处理一些批量数据。特点是产生一组连续的内存空间,用来存放批量数据。但是由于数组的特点是产生的是连续的内存空间,因此,它在空间利用度上面是不高的。其次是它只能存一组同一数据类型的元素,导致它在具体的业务范围中也受到了一定的限制。并且数组大小一旦确定。
,就不能够再更改(空间大小)。所以,这也导致性能将会受到影响。
值得注意的是,数组是一种引用的数据类型。所以,如果我们需要打印数组的话,应该使用循环来答应数组元素。因此,数组往往和循环分不开。
数组的语法:先申明数组,接着与申明变量保持一致,然后给其分配空间,再通过数组操作元素:数组类型(空格)变量名;。然后:元素类型[ ](空格)变量名;。具体如下:
int[ ] array;
array = new int [ 10 ];
而基本数据类型的元素初始化为零,引用数据类型的初始化则为null。值得注意的是,在申明数组的同时,要记得直接给元素赋值。
例如:int [ ] array = {10 ,20,30,40};
数组通过下标,数组长度(length)来操作数组元素。(注意:数组下边永远从零开始,到长度length-1结束。如果不在这个范围,就会出现下标越界异常哦⊙∀⊙!英文:ArrayaIndexOutOfBoundsException)。
而二维数组与一维数组相似,只是语法上有部分不同。二维数组的语法为:元素类型 [ ] [ ] (空格) 二维数组的变量名(int [ ] [ ] array2D; )。
二维数组也是引用数据类型,用new关键字产生真正的二维数组空间。设置好行与列的个数(二维数组被看成是一个列表的形式,第一个框控制的是行数,而第二个控制的则是列数),元素个数刚好是两者之积。由于是引用数据类型,凡事被new出来的都会被自动初始化。
同样的,二维数组也通过元素下标访问或者操作元素,并且下标从零开始,并且是用的是双重循化。值得注意的是,二维数组(.length)获取的是前面说的行数,列数是用(行
.length)来获取。虽然二维数组的形式是表格来表达,但是,其在内村上的形式并不是按表格存放数据,二维数组其实就是一个一维数组,而里面的每个元素,又指向了一个一维数组。由此,我们可以推广到多维数组。
方法
方法又叫做函数,是面相过程的重要组成部分。也是模块化编程的必不可少的一部分。其思想是把大的问题域化成一个个小的问题域。组成一个个的功能块解决业务上的问题。(模块化编程的特点是在设计上,简化问题域。其次是复用与分离思想体系的体现。)
它是现代化编程进入到模块化编程的标志。程序猿首先定义这样的模块,给它起名字。并给它制定运行前的先决条件,制定它的运行具体步骤,以及最后返回什么样的结果。使用者只需要在需要用到这个模块的地方,根据名字给先决的条件,就可得到运行结果。在语法级别上,方法分为定义和调用两个部分。
方法的定义:分为申明和定义(实现)“{”前面是申明部分,然后是“{实现部分}”。
申明语法:访问修饰符(空格)可选修饰符(空格)返回类型(空格)方法名(形参列表)(修饰符之间可以交换位置的哦)
(访问修饰符一共有四种:public protected 默认 private)
返回类型可以有值,根据返回类型确定,也可以没有值(void)。方法名要求见名知意,往往是动词或者动宾短语。形参列表中参数就是上文中所提到方法执行的先决条件,可以没有参数,但是括号“( )”不能少。参数列表包含了参数的个数 参数的顺序以及参数的类型这三个比较重要的内容哦。
方法的调用是使用类名.(点/的)方法名;的形式。如果在本类的一个方法里调用本类的其他方法,那么类名可以省掉。但是如果不在同一个包,就需要导包。在调用时,实参和形参要保持一致,包括了顺序,个数,类型。注意:形参与实参的传递时,与名字是无关的,并且传递时,参数永远都是值传递。而在基本数据类型中,方法里面做任何改变,方法外不受任何影响。但是如果是引用数据类型方法里面做任何改变,将直接对方法外面的变量造成改变。因为当方法调用时,方法内外的引用都会指向同一个对象。但是有一个例外,string。所以,区分方法是看引用本身是否变化,如果引用本身发生了变化,实参和形参指向了不同的空间,那么这时形参的变化将不会与实参有任何关系。
方法的另一个用法是重载,简而言之,方法同名不同参(个数,顺序,类型)。并且与参数名,返回类型,访问修饰符都无关。
封装
封装,先装,后封。
在生活中见得最多的大概是快递了吧。快递员把物品用箱子装起来,以遮掩物品信息,并用胶带封起来,只对用户可见。而在Java中,装,是一个类的定义,包括属性和行为,相当于物品。而封则是对信息的隐藏,相当于胶带,包括方法的定义/实现部分,用访问修饰符来实现封。
继承
继承,生活中常见的例子,是父传子,子传孙,代代相传。而继承的概念就是子类(subclass)继承父类(superclass)共有的属性或者方法以达到代码的简洁,体现了Java复用与分离的思想体系。
语法是:子类名 extends 父类名(Java中的继承是一种单继承,虽层次清晰,但是丰富性较差)
其作用是让共有的属性与行为达到复用,让每个相似的类型独立。扩展性强,体现了类与类的关系。
方法的重写
子类通过继承自动具备父类的行为,但由于子类的实现有可能是特有的,所以子类重新把这个方法重写一次。
要求是方法名保持一致,参数列表保持一致,返回类型保持一致,访问修饰符范围大于父类,异常不能多于父类。
由于子类继承于父类,所以继承的内存表现形式为内存叠加。所以,每个子类都包含了一个完整的父类对象。