疯狂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开发者们的一些值得一看的好书 ...
随机推荐
- 【面试题】SpringMVC部分面试题
SpringMVC面试题 什么是SpringMVC ? 简单介绍下你对SpringMVC的理解 ? SpringMVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过Mo ...
- mysql--命令行创建数据库
MySQL 1. 连接到本机上的MYSQL. 首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格 ...
- 基于Spark的电影推荐系统(实战简介)
写在前面 一直不知道这个专栏该如何开始写,思来想去,还是暂时把自己对这个项目的一些想法 和大家分享 的形式来展现.有什么问题,欢迎大家一起留言讨论. 这个项目的源代码是在https://github. ...
- SpringBootSecurity学习(04)网页版登录其它授权和登录处理
其它授权配置 security的配置类中,对所有路径进行了统一授权配置.但是有的内容我们也需要让未登录游客有权限访问,比如js,css等静态文件,还有一些宣传页面等等.这些路径可以单独配置: 我们来试 ...
- ubuntu13 eclipse菜单栏失效解决
使用ubuntu13安装完eclipse和myeclipse后发现菜单栏单击时不显示下拉框只能通过快捷键显示. 百度了一下,找到以下解决办法. 打开终端运行下面的命令,打开eclipse后可正常显示菜 ...
- echarts使用——柱状图
开发中,做报表统计的时候,很容易用到echarts实现折线图.饼状图.柱状图的绘制,使用echarts插件很简单,官网有教程实例,但主要是这些图需要的数据格式的转换. 我的柱状图实现效果: 第一部分 ...
- 一台机器上搭建多个redis实例的配置文件修改部分
1.单个redis服务搭建请参考:redis服务搭建 2.一台Redis服务器,分成多个节点,每个节点分配一个端口(6380,6381…),默认端口是6379. 每个节点对应一个Redis配置文件,如 ...
- 转 Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数
关于处理小数点位数的几个oracle函数() 1. 取四舍五入的几位小数 select round(1.2345, 3) from dual; 结果:1.235 2. 保留两位小数,只舍 select ...
- 【ADO.NET--MVC】初学MVC(MVC入门)(1)
最近一直在学MVC,本来今天想开始做项目了,但是一下手才发现还有好多好多都不懂,虽然想照搬别人的模板,但是还是觉得很虚,这也不懂哪也不懂.看来学习一门技术断不是那么简单,只要随便套套模板,看看别人代码 ...
- One layer SoftMax Classifier, "Handwriting recognition"
import lib needed¶ In [1]: from PIL import Image import numpy as np import matplotlib.pyplot as ...