zoukankan      html  css  js  c++  java
  • 疯狂Java:突破程序员基本功的16课-李刚编著 学习笔记(未完待续)

    突破程序员基本功(16课)

    数组

    • 静态语言: 在编译的时候就能确定数据类型的语言,大多静态语言要求在使用变量之前必须声明数据类型(少数具有强推导能力的现代语言不用)
    • 动态语言: 在程序运行时确定数据类型的语言,变量使用之前不需要声明数据类型

    java是静态语言,在使用之前需要声明变量类型。

    //声明一个可存放数据类型为String,长度为5的数组
     String[] arr = new String[5];
    

    数组的初始化

    数组初始化有两种方式

    • 静态初始化: 初始化时,程序员显示指定数组每个元素的初始值,由系统决定数组的长度
    //静态初始化,方法一
    String[] arr1 = new String[]{
        "hello",
        "world",
        "hello",
        "java"
    };
    //静态初始化方法二
    String[] arr2 = {
        "xixi",
        "haha"
    };
    
    • 动态初始化: 初始化时程序员指定数组长度,由系统为数组分配初始值
    //动态初始化方法
    String[] arr3 = new String[5];
    

    动态初始化时,系统默认分配初始化值按照如下规则

    1. 数组元素类型为基本类型中的整数(byte, short, int, long),默认初始值是0。
    2. 数组元素类型为基本类型中的浮点数(float, double)默认初始值是0.0。
    3. 数组元素类型为基本数据类型中的字符型(char),默认初始值是'u0000'。
    4. 数组元素类型为引用类型(类,接口,数组),默认初始值是null。
    

    数组初始化一旦完成,就无法改变数组的长度

    数组一定需要初始化么?

    • 数组变量不需要初始化
    • 数组变量引用的数组对象需要初始化
    public static void main(String[] args) {
        String[] buff = new String[]{
                "v1",
                "v2"
        };
        //声明数组
        String[] movies;
        movies = buff;
        System.out.println(Arrays.toString(buff));
    }
    

    结果:

    [v1, v2]
    

    由上可只movies(数组变量并不需要初始化,但是该引用所引用的对象需要初始化)。

    基本数据类型的初始化

        public static void main(String[] args) {
            int[] iArr; //1
    
            iArr = new int[]{ //2
                1,
                2
            };
        }
    
    1. 第一步声明变量的时候,只是在栈区声明了一个变量iArr,此时改变量还没有指向任何的引用对象。
    2. 第二步的时候,在堆区域开辟了一个连续的内存空间,长度为4,这个时候iArr指向堆区这一连续的内存空间。

    Tips: 并不是所有的基础数据类型都存储在栈区,如上此时的"1,2存储在堆区域。更明确的说,所有的局部变量都存储栈内存中(包括基本数据类型变量和引用类型变量)。但引用类型变量所引用的对象总是存储在堆内存里。

    引用类型数据类型初始化

    class Person {
        int age;
        String name;
    
        public Person() {
    
        }
    
        public Person(int age, String name) {
            this.age = age;
            this.name = name;
        }
    }
    
    public class ArrDemo {
    
        public static void main(String[] args) {
            Person[] students = new Person[2]; //1
            System.out.println(students.length); //2
            Person amber = new Person(1,"amber");//3
            Person nick = new Person(3, "nick"); //4
            students[0] = amber; //5
            students[1] = nick; //6
            System.out.println(amber); //7
            System.out.println(students[0]); //8
        }
    }
    

    未完

  • 相关阅读:
    Prototype.doc in Netsuite
    中文编码问题(utf8转为中文)
    js 取得 Unix时间戳(Unix timestamp)
    关于'跳墙'
    webex js 判断是否是ie 以及兼容性代码
    VLOOKUP函数对查找内容列排序增加效率
    netsuite动态绑定事件
    netsuite filter的选择框 代码控制
    html js 跨域 p3p
    netsuite 记录类型 权限分配 use permissions
  • 原文地址:https://www.cnblogs.com/amberbar/p/11610381.html
Copyright © 2011-2022 走看看