目录
一. 数组
1. 数组的概念
数组的本质上就是让我们能"批量"创建相同类型的变量。
2. 数组的声明
声明一个数组类型的变量,使用数组类型“数据类型[] 变量名”的语法 或者 “数据类型 变量名[](不推荐)”
●数据类型:可以是任意的数据类型
●数组名:同变量一致
声明方式:
●方式一:数据类型[] 数组名
int[] score1;
●方式二:数据类型 数组名[](不推荐)
int score2[];
3. 数组的初始化
初始化操作:(开辟了一片空间用来存放相同类型的数据)
3.1 动态初始化
方式1:先声明,再创建
●数据类型[] 数组名;
●数组名=new 数组数据类型[长度];int[] score1; score1 = new int[10];
方式2:声明和初始化同时操作
●数据类型[] 数组名=new 类型[长度] 声明并创建数组int[] score3 = new int[8];
●赋值:数组名[下标]=具体值;
score3[0] = 88;
●取值: 数据类型 变量名 = 数组名[下标];
int fenshu = score3[0];
●获取数组的长度: 数组名.length
int[] score = { 99, 23, 87, 77 }; System.out.println(score.length);//4
3.2 静态初始化
方式1:先声明,再创建
●数据类型[] 数组名;
●数组名= new 数组数据类型[]{数据1,数据2,数据3};int[] score; score = new int[] { 88, 98, 78, 50, 65 }; int fenshu = score[0]; System.out.println(fenshu);//88
方式2:声明的同时并初始化数组
●数据类型[] 数组名=new数据类型[]{元素0,元素1,...}
int[] score1 = new int[] { 99, 32, 81, 78, 67 }; System.out.println(score1[1]);//32
3.3 静态省略初始化
●数据类型[] 数组名={元素0,元素1.....}
int[] score = { 99, 23, 87, 77 }; System.out.println(score[0]); // 不能拆分成两步 // int[] score1; // score1={99,23,87,77};
4. 默认值
4.1 整数
整数默认值为0
//整数默认值为0 int[] age =new int[10]; //打印地址 [I@15db9742 [数据类型@地址 System.out.println(age);//[I@15db9742 System.out.println(age[0]);//0
快速打印数组中的元素 Arrays.toString(数组名)
//快速打印数组中的元素 Arrays.toString(数组名) System.out.println(Arrays.toString(age));//[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
4.2 浮点数
浮点数默认值为0.0
//浮点数默认值为0.0 double[] d = new double[10]; System.out.println(d);//[D@6d06d69c System.out.println(d[0]);//0.0
4.3 char
char默认值为不可见字符
//char默认值为不可见字符 char[] ch = new char[10]; System.out.println("字符数组地址"+ch);//字符数组地址[C@7852e922 System.out.println("字符数组中的默认元素"+ch[0]);
4.4 boolean
boolean默认值为false
//boolean默认值为false boolean[] b = new boolean[10]; System.out.println(b);//[Z@4e25154f System.out.println(b[0]);//false
4.5 引用类型
引用数据类型默认值null
//引用数据类型默认值null String[] strs = new String[5]; System.out.println(strs);//[Ljava.lang.String;@70dea4e System.out.println(strs[0]);//null
5. 数组中的特殊值:0与null
1.针对于数组本身
●数组长度为0,空数组,但是为其分配了内存空间的位置
int[] a = new int[0]; int[] b = new int[]{};
●数组为null,系统没有为其分配其内存空间
//1.针对于数组本身: null 0 //数组是引用数据类型,引用数据类型的值可以为null //未开辟空间 String[] name = null; System.out.println(name);//null
2.数组元素内容
//2.数组的元素为0或者为null int[] age = new int[10]; System.out.println(age[0]);//0 String[] country = new String[2]; System.out.println(country[0]);//null
二. 数组进阶
见java基础06
二. 输出和输入语句
●System.out.print();
●System.out.println();(见java基础01)
●System.out.printf(); format 格式化输出
1. 格式化输出
●格式化输出使用System.out.printf(),printf是print format的缩写,表示格式化输出。
●书写格式:通过使用占位符%?,printf()可以把后面的参数变量,格式化成指定格式
// %? 进来占位 // %d 格式化输出整数 整数类型 // %s 格式化输出字符串 任意数据类型 // %f 格式化输出浮点数 浮点数.2f // %e科学计数法输出浮点数 浮点数 // %x格式化输出十六进制的整数 整数数据类型 String name = "zkt"; int age = 22; double money = 878212313.123; System.out.println("姓名为: "+name+"年龄为: "+"余额:"+money);//姓名为: zkt年龄为: 余额:8.78212313123E8 System.out.printf("姓名为%s 年龄为%x 余额为%.2f\n",name,age,money);//姓名为zkt 年龄为16 余额为878212313.12 System.out.printf("姓名为%s 年龄为%d 余额为%e\n",name,age,money);//姓名为zkt 年龄为22 余额为8.782123e+08
一些占位符:
占位符
说明
适合类型
%d
格式化输出整数
整型
%x
格式化输出十六进制整数
整型
%f
格式化输出浮点数
浮点型
%e
格式化输出科学计数法表示的浮点数
浮点型
%s
格式化字符串
任意类型
2. 输入
●next() :
(1)只能读取有效字符,对有效字符出现之前的所有空格,next() 将自动忽略。
(2)从有效字符出现开始,将其后输入的空格键、Tab键和Enter键等视为分隔符或结束符。
●nextLine():
(1)读取Enter键出现之前的所有字符,包括带空格的字符。
(2)只能以Enter键作为结束符
//创建一个可以从控制台输入内容sc对象 Scanner sc = new Scanner(System.in); System.out.println("请输入一个字符串1 nextLine()"); String str1 = sc.nextLine();//从控制台输入字符 ,一行字符 System.out.println(str1); System.out.println("请输入一个字符串2 next()"); String str2 = sc.next();//从控制台输入字符 System.out.println(str2);
2.1 整数
Scanner sc = new Scanner(System.in); System.out.println("请输入一个整数"); int a = sc.nextInt(); System.out.println(a);
2.2 浮点数
Scanner sc = new Scanner(System.in); System.out.println("请输入一个浮点数"); float f = sc.nextFloat(); System.out.println(f);
[注]:Scanner会自动转换数据类型,因此不必手动转换。
2.4 字符
Scanner sc = new Scanner(System.in); System.out.println("请输入一个字符"); char ch = sc.next().charAt(0); System.out.println(ch);
三. if 条件分支语句
if语句的基本语法是:根据if的计算结果(true还是false),JVM决定是否执行if语句块(即花括号{}包含的所有语句)。
1. 单分支结构
// 单分支结构 // if(条件表达式---boolean){ // 语句1; ---- 条件表达式的结果为true执行 // } // 注意1:代码块中可以包含多条语句 // 注意2:if代码块中的语句只有1条的时候{}可以省略 int score = 61; if (score >= 60) { System.out.println("及格了"); System.out.println("获得鸡腿"); } System.out.println("end");
2. 双分支结构
// 双分支 // if(布尔表达式1){ // 条件1成立时,需要做的事情 // }else{ // 条件1不成立时,需要做的事情 // } // else里面如果只有一条语句的时候{}可以省略,不推荐 int score = 44; if (score >= 60) { System.out.println("及格了"); System.out.println("获得鸡腿"); } else { System.out.println("不合格"); System.out.println("挨打~"); }
3. 多分支结构
// 多分支 // if(布尔表达式1){ // 条件1成立时,需要做的事情 // }else if(布尔表达式2){ // 条件2成立时,需要做的事情 // }......else{ // 不满足上述所有条件做的事情 //} int score = 76; if (score >= 80) { System.out.println("优秀"); } else if(score>=70){ System.out.println("良好"); } else if(score>=60){ System.out.println("及格"); }else { System.out.println("不及格"); }
4. 注意事项
1. if...else 省略{}
●省略{},默认的语句块的内容就是紧跟着的第一条语句,; 来识别第一条语句
●省略{}带来的悬垂问题.此时else和离他最近的if来进行匹配--建议不要省略{}
int scoreYu = 70; int scoreMa = 70; if (scoreYu>=60) if (scoreMa>=60) System.out.println("五一休息"); else System.out.println("不合格");
2.注意分号问题------分号; 代表结束
//注意分号问题 int score = 50; if (score>=60) ; //代码块 { System.out.println("及格"); }
3.浮点数不能精确表达
//注意事项,浮点数不能精确表达 double x =1-9.0/10; //误差法 if ((Math.abs(x-0.1)<0.0001)) { System.out.println("Yes"); }else { System.out.println("No"); }
4.== 和 equals 区别
如果是字符串要使用equals进行内容比较,常量写在前面
== 基本数据类型 值是否相等
引用数据类型 地址的值是否相等
equals() 只能用在引用数据类型上,String-比较的是内容是否相等