04day_Java基础语法
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,一直向下穿透。
public class SwitchDemo_1{
public static void main(String args[]){
int week=5;
switch(week){
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("工作日!");
break;
case 6:
case 7:
System.out.println("休息日!");
break;
default:
System.out.println("星期不存在!");
}
}
}运行结果:

2、数组
(一)
①数组的定义一:
数据过多,定义变量代码重复多,写很麻烦,数据多了存数组。
格式:
数据类型 [ ]数组名 =new 数据类型[存储元素的个数];
元素个数就是数组中可以存储多少个数据(恒定,定长)
JVM对自己的内存进行了划分,分成5个区域:
(1)寄存器:内存和CPU之间;
(2)本地方法栈:JVM调用了系统中的功能;
(3)方法和数据共享:运行时期class文件进入的地方;
(4)方法栈:所有的方法运行的时候进入的地方;
(5)堆:存储的是容器和对象。
arr引用类型,保存的数据实质上是内存中的地址
public static void main(String args[]){
int[] arr=new int[3];//该数组可以存储三个元素
System.out.println(arr);
}运行结果:

数组的定义二:
数据类型[ ]变量名=new数据类型[ ]{元素1,元素2,元素3};
注意事项:new 后面的中括号中不允许写任何内容,写了就编译失败。
public class ArrayDemo_2{
public static void main(String args[]){
//定义数组的同时对元素进行赋值
int[] arr=new int[] {1,2,3,4,5,7};
System.out.println(arr.length);
System.out.println(arr[5]);
}
}运行结果:

数组的定义三:
数据类型[ ]变量名={元素1,元素2,元素3};
public class ArrayDemo_2{
public static void main(String args[]){
//定义数组的同时对元素进行赋值
int[] arr=new int[] {1,2,3,4,5,7};
System.out.println(arr.length);
System.out.println(arr[5]);
System.out.println("------------------------------------------");
//直接大括号赋值,定义数组
int[] arr2={0,2,4,6,8};
System.out.println(arr2.length);
System.out.println(arr2[1]);
}
}运行结果:

②使用索引访问数组的元素
数组是一个容器,:存储到数组中的每个元素都有自己的编号,自动编号:最小值是0,最大值是长度-1;
索引(index)、下标、角标;
访问数组存储的元素,必须依赖索引,公式:数组名[索引]
public class ArrayDemo{
public static void main(String args[]){
int[] arr=new int[3];//该数组可以存储三个元素
System.out.println(arr);
//通过索引的方式,访问数组中的三个元素
System.out.println(arr[0]);//第一个
System.out.println(arr[1]);//第二个
System.out.println(arr[2]);//第三个
}
}运行结果:

③数组的length属性
数组的length属性,就是数组的长度;
公式:数组名.length
· 数组的最小索引是0,最大索引数组.length-1;
public class ArrayDemo_1{
public static void main(String args[]){
int[] arr=new int[3];//该数组可以存储三个元素
System.out.println(arr);
//通过索引的方式,访问数组中的三个元素
System.out.println(arr[0]);//第一个
System.out.println(arr[1]);//第二个
System.out.println(arr[2]);//第三个
System.out.println("数组的长度"+arr.length);
}
}运行结果:

④为数组的元素赋值
public class ArrayDemo_3{
public static void main(String args[]){
int[] arr=new int[5];
//将1索引上的元素赋值3
arr[1]=3;
System.out.println(arr[1]);
}
}运行结果:

⑤数组的遍历
通过索引的方式将数组中的每个元素分别获取出来;
依赖索引,规律从0开始,一直在自动增长,到达length-1
使用循环实现:
for知道循环次数,计数器思想;
while不确定次数。
public class ArrayDemo_4{
public static void main(String args[]){
int[] arr={2,4,6,8,10};
//数组遍历
for(int i=0;i<arr.length;i++){//或者写成i<=arr.length-1
System.out.println(arr[i]);
}
}
}运行结果:

