Java程序的流程控制语句
顺序语句
按照程序从上到下、从左到右依次执行
条件语句
- if 语句
if 条件语句 if(布尔表达式){ } if ...else 语句 if(布尔表达式){ }else{ } if ...else if 语句 if(布尔表达式){ }else if(布尔表达式){ }else if(布尔表达式){ }else{ }
- switch 语句
switch (表达式){ case 常量1: 语句1; break; case 常量2: 语句2; break; default: 语句; break; } switch 语句会先计算表达式的值
循环结构
while循环
while(布尔表达式) { 循环体; }
do-while
do { 循环体; }whlie(布尔表达式);
break、continue 关键字
break的作用是跳出当前循环块(for、while、do while)或程序块(switch)。在循环块中的作用是跳出当前正在循环的循环体。在程序块中的作用是中断和下一个case条件的比较。
continue用于结束循环体中其后语句的执行,并跳回循环程序块的开头执行下一次循环,而不是立刻循环体。
for(int i = 1; i < 10; i++) { if(i == 5) break; System.ut.println("i = " + i); }
这段程序会显示i = 1到4,因为当 i 等于5时就会执行break而离开循环。
for(int i = 1; i < 10; i++) { if(i == 5) continue; System.out.println("i = " + i); }
这段程序会显示1到4,与6到9。当 i 等于5时,会执行continue直接结束此次循环,这次循环中System.out.println()行并没有被执行,然后从程序块开头执行下一次循环,所以5并没有被显示。
方法Method
1、方法格式:
修饰符 返回值类型 方法名称(参数类型 参数名称,…){
方法体
return 返回值;
}
说明:
- 修饰符: public static
- 返回值类型:方法最终产生的数据结果是什么类型
- 参数类型:进入方法的数据是什么类型
- 参数名称:进入方法的数据对应的变量名称(若参数有多个,使用逗号进行分隔)
- 方法体:方法需要做的事情,若干行代码
- return:一能够停止当前方法 二是将后面的返回值还给调用处
- 返回值:方法执行后最终产生的数据结果
2、三种调用格式
1.单独调用:方法名称(参数)
2.打印调用:System.out.println(方法名称(参数))
3.赋值调用: int num=方法名称(参数)
3、使用方法的注意事项:
1.方法应定义在类当中,但是不能在方法当中再定义方法,不能嵌套
2.方法定义的前后顺序无所谓,方法定义之后不会执行,如果希望执行,一定要去调用
3.如果方法有返回值,那么必须有“return 返回值”且返回值数据与返回值类型要一致
4、方法重载 Overload:
:多个方法名称一样,但是参数列表不一样
对于功能类似的方法,因为参数列表不一样,需要记住太多的方法名称和调用多个方法的麻烦,方法重载就能实现一个方法名称实现多个类似的功能
注意事项
方法重载与下列因素有关:
1.参数个数不同
2.参数类型不同
3.参数多类型顺序不同
方法重载与下列因素无关:
1.与参数名称无关
2.与方法的返回值无关
数组Array
1、数组概念与特点:
一种容器,可以同时存放多个数据组
特点:
1.数组是一种引用数据类型
2.数组当中的多个数据,类型必须统一
3.数组的长度在程序运行期间不可改变
2、数组的初始化:
在内容当中创建一个数组,并向其中赋予一些默认值
两种常见的初始化方式:
1.动态初始化(指定长度)
2.静态初始化(指定内容)
动态初始化数组的格式:
数据类型[ ] 数组名称 =new 数据类型 [数组长度];
解释含义:
左侧数据类型:数组当中保存的数据的类型
左侧的中括号:代表这是一个数组
右侧的new:代表创建数组的动作
右侧数据类型:与左侧保持一致
静态态初始化数组的格式:
数据类型[] 数组名称 =new 数据类型 [] {元素1,元素2,…};
数据类型[] 数组名称={元素1,元素2…};
3、数组的基本运用
数组的初始化和遍历
数组初始化和遍历都有三种方式,参考如下代码。
import java.util.Arrays; public class ArrayDemo{ public static void main(String[] args){ //定义数组的三种方式 //方法1 动态初始化 int[] arr1=new int[3]; arr1[0]=1; //方法2 静态初始化 int[] arr2=new int[]{1,2,3}; //方法3 静态初始化省略写法 int [] arr3={1,2,3}; //遍历数组的三种方式 //方法1 普通for循环,通过下标获取,并且可以改变数组的值 System.out.println("-----------普通for循环-----------"); for(int i=0;i<arr1.length;i++){ arr1[i]*=2; } for(int i=0;i<arr1.length;i++){ System.out.println(arr1[i]); } //方法2 增强型for循环,只能遍历数组,不能改变数组的值 System.out.println("-----------增强型for循环-----------"); for(int number:arr2){ number*=2; } for(int number:arr2){ System.out.println(number); } //方法3 使用Arrays.toString()方法返回 System.out.println("-----------使用Arrays.toString()方法返回-----------"); String str=Arrays.toString(arr3); System.out.println(str); } }
求数组中最值
求数组中最值一般有两种思路,一种是比较数值直接得到最值,另外一种是比较后得到索引,本次使用后者。
public class ArrayMax{ public static void main(String[] args){ //获取一个数组中的最大值,采用记录下标的方式 int[] arr=new int[]{12,34,1,7,5,44,98}; int index=0; for(int i=1;i<arr.length;i++){ if(arr[i]>arr[index]){ index=i; } } //输出最大值 System.out.println(arr[index]); } }
Java中的内存(简单了解)
Java中的内存划分(5个部分)
1.栈(Stack):存放的都是方法中的局部变量。
方法的运行一定要在栈当中运行。
局部变量:方法的参数,或者是方法{}内部的变量。
作用域:一旦超出作用域,立即从栈内存当中消失。
2.堆(Heap):凡是new出来的东西,都在堆当中
堆内存里面的东西都有一个地址值:16进制。
堆内存里面的数据,都有默认值。规则:
整数 默认为0
浮点数 默认为0.0
字符 默认为’\u0000’
布尔 默认为false
引用类型 默认为null
3.方法区(Method Area):存储class相关信息,包含方法的信息。
4.本地方法栈(Native Method Stack):与操作系统相关。
5.寄存器(pc Register):与CPU相关。