第4篇-JAVA基础
- 每篇一句 :世界上本没有完美,但是我们从未放弃追求完美
- 初学心得 : 乐于挥霍的时间,都不能算作浪费
- (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-01| JAVA基础 Ⅳ]
程序运行流程
(1) 顺序结构
(2) 分支结构
(3) 循环结构
(4) break 与 continue关键字
(5) 数组
(6) 方法
1.顺序结构
如果代码里没有流程控制,程序是至上而下一行一行执行的
一条语句执行完之后继续执行下一条语句,直到程序的最后
2.分支结构
顺序结构只能顺序执行,不能进行判断和选择,因此需要分支结构
JAVA有两种分支结构:● if 语句 ● switch 语句
(1):if 语句,一个 if 语句包含一个布尔表达式和一条或多条语句
if语句三种格式:
```
语句格式一:if(条件表达式){
执行语句;
}
语句格式二:if(条件表达式){
执行语句;
}else{
执行语句;
}
语句格式三:if(条件表达式){
执行语句;
}else if (条件表达式){
执行语句;
}
……
else
{
执行语句;
}
<br> **if 语句的用语法如下: 如果布尔表达式的值为 true,则执行 if 语句中的代码块,否则执行 if 语句块后面的代码** <br> ``` <br>if(布尔表达式) { <br>//如果布尔表达式为true将执行的语句 <br>} <br> ``` <br> **if语句代码** <br> ``` <br>/** <br>*if语句代码 <br>**/ <br>//定义一个Demo类 <br>public class Demo { <br>//定义主方法 <br>public static void main(String args[]){ <br>int a = 10; //定义一个变量 <br>if( a < 100 ){ <br>System.out.print("这是 if 语句"); //输出语句 <br>} <br>} <br>} <br> ``` <br> <br> **if...else语句:if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行** <br> **if…else 的用法**: <br> ``` <br>if(布尔表达式){ <br>//如果布尔表达式的值为true <br>}else{ <br>//如果布尔表达式的值为false <br>} <br> ``` <br> **if else语句代码如下:** <br> ``` <br>/** <br>*if else语句代码 <br>*// <br>//定义一个Demo2类 <br>public class Demo2 { <br>//定义一个主方法 <br>public static void main(String args[]){ <br>int b = 30; //声明一个变量并赋值 <br>if( b < 20 ){ <br>System.out.print("这是 if 语句"); <br>}else{ <br>System.out.print("这是 else 语句"); <br>} <br>} <br>} <br> ``` <br> <br> **(2):switch 语句** <br> switch 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支 <br> case只是用来为switch选择一个执行代码的入口,如果一旦进入一个入口之后,后面的case实际上已经失去了判断的意义, <br> JAVA在执行的时候就会把这个case之后的case相当于删除了,所以就会一直往下执行,直到遇到break <br> 所以读者可以发现, 每一个case后面没有{}这个符号来表示一个代码块 <br> **switch语句选择的类型只有四种**:byte、short、int 、char (java5版本之前)还支持 enum(jdk5), String(jdk7) <br> case之间与default没有顺序,先执行第一个case,都没有匹配的case值执行default。 <br> 结束switch语句的两种情况:遇到break,switch语句执行结束 <br> 如果匹配的case或者default没有对应的break,那么程序会从第一次匹配的case语句开始继续向下执行 <br> 运行可以执行的语句,直到遇到break或者switch结束为止 <br> <br> **switch语法格式**: <br> ``` <br>switch(表达式){ <br>case 表达式可能的结果值1: <br>执行语句; <br>break; <br>case 表达式可能的结果值2: <br>执行语句; <br>break; <br>... <br>default: <br>执行语句; <br>break; <br>}
<br> switch语句代码如下: <br> ``` <br>/** <br>*switch代码 <br>**/ <br>//定义一个Demo3类 <br>public class Demo3 { <br>//定义一个主方法 <br>public static void main(String args[]){ <br>char grade = 'C'; <br>//switch语句 <br>switch(grades){ <br>case 'A' : <br>System.out.println("优秀"); <br>break; <br>case 'B' : <br>System.out.println("良好"); <br>break; <br>case 'C' : <br>System.out.println("及格"); <br>case 'D' : <br>System.out.println("你还需要努力学习"); <br>break; <br>default : <br>System.out.println("未知等级"); <br>} <br>System.out.println("你的等级是 " + grade); //输出语句 <br>} <br>} <br> ```
3.循环结构
JAVA中有三种主要的循环结构:● while 循环 ● do…while 循环 ● for 循环
用于处理需要重复执行的操作,根据判断条件的成立与否,决定程序段落的执行次数,而这个程序段落称为循环体
(1):while 循环,只要布尔表达式为 true,循环体会一直执行下去,while是最基本的循环,它的结构为:
while( 布尔表达式 ) {
//循环内容
}
while循环代码如下:
/**
*while循环
**/
//定义一个Demo4类
public class Demo4 {
//定义一个主方法
public static void main(String args[]) {c
int c = 5; //定义一个变量
// while循环体
while( c < 10 ) {
System.out.print("c的值为:" + c ); //输出c的值
c++; //计数器
System.out.print("\n"); // 输出换行
}
}
}
(2):do…while 循环:do…while 循环和 while 循环相似,不同的是 do…while 循环至少会执行一次
do…while 循环结构:布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了
如果布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false
do {
//代码语句
}while(布尔表达式);
do…while 循环代码
/**
*do…while 循环代码
**/
//定义一个Demo5类
public class Demo5 {
//定义一个主方法
public static void main(String args[]){
int d = 10; //定义一个变量
//do…while 循环体
do{
System.out.print("d的值为: " + d ); //输出d的值
d++; //计数器
System.out.print("\n");
}while( d < 20 );
}
}
(3).for循环:1, for循环里面的3个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体
然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。
2, while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就在内存中释放,而while循环使用的变量在循环结束后还可以继续使用。
3, 最简单无限循环格式:while(true) , for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环
for循环执行的次数是在执行前就确定的,语法格式如下:
for(初始化表达式(1);循环条件表达式(2);循环后的操作表达式(3)){
执行语句;(4)
}
for循环执行顺序:(1) → (2) → (4) → (3) → (2) → (4) → (3)
for循环代码
/**
*for循环代码
*//
//定义一个Demo6类
public class Demo6 {
//定义一个主方法
public static void main(String args[]) {
//for循环体
for(int e = 10; e < 20; e++) {
System.out.print("e的值为 : " + e);//输出e的值
System.out.print("\n"); //输出换行
}
}
}
## 4.break 与 continue关键字
break语句;break:终止该层循环
continue语句;continue:跳过该层循环
①:若这两个语句离开应用范围,存在是没有意义的。
②:这个两个语句后面都能有语句,因为执行不到。
③:continue语句是跳过本次循环,继续下次循环。
④:标签的出现,可以让这两个语句作用于指定的循环
break 关键字:break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块
break 跳出最里层的循环,并且继续执行该循环下面的语句
break 的用法很简单,就是循环结构中的一条语句:break;
continue 关键字:continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代
在 for 循环中,continue 语句使程序立即跳转到更新语句
在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句
continue 就是循环体中一条简单的语句:continue;
5.数组
笔者将讲解JAVA数组的声明、创建和初始化,并给出其对应的代码
数组概念:一组能够储存相同数据类型值得变量的集合
数组的好处:数组里的每个元素都有编号,编号从0开始;依次递增,方便操作这些元素
使用Java数组:必须先声明数组,再给该数组分配内存, JAVA语言中提供数组是用来存储固定大小的同类型元素
声明一维数组
一维数组:可以理解为一列多行、类型相同的数据,其中每个数据被称为数组元素
一维数组的声明方式:
1.int x[];(不推荐使用)
2.int [] x = new int[3];
3.int x = new int[]{3,5.7};
4.int[] x; (推荐使用)
5.int[] x={3,5,7};
6.int a[5]; 非法数组,java语言声明数组的时候不能指定其长度(元素的个数)
一维数组的初始化:
JAVA中的数组必先初始化才可以使用,所谓初始化就是为数组的数组元素分配内存,并为每个数组元素赋值
数组初始化的两种方式:
1.静态初始化:初始化时由我们自己指定每个数组元素的初始值,由系统决定需要的数组长度;
格式:数组名 = new 数组类型[]{元素1,元素2,元素3...元素n}; 简化语法:数组名 = {元素1,元素2,元素3...元素n};
2.动态初始化:初始化时由我们指定数组的长度,由系统为数组元素分配初始值;
格式:数组名 = new 数组类型[数组长度];
声明二维数组:
二维数组:(其实是一个一维数组,它的每一个元素又是一个一维数组),可以看做是一张表格
在数组中再存放数组,外层数组看做是行,内层数组看做列;动态初始化,静态初始化
初始化二维数组声明方式:
//动态初始化,定义了一个二维数组,其中有3个一维数组,每一个一维数组中有2个元素
int[][] a = new int[3][2];
//静态初始化
int[][] a = new int[][]{{1,2},{3,4},{5,6}};
int[][] a = {{1,2},{3,4},{5,6}};
使用 二维数组:
int[] [] arr = {{3,1,5},{2,6},{8}};
元素值5的表示方式为:arr[0][2] = 5;
第二个一维数组的长度表示方式:int len = arr[1].length;
对二维数组的遍历使用for的嵌套循环。
对于其他多维数组,几维就用几层for嵌套,但通常情况数组最多用到三维,因为效率已经大大降低了
使用数组常见操作:
JAVA语言的数组索引是从0开始的,也就是说数组里的第一个元素的索引是0,第二个元素的索引是1
1.给数组元素赋值
2.数组名[索引] = 数组类型的值 ;
3.访问数组元素
4.数组类型 变量 = 数组名[索引];
5.得到数组的长度
6.int len = 数组名.length; //length是数组的属性
7.遍历数组
数组操作常见问题
(ArrayIndexOutOfBoundsException)表示数组脚标越界异常
(NullPointerException)表示空引用异常
6.方法
笔者将讲解:方法含义和定义格式,方法重载
什么是方法?一段可重复使用的代码段;程序中完成独立功能的一段代码的集合
方法的优点 :● 1. 使程序变得更简短而清晰 ● 2. 有利于程序维护
● 3. 可以提高程序开发的效率 ● 4. 提高了代码的重用性
JAVA中定义方法的格式为:
[修饰符] 返回值类型 方法名([参数类型 形式参数1,参数类型 形式参数2,……]){
执行语句; [return 返回值;]
}
参数列表(参数的类型 ,参数的个数,参数的顺序)
方法内容介绍:
形式参数:在方法被调用时用于接收外界输入的数据
实参:调用方法时实际传给方法的数据
返回值:方法在执行完毕后返还给调用它的环境的数据
返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回类型 void
方法签名:方法名 和 方法的参数列表(能区别方法)
java语言中调用方法:对象名.方法名(实参列表)
实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配
return 语句终止方法的运行并指定要返回的数据
方法的重载(Overload)
什么是方法的重载?:
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型或参数顺序不同即可
方法重载的特点:与返回值类型无关,只看参数列表
记住方法重载方式的小技巧:两同,一不同
同一个类中方法名相同;参数列表不同:(参数个数,参数的类型,参数顺序)
编程的命名规则:
1.必须以字母、'_'或'$'开头
2.可以包括数字,但不能以它开头
3.方法名不能使用关键字和保留字
4.单词的首字母大写,采用驼峰式;由有实际意义的名词或名词短语构成
5.方法名规范:第一个单词的首字母小写,采用驼峰式
初学基础Ⅲ难点: ★★★★★
希望每一篇文章都能够对读者们提供帮助与提升,这乃是每一位笔者的初衷
感谢您的阅读 欢迎您的留言与建议
- 新浪官方微博: @中國熱點影視傳媒
- Github博客: https://github.com/jeep711/jeep711.github.io
- Blog Garden:http://www.cnblogs.com/JEEP711/
- W3C/Blog:http://www.w3cschool.cn/jeep711blog/
- CSDN/Blog:http://blog.csdn.net/jeep911
- 51CTO/Blog:http://jeep711.blog.51cto.com/
- 码云:http://git.oschina.net/JEEP711/jeep711.github.io
- 邮箱: <jeep711@qq.com>,<JEEP-711@outlook.com>