【java】-----数组

数组

1、语法
      定义数组,初始化数组
 2、内存模型(重点+难点)      
       遇到的第一个引用类型
       数据类型:1>基本数据类型
               2>引用数据类型
                  i>数组类型
                  ii>对象类型
                  iii>接口类型

一、 数组类型,保存一组其他类型的数据,元素类型
int[] / double[]
int[] intArray;
double[] doubleArray[];
和C语言兼容的方式(不建议使用)
1> int intArray[];
2> double doubleArray[];
二、数组的初始化 (数组的长度是固定)
1、静态方式 用到已知数组的所有元素

int[] array = {1,2,3,4,5};
int[] array = new int[]{1,2,3,4,5};//给方法传参  匿名数组 

2、动态数组

int[] array = new int[数组的长度];

3、不初始化数组,指定一个null字面量

int[] array =null;//null是空引用

三、数组的下表访问,使用括号[]制定具体的下标
1、下标一定是int 类型
2、下表的范围是,数组的长度是n ,则[ 0 ,n - 1]
四、数组本质其实是对象(object类的派生类)
1、属性

int[] array = ......;     
array.length;       数组中元素的个数

2、方法
五、数组的本质是引用类型,是对象,的基本数据类型有很大区别
1、int a = 100;

保存在栈:
1、局部变量
2、参数
void print(int a){
System.out.println(a);
}
值传递:
void main(){
int a = 10;
print(a);
}

print 中的a是形参
main中的a是实参
值传递,改变形参不会影响实参,因为值传递本质是复制了一份
2、数组类型(引用类型)

void main(){
int[] array = {1,2,3,4,5};
printArray(array);
}
void printArray(int[] array){
.....
}
void main(){
int[] array = {1,2,3,4,5};
method1(array);
method2(array);
}
void method1(int[] array){
array = new int[10];
//array 变成了1...10
//main中array数组的值没有变化
}
void method2(int[] arrar){
arrar[2] = 200;
//改变了main中array[2]的值,变成了200
}

六、java的数组原生支持java.util.Array

1、toString    打印数组
2、copyOf      复制数组
3、copyOfRange
4、fill         填充值
5、sort | paraelSort

七、默认值

byte/short/int/long    0
float/double           0.0
char                   0x0000
boolean                false
reference (引用类型)     null

变量未初始化是,默认给的值

    局部变量无法享受默认值
    参数没有默认值

可享受默认值的

   数组中的元素
   属性
   静态属性

八、二维数组

int[][]
int[][] array = new int[][10];

九、总结
数组:数组的长度,一旦建好,不能更改,固定大小
语法:
数组类型
元素类型[]
甚至,元素类型也可以是数组,表现的好像多维数组
初始化

         int[] a = null;//引用有但没实际的数组
         int[] a = {1,2,3,4,5};//静态初始化
         int[] a = new int[]{1,2,3,4,5};//更多用在匿名数组
         int[] a = new int[数组长度];//动态初始化

1、 理解引用背后的内存模型

引用类型和基本数据类型的区别

2、 java 粗略的把内存分为了栈(stack)和堆(heap)

栈上:
1、局部变量
2、形参
堆上:对象(数组的对象)

3、方法调用过程中,无论是基本数据类型还是引用数据类型

实参到形参都是值传递,在栈里拷贝一份
但,引用传递,如果更改的是对象内部的值,则实参可以感受到变化

4、调用的过程

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值