什么是方法呢?
就类似c语言的函数
返回类型 方法名 形式参数列表
方法名最好使用小驼峰的形式,在java中方法不可以嵌套使用,
方法的调用:
就是在main方法里面写上调用的方法名加上需要传输的值,创建一个和方法同类型的变量来接收
形参和实参的关系:
形参只是拿到了实参的值,在java中无法实现自定义方法(函数)的交换两个数值,且在java中无法拿出栈里面存储的内存
方法的重载:
在java中方法名相同,参数列表类型不同(形参),返回类型不影响,就叫做重载,
相当于在一个程序中可以使用同一个方法名定义多个方法,只需要满足以上条件就ok
递归:
在函数内部调用本函数,使用递归时,一定要确认递归结束的条件,不然会进入死循环
数组:
相同类型的集合
在java中这三种数组的写法都是一样的,第一种是语法的精简,是静态初始化,后面的两种是动态初始化
double类型的数组初始化是false,spring类型的数组初始化是null
计算数组的长度是直接打印这个数组后面加上.length就可以了
第一个for循环是便利数组,拿到数组的下标,访问数组里面的内容
第二个for each循环增强for,区别是第二个循环是拿不到下标,(类型:数组名)
数组是引用类型:
引用类型储存的是地址/内存,内存也是需要划分的,
这个代码的解读是:arr这个引用指向了数组对象
在java中局部变量的生命周期和作用域是方法执行完毕后自动回收
当对象没有人引用的时候,也会被自动回收
引用可以指向引用?
正确来说是1这个引用指向了2这个引用所指向的对象
数组名是引用变量,指向的是数组的对象
int【】arr = null;
代表的是arr这个引用不指向任何对象(null是小写)
arr1指向的是对象是1.2.3.4.5
把arr1传给arr,arr指向的是arr1所指向的对象
把new int 【10】赋值给arr后,arr所指向的对象不再是arr1所指向的对象,而是new int【10】这个对象,
最后for循环的输出的还是arr1所指向的对象
而使用数组传参给另一个方法,从而改变某一个下标的值,是可以做的到的
因为两个引用变量所指向的对象并为改变,改变的是里面的值
在java中数组可以作为方法的返回值,当ret调用fun,fun中的arr5这个局部变量指向的是在堆上的「1,2,3,4,5」这个对象,然后就可以把arr5中的值带回来,意味着ret也是指向【1,2,3,4,5】这个在堆上的对象,此时在栈上的局部变量arr5就会回收,但是在堆上的这个对象并不会回收
如果不想使用for循环,输出数组,可以使用import导入Arrays这个类来实现,借助字符串将参数的数组转化为字符串输出
模拟实现tostring方法
数组的复制:
一般是使用for循环实现数组的循环,但是在java中可以使用Arrays.copyOf这个方法,把数组名和数组的长度传过去,就可以实现拷贝
在Arrays.copyOf中在数组的长度后面乘于一个数可以 实现扩容
如果想要实现复制数组的其中一段可以使用Arrays.copyOfRange这个方法,把数组名和想要访问的数组区间编辑上去(区间表示是左开右闭的形式),便可实现