第五章 方法及其调用
方法:用{}将代码块包起来,可以实现某一具体功能
两个明确
1)明确返回值类型:int
2)明确参数类型以及参数个数
5.1 方法的定义
1)有具体返回值类型方法的定义
格式:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D0mJOF9g-1626509749415)(D:\QF_workspace\周总结\第二周总结.assets\image-20210717094844762.png)]
2)没有具体返回值类型的方法的定义
没有具体返回值,用void代替没有返回值类型
格式:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tTvlfpoY-1626509749418)(D:\QF_workspace\周总结\第二周总结.assets\p2.png)]
5.2 方法的调用
a. 有具体返回值类型的方法的调用:
1)单独调用(不用它)
2)输出调用:不建议
3)赋值调用:推荐
//赋值调用
int result = sum(a,b) ;
System.out.println(result) ;
b. 没有具体返回值类型的方法调用:
1)单独调用:只能单独调用
2)输出调用:不行
3)赋值调用:不行
//单独调用
printStar(m,n) ;
c. 方法使用中的注意事项
1)方法和方法是平级关系,不能进行嵌套:
在一个方法中不能定义另一个方法
2)在Java中,定义方法的时候形参必须要带数据类型
(Java是一个强类型语言)
3)调用方法的时候,实参不需要带数据类型
4)定义方法的时候: 有{括号的地方不能有分号;
5.3方法重载
1.方法重载(overload):方法名相同,参数列表不同,与返回值无关!
参数列表不同:
1)参数个数不同
2)参数类型不同
2.方法重载的目的:就是为了提高某个功能的扩展性
同一个方法,可以传递任何数据类型
如:java.util.Arrays类:针对数组的操作工具类
排序功能...
sort(byte[] byte)
sort(double[] d)
sort(int[] i)
sort(float[] f)
第六章 数组(引用数据类型)
6.1 数组定义
数组就是存储多个数据的容器,必须保证容器中的数据类型一致
6.2数组初始化
1)动态初始化
给定了数组的长度,系统默认对元素进行初始化!
数据类型[] 数组名称 = new 数据类型[数组长度] ;
数据类型 数组名称[] = new 数据类型[数组长度] ;
如:
int[] arr = new int[3] ;
int arr[] = new int[3] ;
2)静态初始化
静态初始化:我们给定的具体的元素,数组长度由系统确定
静态初始化的格式:
数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,元素3…} ;
数据类型 数组名称[] = new 数据类型[]{元素1,元素2,元素3…} ;
简化格式:
数据类型[] 数组名称 = {元素1,元素2,元素3…} ;
数据类型 数组名称[] = {元素1,元素2,元素3…} ;
如:
int[] arr = {5,6,7,8} ;
2.数组的访问通过角标值访问
数组名[角标值] ,角标从0开始
6.3数组应用
a.数组的遍历
b.冒泡排序
import java.util.Scanner;
class Bubblesort{
public static void main(String[] args){
Scanner sc =new Scanner(System.in);
int arr[]={4,3,2,1};
printArray(arr);
bubblleSort(arr);
}
public static void printArray(int a[]){
System.out.print("[");
for(int i=0;i<a.length;i++){
if(i==a.length-1){
System.out.println(a[i]+"]") ;
}else{
System.out.print(a[i]+", ") ;
}
}
}
public static void bubblleSort(int a[]){
for(int i=0;i<a.length-1;i++){
for(int j=0;j<a.length-1-i;i++){
if(a[i]>a[i+1]){
int temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
printArray(a);
}
}
6.4形参问题
1)如果形式参数是基本类型,形式参数的改变不会影响实际参数
2)String类型:特殊的引用类型:它作为形式参数,效果和基本数据类型一致
形式参数的改变不影响实际参数(String本质就是常量)
3)如果形式参数是数组类型(除String类型外),
实际参数传递:形式参数的改变会直接影响实际参数
第七章 面向对象
7.1 面向对象的三大特征
封装,继承,多态
编程思想
面向过程:做某件事情都需要自己亲历亲为,按照步骤去完成
面向对象:做某件事情不需要自己亲历亲为,只需指定特定的对象去完成即可
7.2 对象
1.类和对象的概念
1)类是对某一事物的描述,是抽象的,概念上的定义。
2)对象是实际存在的该事物的个体,是具体的、现实的。
2.成员变量和局部变量的区别:
1)书写位置不同
成员变量:类中方法外
局部变量:在方法定义中或者方法声明上
2)内存中的位置不同
成员变量:在堆内存中
局部变量:在栈内存中
3)生命周期不同
成员变量:随着对象的创建而存在,随着对象创建完毕,等待垃圾回收器回收对象(空闲时候进行回收)才能消失
局部变量:随着方法调用存在,随着方法调用结束而消失
4)初始化不同:
成员变量:在堆内存中由系统默认初始化(根据成员变量的类型进行默认初始化:String:null int:0)
局部变量: 无论是先定义还是直接初始化,必须在使用之前初始化,否则报错
7.3 封装
1.封装的概念:
将类的某些信息隐藏在类内部,不允许外部程序直接访问,
而是通过该类提供的公共方法来实现对隐藏信息的操作和访问。
2.封装的好处:
1,隐藏类的实现细节
2,方便加入控制语句
3,方便修改实现
4,只能通过规定方法访问数据
7.4方法的重载
两同三不同
1)在同一个类中,同一个方法名
2)参数列表不同(个数不同,顺序不同,类型不同)
方法的重载跟返回值无关
7.5 构造方法
1.方法名和类名相同,没有返回值类型,
每一个类都会有一个默认的无参构造方法
当写了一个有参构造,默认无参构造就会消失
2.构造方法的作用:
1)实例化对象
2)给成员变量赋值
构造方法包含无参构造和有参构造
过规定方法访问数据
7.4方法的重载
两同三不同
1)在同一个类中,同一个方法名
2)参数列表不同(个数不同,顺序不同,类型不同)
方法的重载跟返回值无关
7.5 构造方法
1.方法名和类名相同,没有返回值类型,
每一个类都会有一个默认的无参构造方法
当写了一个有参构造,默认无参构造就会消失
2.构造方法的作用:
1)实例化对象
2)给成员变量赋值
构造方法包含无参构造和有参构造