⑥数组中常见的异常
(1)数组的越界异常java.lang.ArrayIndexOutOfBoundsException: 3
超过最大索引或者写成负数
public class ArrayDemo_4{
public static void main(String args[]){
int[] arr={2,4,6};
//数组的越界异常
System.out.println(arr[3]);
}
}运行结果:

(2)空指针异常java.lang.NullPointerException
public class ArrayDemo_4{
public static void main(String args[]){
//int[] arr={2,4,6};
//数组的越界异常
//System.out.println(arr[3]);
//空指针异常
int[] arr2={1,3,5};
System.out.println(arr2[2]);
arr2=null;
System.out.println(arr2[3]);
}
}运行结果:

⑦数组获取最值
找出数组中的最大值
(1)定义变量,保存数组中,0索引上的元素;int max=arr[0];
(2)max和数组中其他元素进行比较
数组遍历
max比其他索引上的元素小,max记录下较大的数
(3)数组遍历完成后,max记录的就是数组的最大值
public class ArrayDemo_5{
public static void main(String args[]){
int [] arr={2,3,5,8,6,2};
//定义变量记录数组中0索引上的元素
int max=arr[0];
//遍历数组,获取所有的元素和变量max比较
for(int i=1;i<arr.length;i++){
//变量max和数组中的每个元素进行比较
if(max<arr[i]){
max=arr[i];
}
}
System.out.println(max);
}
}运行结果:

3、二维数组
①二维数组的定义
数组中的数组,数组里面存储的还是数组;
定义方式和一维数组很相似;
第一种方式:
int[ ][ ]arr=new [3][4];
其中,[3]表示二维数组中,有三个一维数组;[4]表示三个一维数组中,每个数组的长度是4
public class ArrayArrayDemo{
public static void main(String args[]){
int [] [] arr=new int[3][4];
System.out.println(arr);
System.out.println(arr[1]);
System.out.println(arr[2][3]);
}
}第二种方式:
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}};
②二维数组的访问
public class ArrayArrayDemo_1{
public static void main(String args[]){
int[] [] arr={{1,2,3},{4,5},{6,7,8,9},{0}};
System.out.println(arr[2][1]);//打印7
System.out.println(arr[3][0]);//打印0
}
}运行结果:

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

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

4、公司销售综合练习
第一个小组销售额为{11,22}万元;
第二个小组的销售额为{21,22,23}万元;
第三个小组的销售额为{31,32,33,34}万元.
求和:每个小组求和
所有小组求和
public class ArrayArrayDemo_4{
public static void main(String args[]){
int[] [] arr={{11,12},{21,22,23},{31,32,33,34}};
int sum=0;//所有元素的求和
int groupSum=0;//每个一维数组的求和
for(int i=0;i<arr.length;i++){
//内循环,遍历每个一维数组
for(int j=0;j<arr[i].length;j++){
//一维数组求和
groupSum +=arr[i][j];
}
System.out.println("第"+(i+1)+"小组销售额为:"+groupSum);
sum+=groupSum;
groupSum=0;
}
System.out.println("总销售额:"+sum);
}
}运行结果:

5、随机点名器
需求分析:
1、存储全班同学的姓名
2、预览所有人的姓名
3、随机出一个人的姓名
import java.util.Random;
public class CallName{
public static void main(String args[]){
//存储名字到数组中
String [] names={"张三","李四","王五","李六","赵七"};
//预览:遍历数组,打印所有姓名
for(int i=0;i<names.length;i++){
System.out.println(names[i]);
}
System.out.println("------------------------------");
//随机出一个人的名字
Random ran=new Random();
//随机数,范围必须是0-数组的最大索引
int index=ran.nextInt(names.length);//index 就是随机数,作为索引
System.out.println(names[index]);
}
}运行结果:
相关推荐
<add key="RedisPath" value="127.0.0.1:6379"/> todo:这里配置自己redis的ip地址和端口号。//ReadServerList:可读的Redis链接地