chapter1 编程基础
所谓的程序,基本上就是告诉计算机要操作的数据和执行的指令序列,即对什么数据做什么操作,比如:
- 读文档,就是将数据从磁盘加载到内存,然后输出到显示器上;
- 写文档,就是将数据从内存写回磁盘;
- 播放音乐,就是将音乐的数据加载到内存,然后写到声卡上;
- 聊天,就是从键盘接收聊天数据,放到内存,然后传给网卡,通过网络传给另一个人的网卡,再从网卡传到内存,显示在显示器上。
基本上,所有数据都需要放到内存进行处理,程序的很大一部分工作就是操作在内存中的数据。数据在计算机内部都是二进制表示的。
流程控制有两种:1.条件执行;2.另一种是循环。
Java语言基本数据类型
- 整数类型:有4种整型byte/short/int/long,分别有不同的取值范围;
- 小数类型:有2种类型float/double,有不同的取值范围和精度;
- 字符类型:char,表示单个字符;
- 真假类型:boolean,表示真假。
基本数据类型都有对应的数组类型,数组表示固定长度的同种数据类型的多条记录,这些数据在内存中连续存放。
Java是面相对象的语言,除了基本数据类型,其他都是对象类型。
对象是由基本数据类型、数组和其他对象组合而成的。
所谓内存在程序看来就是一块有地址编号的连续的空间,数据放到内存中的某个位置后,为了方便地找到和操作这个数据,需要给这个位置起一个名字。编程语言通过变量这个概念来表示这个过程。
变量就是给数据起名字,方便找不同的数据,它的值可以改变,但含义不应变。
赋值
数字常量默认为是int类型。
小数常量默认是double类型。
赋值时常把字符用单引号括起来,不使用双引号。
不能在给定初始值的同时给定长度:
int[] arr = new int[3]{1,2,3};
数组类型和基本类型的明显不同:
- 一个基本类型变量,内存中只会有一块对应的内存空间。
- 数组有两块:一块用于存储数组内容本身,另一块存储内容的位置。
- 给数组中元素赋值是改变数组内容,给数组变量赋值则会让变量指向一个不同的位置。
switch
switch的转换和具体系统实现有关。如果分支比较少,可能会转换为跳转指令。如果分支比较多,使用条件跳转会进行很多次的比较运算,效率比较低,可能会使用一种更为高效的方式叫跳转表。跳转表是一个映射表,存储了可能的值以及要跳转到的地址。
switch根据表达式的值找匹配的case,找到后执行后面的代码,碰到break时结束,如果没有找到匹配的值则执行default后的语句。
break是指跳出switch语句,执行switch后面的语句。
如果没有break语句,会继续执行后面case中的代码直到碰到break语句或switch结束。
循环控制
- break用于跳出循环。
- continue用于跳过循环体中剩下的代码,然后执行步进操作。
函数
- 重写
- 重载
chapter2 理解数据背后的二进制
UTF-8:
UTF-8使用变长字节表示,每个字符使用的字节个数与其Unicode编号的大小有关,编号小的使用的字节就少,编号大的使用的字节就多,使用的字节个数为1~4不等。
每一种编码都有一个映射表,存储其特有的字符编码和Unicode编号之间的对应关系,这个映射表是一个简化的说法,实际上可能就是一个映射或转换方法。
char本质上是一个固定占用两个字节的无符号正整数,这个正整数对应于Unicode编号,用于表示那个Unicode编号对应的字符。
其他部分连接: