在牛客网错题的一些记录

1.Java运行时内存分为线程共享和线程私有两部分

线程共享:方法区和堆

线程私有:Java虚拟机栈,程序计数器,本地方法栈

2.new java.util.SortedMap().put("key","value");这种实例方式是错误的因为SortedMap是一个接口

3.for循环执行的顺序

 

for(初始化语句;布尔表达式;更新语句){

正文过程;

}

初始话语句仅在循环开始前执行一次

布尔表达式用于决定是否继续执行正文过程,表达式中异常则结束循环

正文过程,如果过程中存在break,return或者异常,循环结束(不会执行更新语句)如果遇到continue则会执行更新语句后进入下一轮循环

更新语句,注意更新语句不做到逻辑真假判断,到这里一轮循环结束

布尔表达式,进入新一轮循环

.........

4. byte b = (byte)129;

正向溢出:最小值+余数-1

负向溢出:最大值-余数+1

byte存储范围[-128,127]

129为正向溢出,结果为-128+(129%127)-1 = -127

若为-129负向溢出,结果为127-(129/128)+1 = 127

 

5. String s = "test";//该方法定义类加载器会从常量池判断是否有这个字符串存在,存在直接用s指向,不存在则创建

String s1 = new String("test");//直接在堆中new一个对象

s==s1为false,因为s指向的是常量池中的字符串变量

而s1指向的是堆中的字符串duix

 

6. -12%-5 的值为-2

取模运算,商的值和被除数符号相同

 

7.Java区分为两大类

共享线程区:方法区和堆

私有线程区:程序计数器,虚拟机栈和本地方法栈

 

 程序计数器:

堆是jvm所管理的最大的一块内存空间,主要存放各种类的实例对象

在Java中堆被划分为两个不同的区域:新生代和老年代

新生代又被划分为三个区:

Eden,From Survivor,To Survivor  这样的划分是为了使jvm能够更好的管理堆内存中的对象,堆的内存模型大致为

 

 8. 不会初始化子类的几种方式:

1). 调用的是父类的static方法或者字段

2). 调用的是父类的final方法或者字段

3). 通过数组来引用

SuperCLass [] sca = new SuperClass[10];

当初始化一个类时,如果发现其父类没有初始化回就会先初始化它的父类

 

9. 四种引用类型

1). 强引用:一个对象赋给一个引用就是强引用,比如new一个对象,一个对象被赋值一个对象

2). 软引用:用softreference类实现,一般不会轻易回收,只有不够内存才会回收

3). 弱引用:用weakReference类实现,一但垃圾回收以启动就会回收

4). 虚引用:不能单独存在,必须和引用队列联合使用,主要作用时跟踪对象被回收的状态

 

10. final修饰变量,则等同于常量。

final修饰方法中的参数,则为最终参数。

final修饰类,则类不能被继承。

final修饰方法,则方法不能被重写。

final不能修饰抽象类

final如果修饰引用变量的话,引用变量所指向的值是可以改变的,只是这个引用只能指向这个地址而已,也就是引用本身的值不能变。

实现错题记录功能,可以使用文件操作来存储和读取错题信息。以下是一个简单的 C 语言代码示例: ```c #include <stdio.h> #include <stdlib.h> #define MAX_SIZE 100 // 最大错题数 // 定义结构体存储错题信息 typedef struct { int question_num; // 题号 char question[100]; // 题目 char answer[100]; // 答案 char explanation[200]; // 解释 } Question; // 存储错题信息到文件 void save(Question* questions, int size, char* file_name) { FILE* fp; fp = fopen(file_name, "w"); if(fp == NULL) { printf("无法打开文件\n"); exit(1); } for(int i = 0; i < size; i++) { fprintf(fp, "%d %s %s %s\n", questions[i].question_num, questions[i].question, questions[i].answer, questions[i].explanation); } fclose(fp); } // 从文件中读取错题信息 void load(Question* questions, int* size, char* file_name) { FILE* fp; fp = fopen(file_name, "r"); if(fp == NULL) { printf("无法打开文件\n"); exit(1); } int i = 0; while(fscanf(fp, "%d %[^\n] %[^\n] %[^\n]\n", &questions[i].question_num, questions[i].question, questions[i].answer, questions[i].explanation) != EOF) { i++; } *size = i; fclose(fp); } int main() { Question questions[MAX_SIZE]; int size = 0; // 读取文件中的错题信息 load(questions, &size, "questions.txt"); // 在此处添加代码,实现错题记录功能 // 存储错题信息到文件 save(questions, size, "questions.txt"); return 0; } ``` 在上述代码中,我们定义了一个 `Question` 结构体来存储每一道错题的信息。`save` 函数将错题信息存储到文件中,`load` 函数从文件中读取错题信息。你可以在 `main` 函数中添加代码来实现错题记录功能,比如让用户输入题目和答案,将输入的信息存储到结构体数组中。最后,调用 `save` 函数将更新后的错题信息存储到文件中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值