前言
写在前面,今天是二一年的五月十六日。明天盲审的论文成绩就出了,心里还是有些忐忑,但愿有惊无险吧。Java编程思想这本书在很久以前本科的时候简单的翻过一遍,希望今后查缺补漏。
盲审过了,今天已经结束毕业答辩,开始学习的旅程。
第一章 对象入门
第二章 一切都是对象
数据保存到什么地方
1)寄存器,最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部。然而,寄存器的数量十分有限,所以寄存器是根据需要由编译器分配。我们对此没有直接控制权,也不可能在自己的程序理找到寄存器存在和任何踪迹。
寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,存器有累加器(ACC)。
2)堆栈,驻留于常规RAM(随机访问存储器)区域,但是可以通过堆栈指针获得处理的直接支持。堆栈指针向下移,会创建新的内存;若向上移,则会释放那些内存。这是一种特别快、有效的数据保存方式,仅次于寄存器。创建程序时,Java编译器必须准确的知道堆栈内保存的所有数据的长度以及存在时间。
RAM也就是所谓的内存了,写代码定义的数组啊,变量一般在这里。代码段的代码也会由ROM区读到RAM里面。由于结构特殊,必须上电保存,掉电就没有数据了。ROM有时候也可以称为外存,对于单片机来说,你烧录的代码就存在ROM区,你用code开头定义的数组和变量也在ROM里面。既然要保存代码,自然要长久保存,掉电不会损失数据。不过ROM是只读的,也叫read only memory。所以你在code区定义的变量都是const的,不可修改。
3)堆,heap,一种常规用途的内存池(也在RAM区域中)
4)静态存储,static,程序运行期间,静态存储的数据将随时等候调用,可用static关键字指出一个对象的特定元素是静态的。
主要基本类型
boolean 1位
char 16位
byte 8位
short 16位
int 32位
long 64位
float 32位
double 64位
static
/**
* @Classname Dog
* @Description TODO
* @Date 2021/5/26 13:02
* @Created by mmz
*/
public class Dog {
private static int number = 1;
public Dog(){
System.out.println("dog对象被创建");
}
public static void main(String[] args) {
System.out.println(Dog.number);
}
}
类变量不需要实例对象也可以被调用
第一个Java程序
java.lang 默认自带的
有一些代码存放在
java.util.*
第三章 控制程序流程
运算符
第四章 初始化和清除
用构造器自动初始化
每一次调用一次initialize
构造器名字与类名相同
方法过载
不能根据返回值过载,因为返回值很容易进行区分。
真正的过载还是看参数类型的不同。
static初始化对象调用步骤
1)类型为Dog的对象首次创建的时候,或者Dog类中的static方法/static变量首次访问的时候,Java解释器必须找到Dog.class该类
2)找到Dog.class对象后,它的static所有模块都被调用,因此static初始化只发生一次,在class对象首次载入的时候
/**
* @Classname Dog
* @Description TODO
* @Date 2021/5/26 13:02
* @Created by mmz
*/
public class Dog {
private static int number = 1;
static {
System.out.println("static 模块被调用了");
}
public Dog(){
System.out.println("dog对象被创建");
}
public static void main(String[] args) {
System.out.println(Dog.number);
}
}
3)创建一个Dog对象,首先会在堆Heap里为一个Dog对象分配足够多的存储空间
4)将dog里面的基本类型设定为初始值也就是默认值
5)进行字段定义是发生的所有初始化都会执行
6)执行构建器
第五章 隐藏实施过程
包 库单元
我们常用的jar
包起名
在java中,包的命名尽量要唯一,以避免不同jar包之间冲突.
其实以com.域名之后起名,就是为了保证了不同公司源文件夹不同
导包
我们之所以可以导入rt.jar下面的包,就是我们在配置环境的时候CLasspath配置的正确,所以才能正常的导入jar包