复习
Day01
Java环境搭建
安装jdk与jre
配置环境变量
新建
JAVA_HOME:jdk安装路径
classpath:.
修改
path:
win10:
新建一下内容
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
win7
;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
第一个Java程序
1,创建一个文本文档
2,修改文档名称为xxx.java
3,编写以下代码
class HelloWorld{
public static void main(String[] args){
System.out.println("xxx");
}
}
4,打开dos命令框
5,进入文件所在位置
6,使用javac命令,将java文件编译为class文件
7,使用java命令运行class文件
标识符
命名法:
大驼峰:
使用:类名,接口名,枚举名,注解名...
规则:每个单词首字母大写
小驼峰
使用:方法名,变量名
规则:第一个单词首字母小写,其他单词首字母大写
全大写
使用:常量名
规则:每个字母都大写
全小写
使用:包名
规则:每个字母都小写
标识符可以使用,大写字母,小写字母,数字,特殊字符除$与_以外不可用,不能使用数字开头,不建议使用中文,不能使用关键字或保留字
关键字
概念:在java中有特殊含义的单词
如:
保留字
概念:暂时没有特殊含义的关键字
数据类型
基本数据类型
整数(整型)
byte
short
int
long
小数(浮点型)
float
double
布尔
boolean
true
false
字符
char
注意:值需要使用''包裹
如:'a','1'
特殊字符:转意字符
\\
\'
\"
\t
\n
引用数据类型
所有类都是引用数据类型
String:字符串
注意:值需要使用""包裹
如:"xxx","abc","中国","德玛西亚"
Day02
变量
作用:记录一个可以被改变的值
步骤:
1,声明
语法:数据类型 变量名;
int num;
2,赋值
语法:
变量名 = 值;
num = 10;
注意:赋值可以多次,第一次赋值称为变量的初始化
3,使用
语法:
直接使用变量名
num
特殊情况:
声明并赋值:
数据类型 变量名 = 值;
注意:同一个作用域下变量名不能重复
运算符
算数运算
+,-,*,/,%
++,--
逻辑运算
<,<=,>,>=,==,!=
&&,||,!
赋值运算
=
+=,-=,*=,/=,%=
三目运算
数据类型 变量名 = 条件表达式?值1:值2;
条件表达式:使用逻辑运算符连接,结果为boolean型的表达式称为条件表达式
执行逻辑:
当条件表达式结果为true,取值1,赋值给变量
当条件表达式结果为false,取值2,赋值给变量
位运算
字符串连接符
+
注意:所有数据类型与字符串连接都是字符串
字符串比较内容是否相同
boolean 变量名 = 字符串/字符串变量.equals(字符串/字符串变量);
当变量值为true时,表示两个字符串内容相同,反之不相同
分支语句
作用:判断
分类:
if
switch
if与switch的区别吧
if可以判断区间,也可以判断相等
switch只能判断值相等
if
语法:
if(条件表达式1){
当条件表达式1为真,执行此处代码
}else if(条件表达式2){
当条件表达式2为真时,执行此处代码
}else if(条件表达式3){
当条件表达式3为真时,执行此处代码
}
...
else if(条件表达式n){
当条件表达式n为真时,执行此处代码
}else{
当以上条件都为false时,执行此处代码
}
switch
语法:
switch(变量名){
case 值1:
当变量等于值1,执行此处代码;
break;
case 值2:
当变量等于值2,执行此处代码;
break;
...
case 值n:
当变量等于值n,执行此处代码;
break;
default:
当变量值不等于以上值时,执行此处代码
break;
}
键盘录入
对应的类:Scanner
步骤:
1,导包
2,创建对象
Scanner 变量名1 = new Scanner(System.in);
3,等待用户输入
字符串
String 变量名2 = 变量名1.next();
整数
int 变量名3 = 变量名1.nextInt();
Day03
循环语句
作用:重复执行一段代码
分类:
while
do while
for
while:
语法:
while(条件表达式){
当条件表达式为真,执行此处代码
执行完毕后,再次判断条件表达式,如果为真,继续执行此处代码
如果为假,结束循环
}
do while
语法:
do{
循环体
}while(条件表达式);
执行流程:
先执行循环体,在判断条件表达式是否为真,如果为真,继续执行循环体,如果为假结束循环
while与do while的区别:
while:先判断在执行
do while:先执行在判断
for:
语法:
for(表达式1;条件表达式2;表达式3){
循环体4
}
表达式1:初始化变量
条件表达式2:条件
表达式3:改变变量
循环体4:重复执行的代码
执行流程:
1,2,4,3,2,4,3,...,2
流程控制语句
break:跳出当前循环
continue:跳过本次循环
Day04
方法
作用:封装一段代码
优点:
1,保护内部
2,降低耦合度
3,方便使用
步骤:
1,定义
2,调用
定义:
public static 返回值类型 方法名(形参列表){
方法体
}
返回值类型:
如果没有返回值写void,如果有返回值,写返回值的数据类型
如果编写了返回值类型,那么在方法体结束时必须有返回值
方法名:
自定义
形参列表:声明的多个变量,每个变量使用,号隔开,可有可无
方法体:封装的代码,如果方法体中没有return,那么当方法体中代码执行完毕后,也会结束
return:结束方法的关键字
return xxx:表示结束方法并返回xxx,那么xxx就是返回值
如:
//定义一个方法计算两数之商,并返回商
public static double div(double a,double b){
if(b == 0){
return 0;
}
double c = a / b;
return c;
}
定义位置:类中,方法以外
class Test{
//类中,方法以外
public static void main(String[] agrs){
//类中,方法中
}
//类中,方法以外
}
调用:
语法:
调用无返回值
方法名(实参列表);
调用有返回值
方法名(实参列表);
数据类型 变量名 = 方法名(实参列表);
注意:
1,实参列表与形参列表要一致.(长度一致,类型一致,顺序一致)
2,每次调用方法时,都会执行一次方法体中的代码
特殊情况:
多重调用
重载
同一个类中,方法名相同,形参列表不同
递归
方法的方法体中,调用该方法
Day05:数组01
作用
记录一组数据类型相同的数据
特点:长度不可变
名词
长度:数组中最大可存储的元素个数
元素:数组中存储单个值
下标(索引):元素在数组中的位置,从0开始,到长度-1结束
步骤
声明
语法:
数据类型[] 数组名;
数组名就是数组的变量名
如:
int[] ages;
String[] names;
double[] moneys;
创建
动态创建
特点:声明可以与创建分开
语法:
不带值
数组名 = new 数据类型[长度];
带值
数组名 = new 数据类型[]{值1,值2,值3,...};
注意:创建时值的个数就是数组的长度
声明并创建:
不带值
数据类型[] 数组名 = new 数据类型[长度];
带值
数据类型[] 数组名 = new 数据类型[]{值1,值2,值3,...};
注意:创建时值的个数就是数组的长度
静态创建
特点:必须在声明时创建
语法:
数据类型[] 数组名 = {值1,值2,值3,...};
注意:创建时值的个数就是数组的长度
动态创建与静态创建的区别:
1,使用的区别:动态创建可以初始化也可以修改,静态创建只能初始化时使用
2,内存的区别:
new关键字:
含义:新建
作用:在堆内存开辟一片空间
静态创建在常量池中存储
动态创建在堆内存中存储
3,静态创建没有默认值,动态有默认值,基本数据类型默认为0,引用数据类型默认为null
操作
改
修改数组中指定位置的元素
语法:数组名[下标] = 值;
修改整个数组
语法:动态创建的语法
查
查询数组中指定位置的元素
语法:数组名[下标]
查询数组长度
语法:数组名.length
常见的错误(了解):
数组下标越界异常:
ArrayIndexOutOfBoundsException
解决方案:修改下标到范围内
空指针异常:
NullPointerException
解决方法:保证不要使用null调用属性或方法
综合案例:
点名器
使用
遍历
概念:将数组或集合中的数据,逐个取出
步骤:
1,开启循环,变量的取值范围就是下标的取值范围
2,在循环中通过变量获取数组中对应位置的值
增强for循环(foreach):
作用:遍历
语法:
for(数据类型 变量名:要遍历的集合或数组){
循环体
}
执行流程:
1,取出数组或集合中第0个元素,赋值给变量名
2,执行循环体
3,取出数组或集合中第1个元素,赋值给变量名
4,执行循环体
5,取出数组或集合中第2个元素,赋值给变量名
6,执行循环体
...
取出数组或集合中第最后一个元素,赋值给变量名
执行循环体
结束循环
foreach比for快3倍
查找
概念:寻找数组是否存在指定元素
步骤:
1,遍历
2,使用获取的元素与指定元素对比,如果没有找到继续寻找,如果找到了结束遍历
练习:
String[] strs = {"张三","李四","王五","马六","候七","龙八","小红","小丽","老王"};
查询小丽所在的下标
复制
概念:将数组A中的内容复制到数组B中
要求:
数组B的长度要等于数组A
数组B的数据类型要与数组A一致
思想:
1,遍历数组A
2,将取出的元素赋值给B数组对应的位置
扩容
概念:将数组A的长度变大
思路:
1,创建数组B,要求数组B长度大于数组A,并且与数组A数据类型一致
2,将数组A中的数据复制到数组B中
3,将数组B赋值给数组A
数组在参数中使用
形参
如:
public static void add03(int[] nums) {
}
实参
如:
int[] nums01 = new int[] {1,3,5,7};
add03(nums01);
返回值
如:
public static int[] add04(int num01,int num02) {
int[] nums = new int[3];
nums[0] = num01;
nums[1] = num02;
nums[2] = num01+num02;
return nums;
}
可变参数
是什么?
形参中使用数组的变形
好处:
传递参数时,可以传递数组,也可以多个值
语法:
数据类型... 变量名
注意:
只能在形参末尾使用,一个方法只能使用一个可变参数