JAVASE基础04

函数

Java基础(函数-定义 -格式)

是定义在类中的具有特定动能的一段独立小程序。
函数也称为方法

格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,……){
执行语句;
return 返回值;
}

Java中对每一种数据都进行了具体的划分,因此每个数据都有它的数据类型
函数名的规格是通过看名字大概了解该函数的功能

Java基础(函数-细节-void)

函数功能没有具体的返回值,这种情况下我们可用return后面直接分号。或者,使用用关键字void来表示这种情况。
如果返回值是void,return可以不写。

Java基础(函数-细节-错误格式 -定义思想错误)

函数中只能调用函数,不可以在函数内部定义函数。定义函数时,函数结果应该返回给调用者,交给调用者处理。
定义函数时,首先要明确该函数的结果。
public static void add(int a,int b){
System.out.println(a+b)
return;
}
上面加法代码就是属于定义错误,虽然可通过编译,也能运行,但他的功能应该时将加法结果返回。

Java基础(函数-两个明确)

一:这个功能的结果是什么
二:这个功能实现过程是否需要未知内容参与运算

Java基础(函数-内存加载过程)

FunctionDemo.java

class Function {

public static int add(int a,int b){
	return a+b;
}

public static void main(String[] args) {
	int x = add(3,5);
	System.out.println(x);
}

}

javac 命令将java----->Function.java
java functiom 执行程序,开辟空间。


在这里插入图片描述
add函数进栈
返回结果后add函数出栈
主函数赋值玩成后也出栈,执行完毕。

Java基础(函数-重载)

在这里插入图片描述
数组

01-Java基础(数组-概述)

02-Java基础(数组-定义)

容器是一个实体,它需要在内存中开辟空间存储,,用关键字new。
例:int []arr=new int[3 ];左边声明一个int类型的数组名称为arr,右边开辟一个int类型的数组空间长度为3,并且有默认值0
需要对数组的第i个数据操作时可以直接在中括号里输入第i-1。

03-Java基础(数组-内存空间的划分)

内存的划分:
1寄存器(cpu)
2本地方法区(所在系统相关的)
3方法区(类加载)
4栈内存
5堆内存

04-Java基础(数组-栈内存)

存储的都是局部变量,方法中定义的变量都是局部变量。
  栈内存处理数据的特点:变量所属作用域一旦结束,该变量就自动释放。

05-Java基础(数组-堆内存)

存储的是数组和对象(其实数组就是对象),凡是new建立的,都在堆中,这也就是说我们数组就存放在堆内存中。
  再说说堆内存处理数据的特点:
  1、每一个实体都有一个首地址值;
  2、堆内存中的每一个变量都有默认初始化值,根据类型的不同而不同.整数是0,小数0.0或者0.0f,boolean是false,char是’\u0000’
  3、垃圾回收机制//自动回收垃圾;

数组都是引用数据类型,java里的引用跟c++的指针指向是一回事/

几乎所有的对象和数组都是在堆中分配空间的,堆是线程共享的。堆分为新生代和老年代两部分,新生代用于存放刚刚产生的对象和年轻的对象,新生代又可以细分为eden,s0和s1区。eden表示对象的出生地,大部分刚刚出生的对象会存放在这里,s0和s1区空间,称为幸存者,其中存放的对象至少经历了一次垃圾回收,并得以幸存。如果在幸存区的对象到了指定年龄还没有被回收,则有机会进入老年代。

堆里有一块空间,空间的地址拷贝一份保存到栈里面一个变量里,栈引用了堆中的内存地址赋值是把内存地址付给了栈 。
操作这个变量就能操作堆的那一块空间。

06-Java基础(数组-内存图解)

在这里插入图片描述
用y给x赋值的过程。x=y
在这里插入图片描述
多个应用变量是可以同时引用一个实体的,并且在此时执行y=null;语句,不会将0x0087地址的内存回收,因为x还在引用。只要还有引用变量在引用的实体都不会被回收。

07-Java基础(数组-常见问题)

ArrayIndaxOutofBoundException(数组索引超出范围)
当访问到数组中不存在的角标时,就会发生该异常。
这种问题可以通过编译,但运行时出错。

NullPointerException(控制在异常)
当引用变量没有任何实体指向时,还在用其操作,然后发生异常。

windows直接打印数组变量名时如:
int arr = new int[3];
System.out.println(arr);
打印结果:[I@c171674
这是个哈希值,可以简单理解为内存地址,这个值要在哈希算法中运算后才得到内存地址,而开辟空间的工作其实是windows的工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值