04day_Java基础语法

JAVA学习网 2017-12-15 08:19:04

 

 

1、选择语句switch

  ①格式:

  switch(表达式){

    case  常量1:

      要执行的语句;

    break;

    case  常量2:

      要执行的语句;

    break;

    case  常量3:

      要执行的语句;

    break;

    default:

    要执行的语句

    break;

  }

执行流程:表达式和case后面的常量进行比较,和哪个case后的常量相同就执行哪个case后面的程序,遇到break,就全结束。

switch语句中的表达式的数据类型是有要求的。jdk1.7 数据类型接受byte、short、int、char、enum(枚举)、String(1.7新增)。

 1 public class SwitchDemo{
 2     public static void main(String args[]){
 3         int week=6;
 4         switch(week){
 5             case 1:
 6                 System.out.println("星期一");
 7             break;
 8             
 9             case 2:
10                 System.out.println("星期二");
11                 break;
12                 
13             case 3:
14                 System.out.println("星期三");
15                 break;
16                 
17             case 4:
18                 System.out.println("星期四");
19                 break;
20                 
21             case 5:
22                 System.out.println("星期五");
23                 break;
24                 
25             case 6:
26                 System.out.println("星期六");
27                 break;
28                 
29             case 7:
30                 System.out.println("星期七");
31                 break;
32                 
33             default:
34                 System.out.println("星期不存在!");
35         }
36     }
37 }

运行结果:

②case穿透

  switch特性:case穿透

  case后面没有break,程序就会一直向下穿透;

  当case后面的常量和switch中数据相同,没有break,一直向下穿透。

 1 public class SwitchDemo_1{
 2     public static void main(String args[]){
 3         int week=5;
 4         switch(week){
 5             case 1:
 6             case 2:
 7             case 3:
 8             case 4:
 9             case 5:
10                 System.out.println("工作日!");
11             break;
12                 
13             case 6:
14             case 7:
15                 System.out.println("休息日!");
16             break;
17             
18             default:
19                     System.out.println("星期不存在!");
20         }
21     }
22 }

运行结果:

 

2、数组

(一)

①数组的定义一:

  数据过多,定义变量代码重复多,写很麻烦,数据多了存数组。

  格式:

  数据类型 [ ] 数组名 =new 数据类型 [存储元素的个数];

  元素个数就是数组中可以存储多少个数据(恒定,定长)

  JVM对自己的内存进行了划分,分成5个区域:

  (1)寄存器:内存和CPU之间;

  (2)本地方法栈:JVM调用了系统中的功能;

  (3)方法和数据共享:运行时期class文件进入的地方;

  (4)方法栈:所有的方法运行的时候进入的地方;

  (5)堆:存储的是容器和对象。

  arr引用类型,保存的数据实质上是内存中的地址

1 public static void main(String args[]){
2         int[] arr=new int[3];//该数组可以存储三个元素
3         System.out.println(arr);
4         }

运行结果:

数组的定义二:

  数据类型[ ]  变量名 =new 数据类型[ ]{元素1,元素2,元素3} ;

  注意事项:new 后面的中括号中不允许写任何内容,写了就编译失败。

  

1 public class ArrayDemo_2{
2     public static void main(String args[]){
3         //定义数组的同时对元素进行赋值
4         int[] arr=new int[] {1,2,3,4,5,7};
5         System.out.println(arr.length);
6         System.out.println(arr[5]);
7     }
8 }

运行结果:

数组的定义三:

  数据类型[ ] 变量名={元素1,元素2,元素3};

 

 1 public class ArrayDemo_2{
 2     public static void main(String args[]){
 3         //定义数组的同时对元素进行赋值
 4         int[] arr=new int[] {1,2,3,4,5,7};
 5         System.out.println(arr.length);
 6         System.out.println(arr[5]);
 7         System.out.println("------------------------------------------");
 8         
 9         //直接大括号赋值,定义数组
10         int[] arr2={0,2,4,6,8};
11         System.out.println(arr2.length);
12         System.out.println(arr2[1]);
13     }
14 }

