突破java程序员的16个基本功_疯狂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

};

}

第一步声明变量的时候,只是在栈区声明了一个变量iArr,此时改变量还没有指向任何的引用对象。

第二步的时候,在堆区域开辟了一个连续的内存空间,长度为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

}

}

未完

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值