Day3 java数组和方法的学习
Day3
Java方法
什么是方法
理解上,方法和C++的函数差不多,即实现某个功能语句块的集合,尽量保证一个方法只完成一个功能。
命名规则,首字母小写后面新单词大写 类似 studentLearn
方法的重载
在一个类里面方法名称相同但参数不同,名字可以相同
仅仅返回类型不同是无法构成重载的
编译器根据调用方法的参数个数,参数类型去匹配,如果失败,则报错
不过倒是想到一个,如果在不同的类但是有一个相同名称的方法需要调用,实验了一下发现只需要把这个类的包补缺就可以了
命令行传参
传递命令行参数给main函数实现,这个是第一次见,使用main函数
在实验的时候还爆了一个错,看了一会才发现用的for循环的变量i,设置的是<=args.length,导致数组溢出.
可变参数
也叫不定项参数,在方法声明中,在指定参数类型后面加一个省略号(...)
一个方法中只能声明一个可变参数,而且必须是方法的最后一个参数
也就是最后的一个参数相当于一个数组 这样相当于C++在调用数组是用指针来调用差不多,也差挺多,这个是直接就把数组取出来了
递归
总的来说就是自己调用自己,java运行死循环递归后会报错栈溢出
递归分两个部分
一个递归头,不调用自身,如果没有就会陷入死循环
一个递归体,调用自身
当初用C++递归来实现深搜,可以用java试一下
C++做一道算法题先
一道数学算法题,优化一下公式,把O(n3)优化到O(n2)结束,比较常规,可能给的数值比较小
不过做这个的时候倒是学了一个新方法,判断整数,因为浮点数有误差只能0.00000001,所以我用来判断整数的方式是一个向上取整一个向下取整,来判断两个值是否相等。这样就完成了判断整数。
数组
数组的声明和创建
int[] nums; //首选
int nums[]; //和c++定义方法一样,但不是java的首选 就是让C++程序员适应的
使用new操作符来创建数组
int [] arrayname=new int[arraySize]
获取数组长度
array.length
内存分析
栈
存放new的对象和数组
可以被所有线程共享,不会被存放在别的对象引用
堆
存放基本变量类型(会包含基本变量的数值)
引用对象的变量(会存放这个引用在堆里的具体地址)
数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。
方法区
可以被所有线程共享
包含了所有class和static变量
数组初始化
静态初始化和动态初始化
静态就是在声明的时候直接赋值,以后也就不能改了
动态初始化是声明后没赋值,数组一但分配空间之后,每个元素都会被隐式初始化。
下标越界
下标的合法区域在[0,length-1]
思考
方法就和C++的函数一样,比较容易理解。
数组的声明[]是连着类型符号一起的,当然C++那种创建数组的方式也可以。
数组也是对象,数组元素相当于对象的成员变量,毕竟和C++不同,java的数组还有方法可以用
明天继续二维数组和面向对象的学习。