java是强类型语言
一、循环结构
1,/*
while(条件表达式) //条件表达式为ture时,执行循环体。
{
执行语句; //循环次数控制条件
}*/
2,/*do
{
执行语句; //do-while语句不管条件是否满足至少执行一次
}while(条件表达式);*/
3,for(初始化表达式;循环条件表达式;循环后的操作表达式) //循环条件表达式为ture时
执行循环体,否则结束循环。
{
执行语句(循环体); //初始化表达式只执行一次,最后停在循环条件表达式
} //当表达式有多句语句时用","隔开。
4,for和while的特点:1,for和while可以互换。2,格式上的不同,在使用上有点小区别
如果需要通过变量来对循环进行控制,该变量只作为循环增量存在时用for循环,xunhuan存在内存中。
5,什么时候使用循环结构。
当对某些代码执行很多次时,使用循环结构。当对一个条件进行一次判断时,可以使用if语句。当对一个条件进行多次判断时,可以使用while语句。(循环结构能实现自动化)
注意:在使用循环时,一定要明确那些语句需要参与循环,那些不需要。循环通常情况下,
需要定义条件,需要控制次数。
6,循环嵌套:(内循环未结束时不会跳出循环,嵌套循环最先执行完的是内循环。)
7,定义方法(函数)的格式:
修饰符返回值类型 方法名(多个单词,第一个单词首字母小写,后面单词首字母都大写)
(参数类型形式参数1,参数类型形式参数2,……)
{
执行语句;
return返回值;
}
特殊情况:当函数没有具体的返回值时,用关键字void表示。
注意:如果返回值是void时,函数中的的“return;”可省略。
8,定义函数可以将功能代码进行封装;便于对该功能进行复用;函数只有被调用才会被执行;
函数的出现提高了代码的复用性;函数都是同级的,不能在函数里面嵌套函数。
注意,函数中只能调用函数,不可以在函数内部定义函数。定义函数时,函数的结果应该返
回给调用者,交由调用者处理。(函数只能定义功能而不允许输出,所的结果必须返回给调
用者。)
9,写方法,返回值和参数类型没有直接关系。(两个明确:一、这个方法的功能是什么?
二、实现这个功能的过程中是否需要未知内容的参与,如果有则需定义变量)
10,栈,特点:先进后出。
例:有三个数进栈顺序是1,2,3,在进栈时允许频繁出栈,则不可能的出栈顺序是3,1,2。
可能的顺序是[1,2,3][1,3,2][3,1,2][2,1,3][3,2,1]。
11,队列,特点,只能在队列的一端操作,只能在队尾进行插入操作,在队头进行删除操作。
12,方法的重载(Override),在同一个类中允许有多个同名的方法,只要方法的参数不同
(1,参数个数不同。2参数类型。3,在同一个类中。4,java是一个严谨性语言,如果函数出现调用的不确定性,会编译失败。)
13,数组(存储数据),数组是相同类型的变量按顺序组成的一种复合数据类型(数组是一
些类型相同的变量组成的集合),称这些相同类型的变量为数组的元素或单元。数组通过数
组名加索引来使用数组元素。
声明一维数组:数组元素类型数组名[]或数组元素类型 []数组名
声明二维数组:数组元素类型数组名[][] 或数组元素类型 [][]数组名
为数组分配元素格式:数组名=new 数组元素的类型[数组元素个数或数组长度],java采用
“数组的数组”声明多维数组,一个二维数组是由若干个一位数组构成的。(声明之后必须
用new运算符为数组分配元素)。
注意:数组下标从“0”开始。
数组通过索引符访问自己的元素,对于一维数组数组元素个数就是数组长度。对于二维数组
"数组名.length"的值是它含有一维数组的个数。数组会默认初始化。
14,内存的划分:
寄存器;本地方法区;方法区;栈内存(存储的都是局部变量,变量都有自己的
作用域,而且变量所属的作用域一旦结束,该变量就自动释放。局部代码块,限定局部变量
的生命周期,);
堆内存(存储的是数组和对象(其实数组就是对象)凡是new建立在堆中,
特点:
1、每一个实体都有首地址值。
2、堆内存中的每一个变量都有默认初始化值,根据类型的不同而不同。整数是0,小数是0.0,或者0.0f,boolean,char等等);3,垃圾回收机制
if-else if
if
switch
接口
1、接口声明:interface 接口的名字{
接口体中包含常量的声明(没有变量)和抽象方法两部分。接口体中只有抽象方法,没有普通方法,而且接口体中所有的常量的访问权限一定都是public,而且static常量(允许省略public、final和static修饰符),所有的抽象方法的访问权限一定都是public(允许省略public abstract修饰符)
}
2、接口由类来实现以便使用接口中的方法。一个类需要在类声明中使用关键字implements声明该类实现一个或多个接口,如果实现多个接口,用逗号隔开接口名。
如果一个非抽象类实现了某个接口,那么这个类必须重写这个接口中的所有方法,要注意的是,由于接口中的方法一定是public abstract方法,所以类在重写接口方法时不仅要去掉abstract修饰符、给出方法体,而且方法的访问权限一定要明显的用public来修饰(否则就降低了权限,这是不允许的)。
注:如果一个类实现了接口,那么类中可以直接使用接口中的常量,程序可以用接口名访问接口常量
3、如果一个类声明实现一个接口,但没有重写接口中的所有方法,那么这个类必须是抽象类,也就是说抽象类既可以重写接口中的方法也可以直接拥有接口中的方法。
4、public接口可以被任何一个类实现。如果父类实现了某个接口,那么子类也就自然实现了该接口,子类不必再显式使用关键字implements声明实现这个接口。
接口也可以被继承,即可以通过关键字extends声明一个接口是另一个接口的子接口,由于接口中的方法和常量都是public的,子接口将继承父接口中的全部方法和常量。
注:java提供的接口都在相应的包中,通过import语句不仅可以引入包中的类,也可以引入包中的接口。
5、接口的思想在于它可以要求某些类有相同名称的方法,但方法的具体内容(方法体的内容)可以不同,即要求这些类实现接口,以保证这些类一定有接口中所声明的方法(即所谓的方法绑定)。接口在要求一些类有相同名称的方法的同时,并不强迫这些类具有相同的父类。
6、接口回调是指:可以把实现某一个接口的类创建的对象的引用赋值给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口方法。实际上,当接口变量调用被类实现的接口方法时,就是通知相应的对象调用这个方法。
7、如果一个方法的参数是接口类型,我们就可以将任何实现该接口的类的实例的引用传递给该接口参数,那么接口参数就可以回调类实现的接口方法。
8、abstract类和接口的区别:abstract类和接口都可以有abstract方法;接口中可以有常量,不能有变量,而abstract类中可以有常量也可以有变量;abstract可以有非abstract方法,但接口不可以。
9、接口只关心操作,但不关心这些操作的具体实现细节。接口进行程序设计的核心思想是使用接口回调,即接口变量存放实现该接口的类的对象的引用,从而接口变量就可以回调类实现的接口的方法。
注:接口思想符合“开—闭原则”,对扩展开放,对修改关闭。将每种可能的变化对应的交给实现接口的类,去负责完成。
内部类和异常类
1、java支持在一个类中定义另一个类,这样的类称为内部类,而包含内部类的类称为内部类的外嵌类。
特点:1内部类的外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法。2内部类的类体中不可以声明类变量和类方法。3内部类仅供它的外嵌类使用,其他类不可以使用某个类的内部类声明对象。
意义:内部类的外嵌类的成员变量在内部类中有效,使得内部类和外嵌类的交互更加方便。
2、java编译器生成的内部类的字节码文件的名字和通常类不同,内部类对应的字节码文件的名字格式是“外嵌类名$内部类名”,内部类可以被修饰为static内部类,类是一种数据类型,那么static内部类就是外嵌类中的一种静态数据类型,这样一来,程序就可以在其他类中使用static内部类来创建对象了,static内部类不能操作外嵌类中的实例成员变量。
注:非内部类不可以是static类
3、匿名类: