Java流程控制
1.用户叫互Scanner
通过Scanner类的next()与nextLine(方法获取输入的字符串,在读取前我们一-般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。
基本语法:Scanner s= new Scanner(System.in);
ublic class Demo01 {
public static void main(String[] args) {
//创键一个扫描器对象,用于接收键盘数据
Scanner s = new Scanner(System.in);
System.out.println("使用next 接收");
//判断用户有没有输入字符串
if (s.hasNext()){
String str=s.next();//程序会等待用户输入完毕
//用next接收
System.out.println("输入的内容为:"+str);
}
//凡是属于IO流的类不关闭会一直浪费资源,要养好良好的习惯用完就关
s.close();
2.顺序结构
语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的-种基本算法结构。
3.选择结构
◆if单选择结构
if(布尔表达式){
//如果布尔表达式为true将执行的语句
}
◆if双选择结构
if(布尔表达式){
//如果布尔表达式为true将执行的语句
}else{
//果布尔表达式为false将执行的语句
}
◆if多选择结构
if(布尔表达式1){
//如果布尔表达式1为true将执行的语句
}else if(布尔表达式2){
//如果布尔表达式2为true将执行的语句
}else if(布尔表达式3){
//如果布尔表达式3为true将执行的语句
}else{
//果布尔表达式为false将执行的语句
}
/*if语句至多有1个else 语句,else 语句在所有的else if语句之后。.
if语句可以有若干个else if语句,它们必须在else 语句之前。
一旦其中一个 else if语句检测为true,其他的else if以及else 语句都将跳过执行。*/
◆嵌套的if结构
if(布尔表达式1){
如果布尔表达式1的值为true执行代码
if(布尔表达式2){
如果布尔表达式2的值为true执行代码
}
}
◆switch多选择结构
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
//case穿透//switch匹配一个具体的值
//反编译 java---class(字节码文件)---反编译可以用(IDEA)
//JDK7的新特性:表达式结果可以是字符串!!
//字符串的本质还是数字
4.循环架构
while循环
只要布尔表达式为true,循环就会-直执行下去。
少部程序需要一直持续下去比如服务器请求响应
避免死循环
while(布尔表达式){
//循环内容
}
int a=1;//初始化条件
while (a<=100){//条件判断
System.out.println(a);//循环体
a+=2;//迭代
}
System.out.println("While循环结束");
do…while循环
do…while循环与while循环非常相似但不同的是do…while至少会执行一次
do{
//代码语句
}while(布尔表达式);
◆While和do-While的区别
while先判断后执行。dowhile是先执行后判断!
◆Do…while总是保证循环体会被至少执行一次!这是他们的主要差别。
fot循环
1.数组概述
数组的定义
◆数组是相同类型数据的有序集合. .
◆数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。
◆其中,每- 个数据称作-个数组元素,每个数组元素可以通过-一个下标来访问它们.
2.数组声明创建
数组的四个基本特点
其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
◆其元素必须是相同类型,不允许出现混合类型。
◆数组中的元素可以是任何数据类型,包括基本类型和引用类型。
◆数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。
数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,
数组对象本身是在堆中的。
首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法
如何创建数组
int[] a;//首选的方法
int a[]; // 效果相同,但不是首选方法
◆Java语言使用new操作符来创建数组,语法如下:
a =new int[10]
◆数组的元素是通过索引访问的,数组索引从0开始。
◆获取数组长度
a.1ength
内存分析与初始化
数组越界错误javaJang. ArrayIndexOutOfBoundsException
//静态初始化:创建+赋值
int[] a =4{1,2,3,4,5,6,7,8};
System. out.println(a[e]);
//动态初始化:包含默认初始化
int[] b = new int[10] ;
b[0] = 10;
b[1] = 10;
System. out. println(b[0]);
System. out . print1n(b[1]);
System . out . print1n(b[2]);
System. out. println(b[3]);
数组边界
◆下标的合法区间: [O, length-1],如果越界就会报错;
public static void main(String[] args) {
int[] a=new int [2] ;
System. out. println(a[2]);
}
◆ArrayIndexOutOfBoundsException :数组下标越界异常!
◆小结:
数组是相同数据类型(数据类型可以为任意类型)的有序集合
◆数组也是对象。数组元素相当于对象的成员变量
◆数组长度的确定的,不可变的。如果越界,则报: ArrayIndexOutofBounds
3.数组使用
For-Each循环
int a[]={10,2,3};
for (int i : a) {
System.out.println(i);
4.多维数组
5.Arrays 类
6.稀疏数组
for(初始化;布尔表达式;更新) {
//代码语句
}
//初始化 //条件判断//迭代
for (int b=0;a<=100;a++){
System.out.println();
}
System.out.println("For循环结束");
for(;;){//死循环代码
};
int[] s= {10, 20, 30, 40, 50,};//定义了一个数组
//遍厉数组的元素
for (int x:s){
System.out.println(x);
5.break&continue
break在任何循环语句的主体部分,均可用break控制循环的流程。
break用于强行退出循环,不执行循环中剩余的语句。(break 语句也在switch调句中使用)
continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
6.练习
99乘法表
for (int i = 1; i <= 9; i++) {
for (int i1 = 1; i1 <= i; i1++) {
System.out.print(i1+"*"+i+"="+(i*i1)+"\t");
}
System.out.println("\n");
//1.先打印第一列
//2.把固定的1再用循环包起来
//3去掉重复项 i<=i1
//4.调整样式