文章目录
- 01.Java语言基础-main方法的数组参数
- 02.参数的值传递机制-基本数据类型
- 03.参数的值传递机制-引用数据类型
- 04.Java语言基础-数组中的数组(多维数组)
- 05.Java语言基础-多维数组的操作
- 06.Java5对数组的支持-增强for循环
- 07.Java5对数组的支持-方法的可变参数
- 08.Java语言基础-实现int类型数组元素拷贝
- 09.System类中的arraycopy方法
- 10.Java语言基础-排序算法-冒泡排序
- 11.Java语言基础-排序算法-选择排序
- 12.Java语言基础-查找算法-二分法查找
- 13.自行封装数组操作的工具类ArrayUtil
- 14.Java语言基础-Java内置数组工具类Arrays
- 15.Java语言基础-今日小结
01.Java语言基础-main方法的数组参数
简介
02.参数的值传递机制-基本数据类型
简介
03.参数的值传递机制-引用数据类型
简介
-
对于基本类型和引用类型的参数传递都是值传递
-
基本类型传的是值副本,引用类型传的是地址值副本
-
从局部变量/方法参数开始讲起:局部变量和方法参数在jvm中的储存方法是相同的,都是在栈上开辟空间来储存的,随着进入方法开辟,退出方法回收。以32位JVM为例,boolean/byte/short/char/int/float以及引用都是分配4字节空间,long/double分配8字节空间。对于每个方法来说,最多占用多少空间是一定的,这在编译时就可以计算好。我们都知道JVM内存模型中有,stack和heap的存在,但是更准确的说,是每个线程都分配一个独享的stack,所有线程共享一个heap。
-
对于每个方法的局部变量来说,是绝对无法被其他方法,甚至其他线程的同一方法所访问到的,更遑论修改。当我们在方法中声明一个 int i = 0,或者 Object obj = null 时,仅仅涉及stack,不影响到heap,当我们 new Object() 时,会在heap中开辟一段内存并初始化Object对象。当我们将这个对象赋予obj变量时,仅仅是stack中代表obj的那4个字节变更为这个对象的地址。
-
此处和C# 的ref 和out 区别,如果在C#中使用了ref,当方法里面的引用赋值为null,方法外的引用也会变成null
04.Java语言基础-数组中的数组(多维数组)
简介
05.Java语言基础-多维数组的操作
简介
- 内存图
06.Java5对数组的支持-增强for循环
简介
07.Java5对数组的支持-方法的可变参数
简介
-
要求不使用数组
-
其实本质是语法糖
-
可以避免空指针问题,当什么都不传会默认给个new double[] 数组作为参数
- 只能有一个可变参数,而且必须是最后在最后一个参数
- 报错
08.Java语言基础-实现int类型数组元素拷贝
简介
09.System类中的arraycopy方法
简介
- 只能输入类名字
10.Java语言基础-排序算法-冒泡排序
简介
-
排序介绍
-
冒泡排序
-
I作为比较次数从1开始,方便理解,和防止越界,不要理解成索引
-
先把第一轮的for写出来,和第二轮的for写出来,然后用for来组成起来
-
举个数字例子类比
-
合起来
11.Java语言基础-排序算法-选择排序
简介
- 冒泡是相邻比较
- 选择是某个索引位置和剩余其他比较
- 真正的选择排序,每轮只换一次
12.Java语言基础-查找算法-二分法查找
简介
13.自行封装数组操作的工具类ArrayUtil
简介
-
封装工具类
-
默认是public 修饰符
14.Java语言基础-Java内置数组工具类Arrays
简介
-
java里面对应的源码
-
java.lang 是默认找的,不需要导入
-
前闭后开 区间