java方法详解
System.out.println() 类+对象+方法
方法是语句的集合,他们在一起执行一个功能,包含于类或对象,在程序中创建,在其他地方被引用
保障方法的原子性,一个方法只实现一个功能,有利于后期的拓展
方法的定义和调用
(类似其他语言的函数)
修饰符(可选,public/static/final)+返回类型+方法名字(参数){
实现功能的语句
}
//加上static可变成类变量,就可以直接调用,不需要通过类对象调用,不然需要实例化
//实参传给形参
//有返回类型一定要return,不然就用void
return可以终止方法
分清值传递和引用传递,java只有值传递
方法的重载
在同一个类里,方法名相同,参数不同(类型或者数量,或者排列顺序),返回类型可以相同或者不同,但仅仅是返回类型不同,不能成为方法的重载,
参数不同很重要,是必须满足的
命令传递参数
可变参数
也叫不定项参数
参数指定类型后加一个…,可变参数必须放在参数列表的最后一个,整个可变参数要同一个类型
递归详解
自己调用自己,可以套娃
一个出口值+套娃
好处是简单化复杂问题
java都是用栈机制的
小计算可以递归,大递归就不要了,很占用内存和计算资源
java数组
数组定义
数组声明和创建
- 数组声明:
数组类型[ ] 数组名字 //首选方法 ;
数组类型 数组名字[ ]; - 数组的创建:
(数组类型[ ] )数组名字=new 数组类型[大小]
//声明类型和名字可以理解为一个内存空间,赋值是往内存里放数据
//数组也可以变相实现多参
三种初始化和内存分析
下标越界及小结
内存分析:
- 堆:存放new的对象和数组,可以被所有的线程共享,不会存放别的对象引用
- 栈:存放基本的变量类型(会包含基本类型的具体数值)、引用变量的对象(会存放这个引用在堆里面的具体地址)
- 方法区:可以被所有线程共享,包含所有的class和static变量
- //个人理解,基本类型放在栈里,引用类型的引用在栈里,对象在堆里(new出来的都在堆里)
初始化:静态初始化(创建+赋值),动态初始化(声明+new空间+赋值),默认初始化(分配空间之后,数值默认0,字符默认null)数组特点:长度一定,创建不可改,不允许混合类型,可以是基本类型或者引用类型
//数组可以看成对象,每个元素是对象的成员变量
数组有序
数组的使用
- for each 循环
for(声明语句:表达式){
//语句
}
主要用来遍历数组和集合
//for的第三个用法 - 数组作为方法的参数
- 数组作为返回值
//数组不能整个输出,要遍历输出,或者printArray()
二维数组
可以看成一维数组里每个元素都是个一维数组
类型[ ][ ] 名字={{一维数组},{一维数组},{一维数组},{一维数组}}
new 类型[x][y]
array.length外层数目x
array[0].length内层数目y
arrays 类讲解
//按住Ctrl再点类可以查看源代码,点structure可以查看所有方法
//学会利用jdk帮助文档,查看工具类及其方法
冒泡排序
总共有八大排序
冒泡最简单最出名:两两比较,更小就往前跑
稀疏数组
数组的压缩,数组大部分为0或者同一个值,可以压缩