方法
一.方法的概念:
实现特定功能的一段代码,可以反复使用。
一个类中可以定义多个方法,方法之间属于并列关系,不可嵌套。
二.语法定义:
public static 返回值 方法名称(){
//方法体(功能代码)
}
三.方法的位置
类里面,主方法外面
四.方法的调用
方法名();
方法名(有参); 确定返回值类型
调用方法时,会优先执行方法内部代码,结束后,
返回到方法调用处,继续向下执行。
五.方法的参数
形参(局部变量的声明)与实参(局部变量的赋值)
语法:
public static void 方法名称(形式参数){
//方法体
}
作用:方法参数可以让代码功能跟灵活、普适性更高,易于修改及维护。
例子:单个参数和多个参数
六.返回值与返回值类型
概念:方法执行后的返回结果。(有返回值,无返回值)
语法:
public static 返回值类型 方法名称(形式参数列表){
//方法主体
return value;//返回值
}
有返回值:
在方法声明的时候,指定返回值的类型。并且需用return关键字来返回指定的类型。
无返回值:
方法声明的时候,使用void表示。
return的用法:
1.return value; 表示结束当前方法,并伴有返回值,返回到方法调用处。
2.return; 表示结束当前方法,直接返回。
注意!!return关键字后面不可以声明执行语句。
七.方法的好处
1.减少冗余
2.提高利用率
3.易读
4.易于维护
数组
一.数组的概念:
一组连续的存储空间,存储多个相同的数据类型
特点:类型相同、长度固定。
二.数组的创建
int[] a=new int [5]; //创建了长度为5的空间
三.数组的组成:
数组的四要素:数据类型 数组名 下标 长度
数组的使用:1.声明数组 2.分配空间 3.赋值 4.使用
有效下标范围:0~数组长度-1
数组长度固定不变,超出了范围,会导致数组下标越界。
四.数组的创建语法:
1.声明并分配空间
2.声明并赋值(复)(简)
int a=new int[]{...};
int a={....};
五.数组的遍历:
从头至尾,逐个对数组进行访问。
数组名.length 获取数组的长度
六.数组的扩容
1.数组扩容:
创建大于原数组长度的新数组。
将原数组的元素依次复制到新数组中。
2. 复制方式:
System.arraycopy(原数组,原数组起始,新数组,新数组起始,长度)。
Arrays.copyOf(原数组,新长度). (返回带有原值的新数组)
3.地址替换:
引用数据类型,其变量中存储的是数组的地址。
在完成元素复制后,需要将新数组地址,赋值给原数组
七.数组的类型参数:
1.数组的类型参数
public static void print(int [] array){}
//引用数据类型,赋值也好、传参也好,操作的都是地址
2.数组类型的返回值
调用数组类型返回值的方法时,方法执行后,返回的是数组的地址。
八.可变长参数
1.概念:可接收多个同类型实参,个数不限,使用方式与数组相同。
2.语法:
数据类型... 形参名 //必须定义在形参列表的最后,且只能有一个。
public static int[] expand(int length , int... arr){}
九.数组的排序
1.冒泡排序
//外层条件-1,内层条件-i-1
for (int i = 0; i < num.length-1; i++) {
for (int j = 0; j <num.length-1-i; j++) {
if(num[j]>num[j+1]) {
int temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
}
}
2.选择排序
//外层条件-1,内层初始为i+1
for (int i = 0; i < num.length-1; i++) {
for (int j = i+1; j <num.length; j++) {
//使用固定值i和j进行比较
if(num[i]>num[j]) {
int temp=num[i];
num[i]=numj];
num[j]=temp;
}
}
}
3.JDK排序
Arrays.sort(数组名);//升序排序
Arrays.toString(数组名);//通过数组的方式输出
Arrays.copyOf(原数组名,新数组长度);
int []a={99,85,82,63, 60};
int []a1=Arrays.copyOf(a, a.length);
创建了a1这个数组,数组的长度和a1相同
a=a1; 把a1的地址赋值给a
面向对象
对象与类的关系:
类是对象的抽象(模板),对象是类的实例。
- 类:定义了对象应具有的特征和行为,类是对象的模板。
- 对象:拥有多个特征和行为的实体,对象是类的实例。
一.对象
1.对象的创建
例如:基于Dog类创建对象
Dog mydog(对象名) = new Dog();
2.访问属性
mydog(对象名).属性=属性值;
mydog(对象名).方法名();
二.类
1.实例变量
属性:通过变量表示,又称实例变量。
实例变量的默认值:
整数:0
小数:0.0
字符:\u0000 (空格)
布尔: false
其他: null
位置:类的内部,方法的外部
命名:可允许与局部变量重名,局部变量优先
2.局部变量
位置:方法里面或方法内部结构中
命名:不允许与局部变量重名
三.方法重载
要求:
- 方法名相同
- 参数列表不同(个数,顺序,类型)
- 与访问修饰符,返回值类型无关
四.构造方法(重点)
类中的特殊方法,主要用于创建对象。
特点:
1.名称与类名完全相同
2.没有返回值类型。
3.创建对象时,触发构造方法的调用不可同过"."手动调用。
构造方法重载:
创建对象时,传入参数,匹配对应的构造方法
默认构造方法:
1.在类中,如果没有定义构造方法,则默认编译器提供无参构造方法。
2.如果已经添加了有参构造方法,则无参构造方法不在提供,最好自己添加默认构造方法
五.this关键字的两种用法
1.第一种用法:
调用实例属性,实例方法。
2.第二种用法:
调用本类中其他的构造方法。如:this(),this(实参)。
this()调用无参构造器。
this(实参):调用有参构造器
注意!必须在构造方法的首行