牛客网刷题中秋节前开启java专项练习错题总结第一天
Posted 莪假裝堅強
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客网刷题中秋节前开启java专项练习错题总结第一天相关的知识,希望对你有一定的参考价值。
【牛客网刷题】中秋节前开启java专项练习错题总结第一天
概述
还有十几天就到中秋节了,从此又老了一岁,也多了一年的知识积累。对于这样一个特殊的节日,今年希望通过一种特殊方式度过。决定在中秋节之前开启做题之路🦌,对,就是做题,说到做题,应该有好长的时间没有好好的做过一整套的题目,已经忘记了做题的感觉了。
经过一段短暂都回忆之后,似乎回想起来了做题对于我来说比较深刻的两点感悟。
-
首先做题过程是一个让大脑可以持续思考的过程。同时也可以发现自己的知识点中欠缺的地方。从而有一种想要立刻将欠缺的地方进行弥补的冲动感。
-
做题的过程是一种持续享受的过程,特别是是做出一道比较有深度的题目时,这种成就感可以让自己的大脑兴奋一整天,就好像坚持跑完25分钟的长跑之后停下来时的感觉,真的很爽。
思来想去决定做牛客中的java专项练习题
,总共八百多道题目,希望可以在中秋节之前做完第一遍。在这里提前祝自己中秋节快乐😊
写在前面
很久很久之前就发现了牛客网
这个很不错的做题网站,差不多一年前通过它写了一些和前端有关的题目,基本上每个专项练习都没有完全的写完,或者说叫做基本没怎么写。因此感觉有些遗憾。
之前一直没有很好的经营它,注册之后就一直没怎么登录过,然而今天通过自己的一番打理和信息的完善之后,并大致的了解了它的功能和它能给我带来的帮助之后,就对它产生了不舍之感。
通过查看之前的做题数据,可以说是惨不忍睹,基本上只能说是做过。
从下面的数据可以看到编程语言
6.2%
,下面的八项除了go
之外,其它的语言都有一定的学习和接触,并且一些如css
和c++
等都有做了一些题目,不过都没有超过一百。从今天开始决定坚持将java
的844道题目都做一遍。并将一些比较有代表性的错题进行记录。
- 随着知识扩展,一些java语言的基础知识许多都忘记了
- 为了检测自己java知识的不足之处,希望可以通过专项练习题的方式检测掌握不是很好的知识点
- 分析错题,并且通过题目联想相似的知识点,让知识产生联系,同时挖掘之前没有接触到的细节
错题分析
下面是从错题中挑选了几道比较有代表的性的错题,希望可以通过本次的总结减少以后的出错。🐕
可以看到网站很贴心的将错题单独开了一个专栏,可以很方便的找到错题。
在使用一个网站之前对于一个网站的的所有功能有一个大致的了解,会让自己更加的依赖该网站。🐕
值得记录的错题
💪 题目一
👌 本题知识点
首先需要知道的是Java表达式转型
规则由低到高转换
-
所有的byte,short,char型的值将被提升为int型;’
-
如果有一个操作数是long型,计算结果是long型;
-
如果有一个操作数是float型,计算结果是float型;
-
如果有一个操作数是double型,计算结果是double型;
-
被fianl修饰的变量不会自动改变类型,当2个final修饰相操作时,结果会根据左边变量的类型而转化
🐇 题目分析
语句一:由于b1和b2都是btye类型的,相加的时候将向上转为int类型,使用byte类型接收是错误的
语句二: b4,b5和b6都是btye类型的,但是由于使用final进行修饰,根据上面的第五点,b6可以是任何的数据类型,所以正确
语句三: b8=(b1+b4);虽然b4不会自动提升,但b1仍会自动提升,所以结果需要强转,b8=(byte)(b1+b4);,所以错误
语句4:b7=(b2+b5); 同上。同时注意b7是final修饰,即只可赋值一次,便不可再改变,故错误。
最终答案:bcd
❌ 错误原因
- 对于第五点没有了解过
💪 题目二
本题对于某个知识点不是很了解的话,很容易出错。
👌 本题知识点
在Integer中,使用 == 来作比较两个对象时(和常数进行比较时,是直接比较值是否相同),需要注意的一点是:对Integer对象进行初始化赋值时,是通过调用valueOf来实现的。
而对于-128到127之间的数(最小值-128是确定了的,但是最大值127是可以通过虚拟机的配置文件来配置),Java会对其进行缓存。而超出这个范围则新建一个对象。
也就是说,如果第一次创建值时在缓存范围之内,第二次如果也是第一次相同的数,其实就是直接在缓存中取的,并没有新建对象,地址相同。
所以答案选:D
💪 题目三
用new关键字创建字符串对象时,JVM会先检查字符串常量池中时候有存在的对应字符串,如果已经存在,则不会在字符串常量池中创建,如果没有存在,那么就会在字符串常量池中创建一个字符串对象,然后还会去堆内存中创建一份字符串对象,把常量池中的对象内容拷贝到内存中的字符串对象,然后返回堆内存中的字符串对象内存地址。综上所述,选项A正确。
总结
今天是第一天
写java的专项练习题
,错的比较多,139道题,做错了78道题,有一部分题是由于粗心没有认真的审题,有的题目是由于一些知识忘记了,然而还有一些题目的确是之前没有接触过的知识点。通过这次的做题经历发现了自己没有掌握的知识点,下次做题希望可以提高正确率。💪
写在最后
在中秋节到来之前将
java专项练习题
做完一遍,并将不是很熟悉的知识进行更加深入的研究和复习。
牛客网刷题记录 || 第一番
🛒本文收录于专栏:【牛客网刷题记录】
📢专栏目的是对于刷题过程的记录,题型的列举和讲解,会持续输出,欢迎免费订阅!!
这是牛客网刷题记录专栏第一篇博文,先给大家简单介绍一下牛客网,牛客网是一个集笔面试系统、题库、课程教育、社群交流、招聘内推于一体的优质网站,牛客网题库中包含几万道题目,注重通过边学边练的模式揽获编程人员的喜爱
牛客网干净整洁的界面,人性化的布局,高质量的题库题解,丰富的大厂面试题,让我想把它分享给大家,推荐大家来牛客网刷题,链接我就放在这了有需要自取👉点击开始刷题
小Tips:注册完之后,不用填信息直接点X,开启刷题之旅~
目录
C语言入门
🔥1.复制部分字符串
👌描述
键盘输入一个长度为len(1 <= len < 30)的字符串,再输入一个正整数 m(1 <= m <= len),将此字符串中从第 m 个字符开始的剩余全部字符复制成为另一个字符串,并将这个新字符串输出。要求用指针处理字符串
输入描述:
键盘输入一个长度为len(1 <= len < 30)的字符串,再输入一个正整数 m(1 <= m <= len)
输出描述:
输出复制的新字符串
示例1:
输入:helloworld
6
输出:world
👌代码
#include <iostream>
using namespace std;
int main()
char str[30] = 0 ;
cin.getline(str, sizeof(str));
int m;
cin >> m;
// write your code here......
char *p = NULL;
p = &str[m-1];
cout << p;
return 0;
👌题解
*p 和p[]一个意思,p是一个char数组的首地址,然后把str[m-1]的地址取出来赋值给p,就可以打印出来m-1后的字符串,很nice
🔥2.牛牛的排序
👌描述
牛牛试图给一个长度为 n 整数数组排序,即实现一个 void sort(int *array,int n)
输入描述:
第一行输入一个正整数 n ,表示数组长度。
第二行输入 n 个正整数,表示数组中每个元素的值
输出描述:
输出排序后的数组
示例1:
输入:
5
2 9 8 1 3
输出:
1 2 3 8 9
👌代码
#include <iostream>
using namespace std;
int main()
int n=0,v=0;
cin>>n;
int arr[n];
for(int i=0;i<n;i++)
cin>>v;
arr[i]=v;
sort(arr, n);
void sort(int *array,int n)
for(int i=0;i<n;i++)
for(int j=0;j<n-i-1;j++)
if(array[j]>array[j+1])
int t=array[j];
array[j]=array[j+1];
array[j+1]=t;
for(int i=0;i<n;i++)
cout<<array[i]<<" ";
👌题解
这个牛牛排序,就是一个数组排序问题,用到了冒泡排序一个很关键和实用的排序方法,for循环控制一下输入输出就ok了,相信大家都能看懂的
C++入门
🔥3.输出水仙花数
👌描述
在控制台输出所有的“水仙花数”
水仙花数是指一个三位数,其各位数字的立方和等于该数本身
举例:
153就是一个水仙花数
153 = 111 + 555 + 333 = 1 + 125 + 27 = 153
输入描述:
无
输出描述:
输出所有的“水仙花数”,每个“水仙花数”占一行,格式如下:
xxx
yyy
zzz
👌代码
#include <iostream>
using namespace std;
bool Nacissistic(int num)
int t = num;
int a = num % 10;
num /= 10;
int b = num % 10;
num /= 10;
int c = num % 10;
if (t == a*a*a + b*b*b + c*c*c)
return true;
else
return false;
int main()
int num;
for (num = 100; num <= 999; num++)
if (Nacissistic(num))
cout << num << endl;
return 0;
👌题解
要知道水仙花数只会是三位数,要把所有的三位数,对每一个三位数检查是否是水仙花数,用对10取余求得个位数字,让其除以10以后再对10取余求得10位数字,最后再除以10以后对10取余求得百位数字。三个数字各自的三次方求和与原数比较,如果相等则是水仙花数,输出该数
🔥4.计算小球走过的路程和反弹高度
👌描述
一球从 h 米高度自由落下,每次落地后反跳回原高度的一半再落下,求它在第 n 次落地时共经过了多少米?第 n 次返弹多高?
输入描述:
输入小球下落的高度和落地的次数(先输入小球初始高度再输入反弹次数)
输出描述:
输出小球第 n 次 落地时经过的距离和第 n 次反弹的高度(保留小数点后1位)
示例1:
输入:
100 1
输出:
100.0 50.0
示例2:
输入:
100 3
输出:
250.0 12.5
👌代码
#include <iostream>
#include <iomanip>
using namespace std;
int main()
// 下落的高度和落地的次数
double h;
int n;
cin >> h;
cin >> n;
// write your code here......
//记录第n次反弹时总共走过的记录
double temp=0;
for(int i=1;i<=n;i++)
h/=2;
temp+=h*3;
//减去最后反弹的高度h
cout<<fixed<<setprecision(1)<<temp-h<<" "<<h<<endl;
return 0;
👌题解
利用循环计算每次反弹时的高度(记为h),以及经过了多少米(记为temp),由于要输出的是第n次落地时走了多少米,所以temp要减去最后反弹的高度h
以上是关于牛客网刷题中秋节前开启java专项练习错题总结第一天的主要内容,如果未能解决你的问题,请参考以下文章