1.switch语句与case穿透
格式:
switch(表达式或某个值){
case 值1:
语句1;
break;
case 值2:
语句2;
break;
...
default:
语句n;
break;
}
1)switch后面的表达式的数据类型可以是基本数据类型:byte,short,char,int;JDK5以后可以是枚举类型;JDK7以后可以是String类型;
2)case后只能跟常量,不能跟变量;
3)break不能省略,否则会造成case穿透;
4)switch语句的结束条件:遇break结束或语句执行到末尾;
5)default可以在switch语句中的任意位置,不影响执行流程,当所有case语句都不匹配,执行default.
default在最后时,可省略break.
//case穿透:
public class Demo1 {
public static void main(String[] args) {
int a = 1;
int b = 2;
switch(a){
case 1:
b++;
case 2:
b++;
default:
b++;
}
System.out.println(b); //5
}
}
//default可以在switch语句中的任意位置,不影响执行流程
public class Demo1_2 {
public static void main(String[] args) {
int a = 1;
int b = 2;
switch(a){
default:
b++;
case 1:
b++;
case 2:
b++;
}
System.out.println(b); //4
}
}
2.for循环和while循环的比较
相同点:都能体现循环思想,解决代码冗余问题.
不同点:1)结构不同;
2)使用场景不同;循环次数已知优先使用for循环;循环次数未知用while循环.
3)从内存角度,for循环更节省内存资源,当循环结束后里面的变量被释放;
while循环结束后仍可访问变量,因此较耗费资源.具体实例如下:
//while循环结束可以访问变量
public class Demo2{
public static void main(String[] args) {
int sum = 0;
int x = 1;
while(x<5){
sum += x;
x++;
}
System.out.println(x);//5
}
}
//for循环结束不能访问变量x
public class Demo2_1 {
public static void main(String[] args) {
int sum = 0;
for(int x = 1;x<5;x++ ){
sum += x;
}
System.out.println(x);//错误:找不到符号
}
}
3.跳转控制语句
1)break:循环语句或switch语句中使用,表示中断,结束.
2)continue:循环语句中使用,表示结束当前循环,立即进入下一循环.
3)return:很少单独使用,一般在方法中用作结束方法.
public class Demo3 {
public static void main(String[] args) {
for(int x = 1;x<10;x++){
if(x==3){
System.out.println("你好");
return;//很少单独使用
}
System.out.println(x); //3-9不再输出
}
}
}
4.死循环
两种格式:
第一种:
for(;;){
循环体;
}
第二种:
while(true){
循环体;
}
//应用死循环,实现猜数字游戏
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
guessNumber();
}
public static void guessNumber(){
int answer = (int)(Math.random()*100+1);
int n = 0;
while(true){
n++;
System.out.println("请您猜一个数(1-100)");
Scanner sc = new Scanner(System.in);
int guess = sc.nextInt();
if(guess == answer){
System.out.println("恭喜您,在第"+n+"次猜对了");
break;//出口条件
}else if(guess>answer){
System.out.println("猜大了");
}else {
System.out.println("猜小了");
}
}
}
}
5.方法的定义格式
有返回值的方法:
public static 返回值类型 方法名(形式参数类型1 变量名1,形式参数类型2 变量名2...){
//完成业务逻辑
}
无返回值的方法:
public static void 方法名(形式参数类型1 变量名1,形式参数类型2 变量名2...){
//完成业务逻辑
}
6.方法重载
方法名相同,形式参数列表不同,与返回值无关的一组方法.
7.什么是数组?创建数组的格式有哪些
数组是可以存储同一种类型元素的容器.
创建数组的格式:
动态初始化:
数据类型[] 数组名 = new 数据类型[数组长度];
数据类型 数组名[] = new 数据类型[数组长度];
静态初始化:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};
数据类型 数组名[] = new 数据类型[]{元素1,元素2,...};
简写为 数据类型[] 数组名 = {元素1,元素2,...};
数据类型[] 数组名 = {元素1,元素2,...};
8.冒泡排序思想以及代码体现
冒泡排序思想:相邻两元素比较,大者往后放,第一次比较完毕,数组最大值出现在最大索引值处.
public class BubbleSort {
public static void main(String[] args) {
int[] a ={1,2,6,3,7,4};
System.out.println("排序前:");
print(a);
reverse(a);
System.out.println("排序后:");
print(a);
}
public static void print(int[] arr){
System.out.print("[");
for(int x = 0;x<arr.length-1;x++){
System.out.print(arr[x]+", ");
}
System.out.println(arr[arr.length-1]+"]");
}
public static void reverse(int[] a){
for(int x =1;x<a.length;x++){
for(int y = 0;y<a.length-x;y++){
if(a[y]>a[y+1]){
int temp = a[y];
a[y] = a[y+1];
a[y+1] =temp;
}
}
}
}
}
9.基本类型作为形式参数和引用类型作为形式参数的特点
基本类型作为形式参数,形式参数的改变不会影响实际参数的改变;
举例:
public class Demo9 {
public static void main(String[] args) {
int a = 1;
int b = 2;
change(a,b);
System.out.println(a);
System.out.println(b);//a,b值未改变
}
public static void change(int a,int b){
a = b*2;
b = b/2;
}
}
引用类型(除字符串类型外)作为形式参数,形式参数的改变直接影响实际参数的改变;
举例:
public class Demo9_1 {
public static void main(String[] args) {
int[] arr = {1,2,3};
change(arr);
System.out.println(arr[0]);//2
System.out.println(arr[1]);//4
System.out.println(arr[2]);//6,数组中的3个元素改变
}
public static void change(int[] arr){
for(int x = 0; x<3;x++){
arr[x]*=2;
}
}
}
10.面向对象的思想特点和三大特征
面向对象的思想特点:
1)更符合现实生活中人们的思想行为习惯;
2)让复杂的事情简单化;
3)让我们从执行者变为指挥者.
面向对象的三大特征:
封装,继承,多态.