7.15-7.16
1.完成了PTA上的函数题和两道编程题,期间遇到了一些不懂得知识,学习了链表相关的知识,以及希尔排序算法,并复习了二分查找算法;同时也遇到了一些比较复杂的题目,通过在网上观看题目解析后有了思路并成功写出来,也出现过许多细节上的错误,这也使我更加认真思考每一处问题
2.观看三章大道至简
3.学习java基础知识
7.17-7.18
1.学习了java的顺序,选择,循环语法结构
2.完成5道pta练习,其中遇到了进制转换上的问题,再从网上的学习上我对二进制和八进制、十六进制以及十进制之间的转换以及表达形式
二进制(Binary):基数为2,使用的符号是0和1。计算机内部的数据存储和处理通常使用二进制。
八进制(Octal):基数为8,使用的符号是0到7。八进制常用于某些计算机编程环境中,因为它与二进制有较好的对应关系。
十进制(Decimal):基数为10,使用的符号是0到9。我们日常生活中常用的数字系统就是十进制。
十六进制(Hexadecimal):基数为16,使用的符号是0到9和A到F,其中A代表10,B代表11,以此类推,F代表15。十六进制常用于计算机科学,因为它可以更紧凑地表示大数值。
3.观看大道至简
7.19-7.20
学习了java的输入输出语句以及数组及其内存图
在Java内存模型中,堆(Heap)、栈(Stack)和方法区(Method Area)是三个非常重要的组成部分。
- 堆(Heap)
功能:
堆是Java内存管理的核心区域,几乎所有的对象实例都在这里分配内存。堆内存是线程共享的,目的是存放对象实例,包括对象的成员变量(但不包括成员方法,因为方法是类级别的,不属于任何对象实例)。
特点:
动态分配和回收:堆内存允许对象的动态创建和销毁。
线程共享:堆内存是多个线程共享的,因此在多线程环境下需要同步机制来避免数据不一致。 - 栈(Stack)
在Java中,栈通常指的是Java虚拟机栈(Java Virtual Machine Stack),但也可能包括本地方法栈(Native Method Stack)。
功能:
Java虚拟机栈是线程私有的,它的生命周期与线程相同。每个方法在执行的时候都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。
特点:
线程私有:每个线程都有自己独立的虚拟机栈,互不影响。
后进先出(LIFO):栈是一种后进先出的数据结构,方法的调用和返回都遵循这个原则。 - 方法区(Method Area)
功能:
方法区也是线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
特点:
线程共享:与堆内存一样,方法区也是多个线程共享的。
非堆(Non-Heap):虽然Java虚拟机规范把方法区描述为堆的一个逻辑部分,但它有一个别名叫做Non-Heap,目的是与堆进行区分。
存储内容:方法区存储了类的元数据信息(如类名、字段、方法、接口等)、常量池、静态变量等。