• 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[]类型的数组。。。。。。

  • 相关阅读:
    [LeetCode] 687. Longest Univalue Path
    [Daily Coding Problem] 1 (LeetCode 1). Find if two numbers in an array add up to k
    [Daily Coding Problem] 18 (LeetCode 239). Sliding Window Maximum
    [Daily Coding Problem 24] Implement locking in a binary tree.
    [LeetCode] 208(LintCode). Implement Trie(Prefix Tree)
    [Daily Coding Problem] 16. Last N order ids implementation
    队伍总结 2017年5月14日
    ECNU 3260 袋鼠妈妈找孩子(dfs)
    ECNU 3263 丽娃河的狼人传说 (贪心)
    UVA 213 信息解码(二进制&位运算)
  • 原文地址:https://www.cnblogs.com/zhlblogs/p/9034434.html
Copyright © 2020-2023  润新知