黑马程序员---java基础(二)

来源:互联网 发布:linux如何添加sgid 编辑:程序博客网 时间:2024/05/18 00:00

------- android培训java培训、期待与您交流! ----------

循环语句:

循环结构:while , do while , for
定义初始化表达式;
while(条件表达式)
{
执行语句;(循环体)
}
while:先判断条件,只有条件满足才执行循环体.
do
{
执行语句;(循环体)
}
while(条件表达式)
do while:先执行循环体,再判断条件,条件满足,再继续执行循环体.
总结:do while:无论条件是否满足,循环体至少执行一次.
*******************************
for(初始表达式,循环条件表达式,循环后的操作表达式)
{
执行语句;(循环体)
}
1.变量有自己的作用域.对于for来说,如果将用于控制循环的增量定义在for语句中,那么该变量只在for语句内有效.for语句执行完毕,该变量在内存中被释放.
2,for和while可以进行互换,如果需要定义循环增量,用for更为合适.
总结***
什么时候使用循环结构?
当要对某些语句执行很多次时,就使用循环结构.
无限循环的最简单表现形式.
for (;;){}

while(true){}

语句嵌套形式就是语句中还有语句.
循环套嵌,大圈套小圈

对于打印长方形:外循环控制的是行数.内循环控制的是每一行的列数,也就是一行中元素的个数.

for (x = 0 ;x<5 ;x++ )
{
for (y = 0;y<x ;y++ )
{
System.out.print("*");
}
System.out.println();
}

小技巧:尖朝上,可以改变条件,让条件随外循环变化.
尖朝下,可以改变初始化值,让初始化值随着外循环改变.

break(跳出),continue(继续)
break语句:应用范围:选择结构(switch)和循环结构.
continue:只能应用于循环结构.结束本次循环,继续下一次循环的意思.
>>注意:
a.这两个语句离开应用范围,存着是没有意义的.
b.这两个语句单独存在的时下面不可以有语句,因为执行不到.
c.continue语句是结束本次循环继续下次循环.
d.标号的出现,可以让这两个语句作用于指定的范围.(标号只能用于循环,给循环起名字的一种方式: 名字:for)
>>记住:
1.break和continue语句的作用范围.
2.break和continue单独存在时,下面可以有任何语句,因为执行不到.

函数,

函数就是定义在类中的具有特定功能的一段独立小程序.
函数也称为方法.
函数的格式>>

修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,...)
{
执行语句;
return 返回值;
}

返回值类型:函数运行后返回的数据类型(或运行后的结果的数据类型).
参数类型:是形式参数的数据类型.
形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数.
实际参数:传递给形式参数的具体数值.
return:用于结束函数.
返回值:该值会返回给调用者.
>>特点:
1.定义函数可以将功能代码进行封装,便于对该功能进行复用.
2.函数只有被调用才会被执行
3.函数的出现提高了代码的复用性
4.对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写.
>>注意:
1.函数中只能调用函数,不可以在函数内部定义函数.
2.定义函数时,函数的结果应该返回给调用者,交由调用者处理.


>>如何定义一个函数呢?<<
1.既然函数是一个独立的功能,那么该功能的运算结果是什么需要先明确(明确这个功能的结果,也就是返回值类型)
2.明确在定义该功能的过程中是否需要未知的内容参与运算.(是否需要调用者的数据才能运算也就是参数列表,即参数的类型和参数的个数)
其实这两个就是明确函数的定义.
 
函数的重载:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即刻.
重载的特点:与返回值无关,只看参数列表.
重载的好处:方便于阅读,优化了程序设计.
>>什么时候用重载?
当定义的功能相同,但参与运算的未知内容不同.
那么就定义同一个函数名以表示其功能,方便阅读,而通过参数列表的不同来区分多个同名的函数. 


数组:同一种类型数据的集合,其实数组就是一个容器,
好处:可以自动给数组中的元素从0开始编号,方便操作这些元素.
格式1:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度] ;
格式2:
元素类型[] 数组名 = new 元素类型[]{元素,元素,元素,......} ;

内存分配
java程序在运行时,需要在内存中分配空间.为了提高运算效率,对空间进行了不同区域的划分,因为每一片区域都有特定的数据处理方式和内存管理方式.

栈内存:用于存储局部变量,当数据使用完毕,所占用的空间会自动释放.

堆内存:
数组和对象,通过new建立的实例都存放在堆内存中. 只要是new的就会在堆内存中开辟新的空间.
每一个实体都有内存地址值.
实体中的变量都有默认初始化值.
实体不再被使用,会在不确定的时间内被垃圾回收器回收.

数组类型的变量只是引用数组的地址,指向那个地址,其本身的值是数组在内存中的地址值.

排序
选择排序:内循环结束一次,最值出现在头角标位.

冒泡排序::相邻的两个元素进行比较,如果符合条件就换位
第一圈,最值出现在最后位

折半查找,提高效率,但是必须保证是有序的数组,


查表法:将所有的元素临时存储起来,建立对应关系,用另外一个对象记录元素对应的关系值,


二维数组
格式1:int[][] arr = new int[3][2];
定义了名称为arr的二维数组.
二位数组中有3个一维数组,
每一个一维数组中有2个元素,
一维数组的名称分别为arr[0],arrp[1],arr[2]
给第一个一维数组1脚标位赋值为78的写法为:arr[0][1] = 78 ;


格式2:int[][] arr = new int[3][];
二维数组中有3个一维数组;每个一维数组的默认初始化值为null;
可以对这三个一维数组分别进行初始化
arr[0] = new int[1];
arr[1] = new int[2];
arr[2] = new int[3]; 

------- android培训java培训、期待与您交流! ----------

原创粉丝点击