方法
什么是方法
修饰符+返回值类型+方法名名字(参数);有参数的话要有返回值。
方法的停止
return 可以停止方法
方法的重载
-
方法名称必须相同。
-
参数列表不同。
-
方法的返回类型可以相同也可以不相同。
-
仅仅返回类型不同不足以成为方法的重载。
递归
优点:可以减少代码复杂程度。
缺点:会压缩栈的空间,容易造成内存崩坏。
递归注意事项
- 递归要有结束,有尾。
package Void;
public class Demo02 {
public static void main(String[] args) {
int b = Jiecheng(4);
System.out.println(b);
}
public static int Jiecheng(int a){
if (a==1){//边界条件
return 1;
}
else {
return a*Jiecheng(a-1);
}
}
}
命令行传参
有时候你希望运行一个程序的时候在传递给他消息。这要靠传递命令行参数给main()函数实现。
可变参数
package Void;
public class Demo01 {
static int a =1;
public static void main(String[] args) {
max(10,20,30,40);
}
public static void max(int...num){//可变参数必须是最后一个
//找出多个数字的最大数
int max =0;
if (num.length==0){
System.out.println("没有数字");
return ;
}
for (int i = 0; i < num.length; i++) {
if (num[i]>max){
max = num[i];
}
}
System.out.println(max);
}
}
数组
数组的定义
- int[] nums = new
int[] nums= new int[10];
int numss[]= new int[10];
package Void;
public class Demo04 {
public static void main(String[] args) {
//变量的类型,名字,值
int[] nums= new int[10];
int numss[]= new int[10];
int i = 0;
int sum = 0;
while ( i<nums.length){
nums[i]=i+1;
System.out.println(nums[i]+"");
i=i+1;
sum+=i;
}
System.out.println(sum);
}
}
数组的赋值
-
动态赋值
int[] nums ={1,2,3};//创建,定义赋值
-
静态复制
int[] num = new int[2]; num[0] = 1; num[1] = 1; num[2] = 1;
内存分析
堆 (给数组赋值)
存放new对象和数组
栈(创建数组)
存放基本变量类型
数组的使用
增强for循环
for (int array : arrays) {
System.out.println(array);
}
使用方法是 array(数组名字).for,会自己弹出。只能打印数组,不能操作数组下标。
数组的返回值
import java.util.Arrays;
public class Demo03 {
public static void main(String[] args) {
int[] arrays = {1, 2, 3, 4, 5,6,7,8};
int[] resada = reverse(arrays);
System.out.println(resada);//打印地址
System.out.println(Arrays.toString(resada));//打印数组
}
public static int[] reverse(int[] argss) {
//反转数组
int[] result = new int[argss.length];
for (int i = 0; i < argss.length; i++) {
result[i] = argss[argss.length - 1 - i];
System.out.println(result[i]);//打印每个元素
}
return result;
}
}
多维数组
public class Demo04 {
public static void main(String[] args) {
int[][] arrayss = {{1, 2}, {2, 3}, {3, 4}, {4, 5}};//就相当于一个四行两列的矩阵
1 2
2 3
3 4
4 5
Print(arrayss);
}
public static void Print(int array[][]) {
for (int i = 0; i < array.length; i++) {
for (int i1 = 0; i1 < array[i].length; i1++) {
System.out.print(array[i][i1]+" ");
}
System.out.println();
}
}
}
Arrays类
-
Arrays.sort();给数组排序
-
Arrays.toString(a);打印数组
package shuzu; import java.util.Arrays; public class Demo05 { public static void main(String[] args) { int[] a={1,2,3,64654,465465,465}; System.out.println(Arrays.toString(a)); Arrays.sort(a); System.out.println(Arrays.toString(a)); Print(a); } public static void Print(int[] arrays){ for (int i = 0; i < arrays.length; i++) { if (i==0){ System.out.print("{"); } if (i==arrays.length-1){ System.out.print(arrays[i]+"}"); }else { System.out.print(arrays[i]+", "); } } } }
冒泡排序
package shuzu;
import java.util.Arrays;
public class Demo06 {
public static void main(String[] args) {
int a[]={1,3,2,4,6,5,180,119,1,5};
maopao(a);
System.out.println(Arrays.toString(a));
}
public static void maopao(int a[]){
for (int j = 0; j < a.length-1; j++) { //外层循环每跑一次确定一个最大值或者最小值
boolean flag = false; //如果没有比较的话,提前截至
for (int i = 1; i < a.length-j; i++) { //内层循环,每比较一次,有一个最大值或者最小值,可以少比较一次。
if (a[i]<a[i-1]){
int m=0;
m=a[i];
a[i]=a[i-1];
a[i-1]=m;
flag = true;
}
}
if (!flag){
break;
}
}
}
}