一、流程控制语句补充
1.switch语句
格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
注意事项:
表达式:这个地方的取值是有限定的
byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是字符串
面试题:
switch语句的表达式可以是byte吗?可以是long吗?可以是String吗?
可以是byte,long不行,jdk7以后可以是String。
2.循环语句
注意事项:
最简单的死循环格式:while(true){...} for( ; ; ){}
3.控制跳转语句
(1)break:中断的意思
A:用在循环和switch语句中,离开此应用场景无意义。
B:作用
a:跳出单层循环
b:跳出多层循环,需要标签语句的配合
(2)continue:继续
A:用在循环中,离开此应用场景无意义。
B:作用
a:跳出单层循环的一次,可以继续下一次
C:填空题
for(int x=1; x<=10; x++) {
if(x%3 == 0) {
//补齐代码
}
System.out.println("Java基础班");
}
如何让控制台输出2次:Java基础班
如何让控制台输出7次:Java基础班
如何让控制台输出13次:Java基础班
(3)return:返回
A:用于结束方法的,后面还会在继续讲解和使用。
B:一旦遇到return,程序就不会在继续往后执行。
二、函数(方法)
1.定义:完成特定功能的代码块
2.格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
方法体语句;
return 返回值;
}
3.注意事项
A:方法不调用不执行
B:方法之间是平级关系,不能嵌套定义
C:如果方法有明确的返回值类型,就必须有return语句返回。
4.方法重载
在同一个类中,方法名相同。参数列表不同(参数的数据类型或参数个数不同),与返回值的数据类型无关。
三、数组
1.定义:存储多个同一种数据类型的元素的容器
2.初始化:
A:动态初始化
只给长度,系统给出默认值
举例:int[] arr = new int[3];
B:静态初始化
给出值,系统决定长度
举例:int[] arr = new int[]{1,2,3};
简化版:int[] arr = {1,2,3};
3.java的内存分配
A:栈 存储局部变量
B:堆 存储所有new出来的
C:方法区
D:本地方法区
E:寄存器(CPU使用)
注意:
a:局部变量 在方法定义中或者方法声明上定义的变量。
b:栈内存和堆内存的区别
栈:数据使用完毕,就消失。
堆:每一个new出来的东西都有地址
每一个变量都有默认值:
byte,short,int,long 0
float,double 0.0
char '\u0000'
boolean false
引用类型 null
数据使用完毕后,在垃圾回收器空闲的时候回收。
4.数组内存图
5.二分查找法(前提:数组中的元素必须有序)
public static int halfSeach_2(int[] arr,int key){ int min,max,mid; min = 0; max = arr.length—1; mid = (max+min)>>1; //(max+min)/2; while(arr[mid]!=key){ if(key>arr[mid]){ min = mid + 1; }else if(key<arr[mid]) max = mid — 1; if(max<min) return —1; mid = (max+min)>>1; } return mid; }