@[TOC] javaSE系列之方法与数组的使用
方法类似于C语言中的"函数"。
方法的种类
这里方法分为有参方法也分为无参方法, 形参和实参是两个实体(这里相当于函数的传值调用和传址调用)
1.非静态方法:普通方法/构造方法
1.普通方法:成员方法/构造方法(是一种比较特殊的成员方法)
2.静态方法:被static修饰
3.抽象方法
方法的定义由 修饰符 返回值类型 方法名称(参数类型 形参)
方法体代码
return ;
注意事项:
1.返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成 void
2.方法名字:采用小驼峰命名
3.参数列表:如果方法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开
4. 方法体:方法内部要执行的语句
5. 在java当中,方法必须写在类当中
6. 在java当中,方法不能嵌套定义
7. 在java当中,没有方法声明一说
8. 定义方法的时候, 不会执行方法的代码.
9. 只有调用的时候才会执行. 一个方法可以被多次调用.
为什么需要重写
当方法功能相同,但是传参不同,这几个方法被重写
重载:
- 方法名必须相同
- 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)
- 与返回值类型是否相同无关 //就是方法名相同就行
重写:
也称为覆盖。重写是子类对父类非静态、非private修饰,非final修饰,非构造方法等的实现过程,进行重新编写,
返回值和形参都不能改变。即外壳不变,核心重写!
【方法重写的规则】
子类在重写父类的方法时,一般必须与父类方法原型一致: 返回值类型 方法名 (参数列表)
要完全一致,被重写的方法返回值类型可以不同,但是必须是具有父子关系的。
访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类方法被public修饰,则子类中重写该方法就不能声明为
protected。 父类被static、private修饰的方法、构造方法都不能被重写。
注意
避免在构造方法中调用重写的方法:
因为当构造子类对象的同时,先会调用父类的构造方法,但是父类的构造方法中,有重写的方法,此时发生动态绑定,会调用子类的方法,但此时子类对象自身还没有构造,并未构造完全。
数组:相同元素的集合,在内存中是一段连续开辟的空间(这里和(c语言语法差不多,每个空间都有自己的编号)
数组类型[] 数组名 = new 数组类型[]
//三种写法
- int[] arr = new int[]{1,2,3,4,5,6};
- int[] arr = new int[10];
- int[] arr = {1,3,4,5,6};
- //注意 这里不能写成 int[] arr; arr={1,3,4};
- int[] arr;
- //这里没有对数组初始化,默认为基本类型的对应的默认值
system.out.println(arr[0]);
int[] arr = new arr[]{1,3,4,5,3};
//方法一
for(int i = 0; i < arr.length ;i++){system.out.println(arr[i]);
}//方法二
for(数据类型 x : 数组名){system.out.println(x);
}
//这里不能使用下标访问,只能每个元素遍历
//常见引用类型有
类class
接口interface
数组array
…
变量的实质是一小块内存单元,这一小块内存里存储着变量的值;而当变量指向一个对象时,这个变量就被称为引用变量 引用存在栈上 , 对象存在堆上。
//对象可以被多个引用指向,而一个引用只能指向一个对象,当对象不被指向时才被销毁
null 在 Java 中表示 “空引用” , 也就是一个不指向对象的引用.
//这里与C语言的传参差不多
//通过引用可以改变数组内容 ,但是不能改变对象的引用变量
int[] arr = {1,3,5,7,85};
int[] newarr = Arrays.copyOf(arr, arr.length);
拷贝分为深浅拷贝 这里是是一个全新的数组 、arr与newarr不同
Arrays.copyOfRange(arr, 0,length)//这里是数组的下标(0, length} (在合理范围中,可以随意选择)
数据类型[][] 数组名称 = new 数据类型 [行数][列数] { }; //以下是二维数组的创建
int[][] arr = new arr[6][3];
int[][] arr = new arr[][]{ {34,54},{34,65}}:
int[][] arr = new arr{{34,65},{64,45}};
arr[i][j] 中 arr[i]储存的是一维数组的地址
for(int i = 0; i < arr.length; i++){for(int j = 0; j < arr[i].length; j++){System.out.println("arr[i][j]" + " ")}
}
for(int[] arr ; array){for(int a ; arr){System.out.println("a" + " ");}
}
//冒泡排序
public class Main {public static void sort_buttle(int[] arr){for(int i = 0; i < arr.length-1; i++){for(int j = 0; j < arr.length-1-i; j++){if(arr[j] > arr[j+1]){int tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;}}}}public static void main(String[] args) {Scanner scanner = new Scanner (System.in);int[] arr = {3,5,6,2,4,1,41};sort_buttle(arr);for(int a : arr){System.out.println(a);}}
}