Java学习笔记之-----函数,重载,数组
函数
定义:
函数又称方法,是定义在类中具有特定功能的一段独立程序
如何定义一个功能:
1.是一个封闭的大区间,即大括号{}
2.需要名称
3.需要有参与运算的数据
4.需要定义功能的结果类型
简单的说,就是明确这个功能的结果是什么。这个功能需要的未知内容是什么。
格式:
/*
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2.....){
执行语句;
return 返回值;
}
*/
注:函数的返回类型如果是void,return可以省略不写。因为void类型下没有返回值,但要知道的是,虽然代码中没有写return,但return在编译时是存在的。
示例1:
class Demo{
//使用*符号画出指定行列的矩形
void show(int row,int col){
for(int x = 0; x<row;x++){
for(int y = 0;y<col;y++){
System.out.print("*");
}
//换行
System.out.println();
}
}
}
public class MethodDemo{
public static void main(String args[]){
Demo d = new Demo();
//调用Demo类中的show方法,输出指定行列的*矩形
d.show(4,5);
}
}
示例2:
class Demo{
//定义一个方法,进行对输入的数字做加法
int method(int x,int y){
return x+y;
}
}
public class AddDemo{
public static void main(String args[]){
Demo d = new Demo();
int num = d.method(5,7);
System.out.println("num="+num);
}
}
升级一下,手动输入数字怎么样~~
import java.util.Scanner;
class Demo{
//定义一个方法,进行对输入的数字做加法
int method(int x,int y){
return x+y;
}
}
public class AddDemo{
public static void main(String args[]){
//使用Scanner进行数字的输入
Scanner scan = new Scanner(System.in);
System.out.println("请输入两个数字");
int x = scan.nextInt();
int y = scan.nextInt();
Demo d = new Demo();
int num = d.method(x,y);
System.out.println("num="+num);
}
}
重载(overload)
概念:
在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或参数类型不同即可。
特点:
与返回值类型无关,只看参数列表。
好处:
方便阅读,优化程序设计
示例
class Demo{
//定义一个画九九乘法表的功能
void multable(int num){
for(int x = 1 ;x<=num;x++){
for(int y = 1;y<=x;y++){
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}
}
//标准版
void multable(){
for(int x = 1 ;x<=9;x++){
for(int y = 1;y<=x;y++){
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}
}
}
public class OverloadDemo{
public static void main(String args[]){
Demo d = new Demo();
d.multable(7);
d.multable();
}
}
数组
概念:
同一类型数据的集合,数组其实就是一个容器。
好处:
可以自动给数组中的元素从0开始编号,方便操作这些元素。
格式:
/*
第一种:数据类型[] 数组名 = new 数据类型[数据长度];
int[] arr = new int[5]
第二种:数据类型[] 数组名 = {具体数据};
int[] arr = {1,2,3,4,5};
*/
如果将arr定义为空,这时会产生一个运行时异常----NullPointerException(空指针异常)
这是因为定义为null后,栈中主方法中的arr指向堆中的地址被清空。
public class ArrDemo{
public static void main(String args[]){
int[] arr = new int[2];
//将arr定义为空
arr = null;
System.out.print(arr[0]);//NullPointerException
}
}
示例1:获取多个数的和
class Demo{
//定义数字求和的功能
int add(int[] arr){
//定义变量记录和
int sum = 0;
//使用循环对数组进行遍历
for(int x = 0 ;x<arr.length;x++){
sum = sum + arr[x];
}
return sum;
}
}
public class AddNum{
public static void main(String args[]){
int[] arr = {5,5,5,5};
Demo d = new Demo();
int i = d.add(arr);
System.out.print(i);
}
}
示例2:获取多个数中的最大值
class Demo{
//定义功能,得到多个数中的最大值
int getMax(int[] arr){
//首先定义数组中第一位数为最大值
int max = arr[0];
//遍历数组
for(int x = 1;x<arr.length;x++){
if(arr[x]>max){
max = arr[x];
}
}
return max;
}
/*
//另一种写法,定义数组中的第一个角标为最大数
int max = 0;
//for循环
for(int x = 1;x<arr.length;x++){
if(arr[x]>arr[max]){
max = x;
}
}
return arr[max];
*/
}
public class MaxNum{
public static void main(String args[]){
int[] arr = {12,4,6,8,90,67};
Demo d = new Demo();
int i = d.getMax(arr);
System.out.print(i);
}
}
内存空间的划分
栈,堆,方法区,本地方法区,寄存器
栈内存:
存储的都是局部变量
变量的生命周期一结束就被释放
堆内存:
存储的都是实体(对象)
每一个实体都有一个首地址值
堆内存的变量都是默认初始化值,不同类型不一样
int–0 ,double–0.0 ,boolean–false ,char–’\u0000’
当实体不再使用时,会被垃圾回收机制处理
该文章为学习笔记,如有不足之处还请指正