java基础提升(关于数组)

静态语言(强类型语言)是在编译时即可确定数据类型的语言,多数静态类型需要要求使用变量之前必须声明数据类型。例如C/C++,java,C#,Delphi等,而动态语言(弱类型语言)是在运行时确定变量数据类型的语言的,使用之前不需要声明。如:PHP/Python/javaScript等。强类型语言虽然在速度上可能会略微逊色于弱类型语言,但强类型语言是类型安全的语言,更加严谨性。

java中

public void add(int x,int y){ int z = x+y; }

javaScript中

function add(x,y){ var z = x + y; return z; }

String [] str = new String[4];

数组是引用类型,数组对象(str)并不代表数组本身,而是代表它所指向的堆内存中的对象,数组在虚拟机中存储的结构如下:

数组一旦初始化之后,长度就不能再改变了

数组有两种初始化方式:静态初始化和动态初始化

静态初始化:String[] arr1 = new String[]{"abc","cba","nss"};或者 String []arr1 = {"abc","cba","nss"};

动态初始化:String[] arr2 = new String[4];

静态初始化时直接指定元素的初始值,此时数组的长度不需要指明,由系统自己决定,而动态初始化时则由程序员指定数组的长度,至于数组的初始值则由系统指定。

动态初始化时,系统会根据数组元素的类型来指定数组的初始值:

  如果数组是整数类型(int,short,long,byte),则系统默认值为 0;

  如果数组是浮点类型(float,double),则系统默认值为 0.0;

  如果数组是字符类型(char),则系统默认值为 ‘u000’;

  如果数组是布尔类型(boolean),则系统默认值为 false ;

因为数组是引用对象,所以当arr1=arr2时,如果修改arr1的元素值,则arr2对应的元素值也会发生变化,如下图所示:

引用类型变量不等于引用类型对象!引用类型变量里存储的是引用类型对象在堆内存中的地址值,可以通过该地址值找到引用类型对象

所有的局部变量都是放在栈内存里保存的,不管其是基本类型的变量还是引用类型的变量,都是存储在各自的方法栈区的,但引用类型的变量所引用的对象则总是存储在堆内存中的(数组【不管数组中存储的是基本类型数据还是引用类型数据】,java对象)

public static void main(String[] args){
            int[] aa = {1,2,3};
            int a = aa[0];
            int b = 20;
            aa[1] = b;
            System.out.println("a = " + a); // 1
            System.out.println("b = " + b); // 20
            System.out.println("aa[0] = " + aa[0]); // 1
            System.out.println("aa[1] = " + aa[1]); // 20
            aa[0] = 10;
            b = 200;
            System.out.println("a = " + a); // 1
            System.out.println("b = " + b); // 200
            System.out.println("aa[0] = " + aa[0]); // 10
            System.out.println("aa[1] = " + aa[1]); // 20
        }

 多维数组:

int[][] aa = new int[5][]; // 五个一维数组,每个一维数组的长度不一定

int[][] aa = new int[2][3]; // 两个一维数组,每个一维数组的长度为3

int[][] aa = {{1,2,3},{5,6,8,7}};// 两个一维数组,直接定义数组的初始值。

多维数组的内存结构如下:

如果在已有的数据类型之后增加方括号,就会产生一个新的数组类型。如:int  a ;是int类型的变量,而 int[] aa则是int类型的数组,int[][]aaa则是int[]类型的数组。。。。。。

原文地址:https://www.cnblogs.com/zhlblogs/p/9034434.html