运行结果:

 

 

②使用索引访问数组的元素

  数组是一个容器,:存储到数组中的每个元素都有自己的编号,自动编号:最小值是0,最大值是长度-1;

  索引(index)、下标、角标;

  访问数组存储的元素,必须依赖索引,公式:数组名[索引]

 

 1 public class ArrayDemo{
 2     public static void main(String args[]){
 3         int[] arr=new int[3];//该数组可以存储三个元素
 4         System.out.println(arr);
 5         
 6         //通过索引的方式,访问数组中的三个元素
 7         System.out.println(arr[0]);//第一个
 8         System.out.println(arr[1]);//第二个
 9         System.out.println(arr[2]);//第三个
10         }
11 }

运行结果:

③数组的length属性

  数组的length属性,就是数组的长度;

  公式:数组名.length

·   数组的最小索引是0,最大索引数组.length-1;

 1 public class ArrayDemo_1{
 2     public static void main(String args[]){
 3         int[] arr=new int[3];//该数组可以存储三个元素
 4         System.out.println(arr);
 5         
 6         //通过索引的方式,访问数组中的三个元素
 7         System.out.println(arr[0]);//第一个
 8         System.out.println(arr[1]);//第二个
 9         System.out.println(arr[2]);//第三个
10         
11         System.out.println("数组的长度"+arr.length);
12         }
13 }

运行结果:

④为数组的元素赋值

1 public class ArrayDemo_3{
2     public static void main(String args[]){
3         int[] arr=new int[5];
4         //将1索引上的元素赋值3
5         arr[1]=3;
6         System.out.println(arr[1]);
7     }
8 }

运行结果:

⑤数组的遍历

  通过索引的方式将数组中的每个元素分别获取出来;

  依赖索引,规律从0开始,一直在自动增长,到达length-1

  使用循环实现:

    for  知道循环次数,计数器思想;

    while 不确定次数。

1 public class ArrayDemo_4{
2     public static void main(String args[]){
3         int[] arr={2,4,6,8,10};
4         //数组遍历
5         for(int i=0;i<arr.length;i++){//或者写成i<=arr.length-1
6             System.out.println(arr[i]);
7         }
8     }
9 }

运行结果:

⑥数组中常见的异常

(1)数组的越界异常 java.lang.ArrayIndexOutOfBoundsException: 3

  超过最大索引或者写成负数

1 public class ArrayDemo_4{
2     public static void main(String args[]){
3         int[] arr={2,4,6};
4         //数组的越界异常
5         System.out.println(arr[3]);
6     }
7 }

运行结果:

(2)空指针异常 java.lang.NullPointerException

 1 public class ArrayDemo_4{
 2     public static void main(String args[]){
 3         //int[] arr={2,4,6};
 4         //数组的越界异常
 5         //System.out.println(arr[3]);
 6         
 7         //空指针异常
 8         int[] arr2={1,3,5};
 9         System.out.println(arr2[2]);
10         arr2=null;
11         System.out.println(arr2[3]);
12     }
13 }

运行结果:

⑦数组获取最值

  找出数组中的最大值

  (1)定义变量,保存数组中,0索引上的元素;int max=arr[0];

  (2)max和数组中其他元素进行比较

      数组遍历

      max比其他索引上的元素小,max记录下较大的数

  (3)数组遍历完成后,max记录的就是数组的最大值

 1 public class ArrayDemo_5{
 2     public static void main(String args[]){
 3         int [] arr={2,3,5,8,6,2};
 4         //定义变量记录数组中0索引上的元素
 5         int max=arr[0];
 6         //遍历数组,获取所有的元素和变量max比较
 7         for(int i=1;i<arr.length;i++){
 8             //变量max和数组中的每个元素进行比较
 9             if(max<arr[i]){
10                 max=arr[i];
11             }    
12         }
13         System.out.println(max);
14     }
15 }

运行结果:

 

3、二维数组

①二维数组的定义

  数组中的数组,数组里面存储的还是数组;

  定义方式和一维数组很相似;

  第一种方式:

    int[ ] [ ] arr=new [3][4];

  其中,[3]表示二维数组中,有三个一维数组;[4]表示三个一维数组中,每个数组的长度是4

