第一周学习总结-Java
2018年7月15日
暑假第一周,我从网上找了一些讲Java的视频,学到了一些Java的基础,同时也弥补了一些之前学c/c++的知识漏洞。例如,了解到了原码反码补码和按位取反运算符(~)的运算原理。
在计算机中一个整型数4字节,1字节8位;正数的原码反码补码是一样的;二进制数以补码的形式存储,负数以其正值的补码形式存在。
负数原码转换为反码,符号位不变,其他按位取反,反码转换为原码也是一样;原码转换为补码:符号位不变,其他按位取反,末位再加1,即反码末位加1。
-7 10000000 00000000 00000000 00000111 原码
11111111 11111111 11111111 11111000 反码
11111111 11111111 11111111 11111001 补码
接下来求7取反操作后的值(~为按位取反运算符)即~7的值
① 先写出7的原码
00000000 00000000 00000000 00000111
② 按位取反后变成未知数X的补码
11111111 11111111 11111111 11111000
③ 补码变反码需要末位减一,得到未知数X的反码
11111111 11111111 11111111 11111000
- 00000000 00000000 00000000 00000001
———————————————————————
11111111 11111111 11111111 11110111
④ 反码变原码需要符号位不变,数值位按位取反,得到原码,此时可看出X=8
10000000 00000000 00000000 00001000
其次,还总结了一些c++与java的不同点并发表在博客园。Java与c++都是面向对象语言,我们学过c++,再根据这些不同点来学java就能更快掌握java的基础。
本周总计学习时间可达到20小时,周一至周五每天有4个小时用来学Java,周六周日休息、总结,其中用在代码上的时间基本上每天有1个小时。
本周遇到了一些细节性的问题,比如要用Scanner类输入数据就必须有一句import java.util.Scanner;但是我把util写成了until,所以编译一直报错,仔细检查一遍就解决了问题。还有一些问题是对Java一些语句用法不熟悉造成的,比如Scanner中没有nextChar方法,还有nextInt、nextLine方法连用出现无法录入数据的现象。原因是nextInt方法只获取了整数就结束了,整数后边的\r\n不吸收,而nextLine方法遇到\r\n就会结束,解决方法是将nextLine改为next。这些问题不算大问题,所以加起来总共花在上面的时间大概只有1小时。
这一周学习生活很充实,下一周我会继续保持目前速度。