黑马程序员——java基础---流程控制、函数、数组

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流-------

一、程序流程控制

流程控制语句:可以控制程序的执行流程。主要分成三种类型:顺序结构、选择结构(也称分支结构)、循环结构。

1、判断语句(if)

1、 if(条件表达式)

{

执行语句;

}

2、if(条件表达式)

{

执行语句;

}

else

{

执行语句;

}

3、if(条件表达式)

{

 执行语句;

}

else  if (条件表达式)

{

执行语句  

}

 ……

else

{

执行语句;

}

执行流程:

a、首先判断条件表达式的结果是true还是false,为true时则执行if语句中的代码;

b、如果是false就执行else语句中的代码;

c、如果没有else语句则执行下一条if语句的条件表达式。

if语句特点

1、每一种格式都是单条语句。

2、第二种格式与三元运算符的区别:三元运算符运算完要有值出现。好处是:可以简化if else代码。

3、条件表达式无论写成什么样子,最终的结果不是true就是 false

代码示例:


2、选择语句——switch

switch语句格式如下

switch(表达式)

{

case 常量表达式1:语句1;braek;

case 常量表达式2:语句2;braek;

......

case 常量表达式n:语句n;braek;

default: 语句n+1

}

switch语句特点

a,switch语句选择的类型只有四种:byte,short,int, char。

b,case之间与default没有顺序。先执行第一个case,没有匹配的case执行default。

c,结束switch语句的两种情况:1、遇到break结束;2、执行到switch结尾结束。

d,如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。 

注:JDK1.5以后可以接收枚举类型,JDK1.7以后可以接收字符串。

        if和switch语句很像。具体什么场景下,应用哪个语句呢?如果判断的具体数值不多,而且符合byte  short  int  char这四种类型。虽然两个语句都可以使用,建议使用switch语句,因为效率稍高。其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。

在switch语句中,String的比较用的是String.equals。需要注意的是,传给switch的String变量不能为null,同时switch的case子句中使用的字符串也不能为null。

具体原因大家可以看一下switch的实现过程就懂了。


如果switch传入的null,那么在运行时对一个null对象调用hashCode方法会出现NullPointerException。

如果switch的case写的是null,那么在编译时无法求出hashCode,因此在编译时就会报错了。

3、 循环结构——while,do while,for

3.1、while语句格式

while(条件表达式)

{

 执行语句;

}

3.2、do while语句格式

do

{

执行语句;

}

while(条件表达式);

while和do while的区别:

while:先判断条件,只有条件满足才执行循环体。

do while:先执行循环体,再判断条件,条件满足,再继续执行循环体。

即:do while:无论条件是否满足,循环体至少执行一次。

3.3 for语句格式

for(初始化表达式;循环条件表达式;循环后的操作表达式)

{

循环语句;

}

说明:

1、for语句中,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复这个过程,直到条件不满足为止。

2、while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就是在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。  

3、最简单无限循环格式:while(true){}, for(;;){},对于for来讲,不写条件表达式默认就是ture。无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。

什么时候使用循环结构?

当要对某些语句执行很多次时,就使用循环结构。

循环注意:一定要明确哪些语句需要参与循环,哪些不需要。

代码示例:

运行结果:


4、其他流程控制语句——break,continue

break:作用于switch ,和循环语句,用于跳出,或者称为结束。

break语句单独存在时,下面不要定义其他语句,因为执行不到,编译会失败。当循环嵌套时,break只跳出当前所在循环。要跳出嵌套中的外部循环,只要给循环起名字即可,这个名字称之为标号。

continue:只作用于循环结构,继续循环用的。

作用:结束本次循环,继续下次循环。该语句单独存在时,下面不可以定义语句,执行不到。

二、函数

定义:定义在类中的具有特定功能的一段独立小程序。也称方法。 

格式

修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…)

{

执行语句;

return返回值;

}

当函数没有具体的返回值时,返回的返回值类型用void关键字表示。

如果函数的返回值类型是void时,return语句可以省略不写的,系统会帮你自动加上。

return的作用:结束函数。结束功能。

如何定义一个函数?

函数其实就是一个功能,定义函数就是实现功能,通过两个明确来完成:

1、明确该功能的运算完的结果,其实是在明确这个函数的返回值类型。

2、在实现该功能的过程中是否有未知内容参与了运算,其实就是在明确这个函数的参数列表(参数类型&参数个数)。

函数的作用:

1、用于定义功能。

2、用于封装代码提高代码的复用性。

注意:函数中只能调用函数,不能定义函数。

主函数:

1、保证该类的独立运行。

2、因为它是程序的入口。

3、因为它在被jvm调用。

函数的重要特性——重载(override)

定义:在一个类中,如果出现了两个或者两个以上的同名函数,只要它们的参数的个数,或者参数的类型不同,即可称之为该函数重载了。(overload)

如何区分重载:如果函数名相同时,只看参数列表。和返回值类型没关系。

代码示例:


运行结果:


三、数组

1、一维数组

概念:是同一类型数据的集合,其实数组就是一个容器。数据既可以存储基本数据类型,也可以存储引用数据类型。

数组的好处:可以自动给数组中的元素进行编号,方便操作这些元素。

格式:     

元素类型 []数组名 = new元素类型 [元素的个数或者数组长度] 

元素类型 [] 数组名= new 元素类型 []{元素、元素、……}。

数组的初始化

java中的数组必须进行初始化才能使用。所谓初始化,就是为数组中的元素分配内存空间,并为每个数组元素赋值。

数组的初始化方式:

动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
静态初始化:初始化时指定每个元素的初始值,由系统决定数组长度。

java中的内存分为:寄存器,本地方法区和方法区
a
、栈内存:存储的都是局部变量,而且变量所属的作用域一旦结束,该内存自动释放。
b
、堆内存:存储的都是数组和对象(其实数组就是对象),凡是new建立的都存储在这里。
堆内存的特点
1
、每一个实体都有着地指值。
2
、堆内存中的每一个变量都有着默认初始化值,根据类型的不同而不同。
3
、垃圾回收机制。

java中的数组操作

对数组操作最基本的动作就是存和取,核心思想就是对角标的操作。

1、排序: 常见的排序方式:冒泡排序和选择排序。Java已经定义好了一种排序方式,直接调用即可。排序的方式有很多,其中最快的排序方式为希尔排序。

代码示例:



2、进制转换

代码示例:




2、二维数组

定义:二维数组其实就是一个元素为一维数组的数组。

格式1:int [] [] arr = new int arr [3] [2]。创建一个二维数组,该数组中有3个一维数组,每一个一维数组中有两个元素。

格式2:int [] [] arr = new int [3] [] 。二维数据中有3个一维数组,每一个一维数组都是默认初始化值null。可以对这三个一维数组分别进行初始化。

格式3:int [] [] arr = {{1,2,3},{4,5},{6}}。

代码示例:

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流-------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值