1 public class ArrayArrayDemo{
2     public static void main(String args[]){
3         int [] [] arr=new int[3][4];
4         System.out.println(arr);
5         System.out.println(arr[1]);
6         System.out.println(arr[2][3]);
7     }
8 }

 

    第二种方式:

    int[ ] [ ] arr=new [3][ ];

  二维数组中定义三个一维数组,每个一维数组长度没有指定,必须要new。

    arr[0]=new int[5];

    arr[1]=new int[4];

  第三种方式:

    int[ ] [ ] arr={{1,4},{3,5,8},{0,9,8}};

 ②二维数组的访问

   

1 public class ArrayArrayDemo_1{
2     public static void main(String args[]){
3         int[] [] arr={{1,2,3},{4,5},{6,7,8,9},{0}};
4         System.out.println(arr[2][1]);//打印7
5         System.out.println(arr[3][0]);//打印0
6     }
7 }

运行结果:

③二维数组的遍历

  遍历:for循环,遍历二维数组;遍历过程中,for遍历一维数组。

 1 public class ArrayArrayDemo_2{
 2     public static void main(String args[]){
 3         int[] [] arr={{1,2,3},{4,5},{6,7,8,9},{0}};
 4         //外循环,遍历二维数组
 5         for(int i=0;i<arr.length;i++){
 6             //内循环,遍历每个一维数组
 7             for(int j=0;j<arr[i].length;j++){
 8                 System.out.print(arr[i][j]);
 9             }
10             System.out.println();//换行
11         }
12     }
13 }

运行结果:

二维数组求和

 1 public class ArrayArrayDemo_3{
 2     public static void main(String args[]){
 3         int[] [] arr={{1,2,3},{4,5},{6,7,8,9},{0}};
 4         int sum=0;
 5         //外循环,遍历二维数组
 6         for(int i=0;i<arr.length;i++){
 7             //内循环,遍历每个一维数组
 8             for(int j=0;j<arr[i].length;j++){
 9                 sum +=arr[i][j];
10             }
11         }
12         System.out.println(sum);
13     }
14 }

运行结果:

4、公司销售综合练习

  第一个小组销售额为{11,22}万元;

  第二个小组的销售额为{21,22,23}万元;

  第三个小组的销售额为{31,32,33,34}万元.

  求和:每个小组求和

     所有小组求和

 1 public class ArrayArrayDemo_4{
 2     public static void main(String args[]){
 3         int[] [] arr={{11,12},{21,22,23},{31,32,33,34}};
 4         int sum=0;//所有元素的求和
 5         int groupSum=0;//每个一维数组的求和
 6         for(int i=0;i<arr.length;i++){
 7             //内循环,遍历每个一维数组
 8             for(int j=0;j<arr[i].length;j++){
 9                 //一维数组求和
10                 groupSum +=arr[i][j];
11             }
12             System.out.println("第"+(i+1)+"小组销售额为:"+groupSum);    
13             sum+=groupSum;            
14             groupSum=0;
15         }
16         System.out.println("总销售额:"+sum);    
17     }
18 }

运行结果:

 

5、随机点名器

  需求分析:

  1、存储全班同学的姓名

  2、预览所有人的姓名

  3、随机出一个人的姓名

 1 import java.util.Random;
 2 public class CallName{
 3     public static void main(String args[]){
 4         //存储名字到数组中
 5         String [] names={"张三","李四","王五","李六","赵七"};
 6         //预览:遍历数组,打印所有姓名
 7         for(int i=0;i<names.length;i++){
 8             System.out.println(names[i]);
 9         }
10         System.out.println("------------------------------");
11         //随机出一个人的名字
12         Random ran=new Random();
13         //随机数,范围必须是0-数组的最大索引
14         int index=ran.nextInt(names.length);//index 就是随机数,作为索引
15         System.out.println(names[index]);
16     }
17 }

运行结果:

 

阅读(757) 评论(0)