疯狂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
}
}
未完
疯狂Java:突破程序员基本功的16课-李刚编著 学习笔记(未完待续)的更多相关文章
- 《疯狂java-突破程序员基本功的16课 》笔记总结
本人最近读完<疯狂java-突破程序员基本功的16课 >读完后,感觉对java基础又有了新的认识,在这里总结一下:一.数组与内存控制 1.1 数组初始化 java语言的数组是静态的 ...
- 《疯狂Java:突破程序员基本功的16课》读书笔记-第一章 数组与内存控制
很早以前就听过李刚老师的疯狂java系列很不错,所以最近找一本拿来拜读,再此做下读书笔记,促进更好的消化. 使用Java数组之前必须先对数组对象进行初始化.当数组的所有元素都被分配了合适的内存空间,并 ...
- 《疯狂Java:突破程序员基本功的16课》读书笔记-第二章 对象与内存控制
Java内存管理分为两个方面:内存分配和内存回收.这里的内存分配特指创建Java对象时JVM为该对象在堆内存中所分配的内存空间.内存回收指的是当该Java对象失去引用,变成垃圾时,JVM的垃圾回收机制 ...
- 类变量的初始化时机(摘录自java突破程序员基本功德16课)
先看书本的一个例子,代码如下: public class Price { final static Price INSTANCE=new Price(2.8); static double initP ...
- Java学习笔记(未完待续)
变量的作用域(scope)是指变量可以在程序中引用的范围.在方法中定义的变量称为局部变量(local variable).局部变量的作用域从声明变量的地方开始,直到包含该变量的块结束为止.局部变量都必 ...
- Java并发笔记-未完待续待详解
为什么需要并行? – 业务要求 – 性能 并行计算还出于业务模型的需要 – 并不是为了提高系统性能,而是确实在业务上需要多个执行单元. – 比如HTTP服务器,为每一个Socket连接新建一个处理线程 ...
- 致Java星球程序员兄弟们的一封信
致Java星球程序员兄弟们的一封信 亲爱的Java星球的程序员兄弟们: 你们好!我是来自地球的一名Java程序员,首先我代表地球人对贵星球的高司令来到地球传授Java语言,造福了全人类,造福了整个地球 ...
- [刘阳Java]_Java程序员的成长路线_第3讲
按照Java从业人员的职位晋升来说,Java程序成长路线大致如下 Java程序员 JavaEE初级软件工程师 JavaEE中级软件工程师 JavaEE高级软件工程师 Java架构师 按照职业发展方向, ...
- 【转】成为Java顶尖程序员 ,看这11本书就够了
成为Java顶尖程序员 ,看这11本书就够了 转自:http://developer.51cto.com/art/201512/503095.htm 以下是我推荐给Java开发者们的一些值得一看的好书 ...
随机推荐
- 暑期——第八周总结(1,安装好hadoop之后访问http://localhost:50070,无法连接【已解决】 2,Hbase命令详解)
所花时间:7天 代码行:800(Java) 博客量:1篇 了解到知识点 : 一:http://localhost:50070无法访问 安装好hadoop之后 输入所有东西都有 可就是访问50070无法 ...
- Redis 5.0 redis-cli --cluster help说明
背景: Redis Cluster 在5.0之后取消了ruby脚本 redis-trib.rb的支持(手动命令行添加集群的方式不变),集合到redis-cli里,避免了再安装ruby的相关环境.直接使 ...
- Python 设计和历史的 27 个问题
花下猫语: 先祝大家假期快乐!今天,我要分享一篇长文,选自 Python 的官方文档.它列举了 27 个设计及历史的问题,其中有些问题我曾经分享过,例如为什么使用显式的 self.浮点数的问题.len ...
- 【ADO.NET基础】加密方法公共类
各种加密方法集锦: using System; using System.Security.Cryptography; using System.Text; using System.IO; usin ...
- Redis分片机制
文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. 前两篇文章对Redis主从复制和主从切换的知识点进行了介绍,但是也很明显的有一点小弊端: 需要定时进行主从复制 ...
- (4)一起来看下mybatis框架的缓存原理吧
本文是作者原创,版权归作者所有.若要转载,请注明出处.本文只贴我觉得比较重要的源码,其他不重要非关键的就不贴了 我们知道.使用缓存可以更快的获取数据,避免频繁直接查询数据库,节省资源. MyBatis ...
- 浅析十大常见排序(含C++代码)
首先声明一下,本文只对十种排序算法做简单总结,并参照一些资料给出自己的代码实现,并没有对某种算法理论讲解,更详细的 了解可以参考以下资料: 1.<data structure and algor ...
- python编程基础之三十六
文件处理:文件处理包括读文件,写文件 读文件: 1.打开文件 2.读取文件 3.关闭文件 写文件: 1.打开文件 2.写如文件 3.关闭文件 无论是读取文件还是写文件都时需要打开文件,和关闭文件 打开 ...
- 超详细!! sql server 同步数据库 发布 订阅 跨网段 无公网ip 常见问题
问题描述 主机1:发布端 阿里云服务器--有公网ip 主机2:订阅端 笔记本--无公网ip 数据量很小,主要是熟悉发布订阅的操作流程. 主机2仅仅作为主机1的本地备份,要求修改云服务器上数据后,能通过 ...
- e课表项目第二次冲刺周期第九天
昨天完成了什么? 昨天,我查找了相关的资料,将数据库根据我们的课程信息进行了重新的设计,并将数据能够连上数据库,即在添加课程的界面,可以将添加的课程的信息,存储到数据库中,并且存储到课程表中,并注明是 ...