20145308刘昊阳 《Java程序设计》第2周学习总结
20145308刘昊阳 《Java程序设计》第2周学习总结
教材学习内容总结
第三章 基础语法
3.1 类型、变量与运算符
- 类型
- 基本类型
- 整数(short/int/long)
short: 2字节
int: 4字节(默认整数类型)
long: 8字节 - 字节(byte)
1字节=8个二进制数 - 浮点数(float/double)
float:4字节
double:8字节(默认浮点数类型) - 字符(char)
每个字符2字节(汉字、英文字母)
字符表现形式'a',字符串表现形式"ab" - 布尔(boolean):分为true和false两种,无法与其他类型做运算
- null: 内容为null(空)
- 整数(short/int/long)
- 类类型
- 注释
- 三种注释
- /:单行
- /**/:多行(批注里套批注是不对的)
- /** */:javadoc文档注释(读取每一行后,删掉前导的符号和符号前的空格再复制到输出文件)
- 为何要注释
- 提高代码的可读性,养成写代码前先写注释的习惯
- 注释算法或者代码为什么这样写成,而不是代码做什么
- 三种注释
- 变量
Camel Case
命名法:变量名以小写字母开始,并在每个单字开始时第一个字母使用大写- 变量声明基本规则:明确数据类型+变量名称(不可以以数字为开头,也不可以使用一些特殊字符和关键字)+数据来开辟空间
- 变量在运算过程中,数据类型不一样计算机会提升数据类型
例如:byte b=3; b=b+2;(运行结果会将2字节的Byte型变量提升成4字节的int型变量) - 指定变量值后,不想再改变变量值,在变量声明前加
final
- 局部变量使用前要初始化
- 字面常量
- 十进制直接书写,十六进制表示以0x开头,八进制表示以0开头,二进制以0b开头
- 浮点数的科学记号表示法0.00123=1.23e-3
- 小数计算机默认变量类型为
Double
,要书写成小数f
的形式来转换成float
型 - 表示字符需要用“'”括住字符
- \ :转义字符,转变符号后字母或符号的含义,例如
\n
、\b
,如果想要打印"Hello"
,代码就要书写如下"\"hello\""
,通过“ \ ”将Hello两边的“ " ”符号转义
- 数字常量
- 可以用下划线来分隔数字
- 运算符
- 算术运算
- +、-、*、/、%
- +:除了数字运算,还可用于字符串的连接,如
System.out.print("5+5="+1+0);
输出结果为5+5=10
s=s+5
与s+=5
的区别:前者进行加法运算后再将值赋给s(共进行2次运算),后者在s的基础上自增5(共进行1次运算)
- 关系运算
- 大于 > 、大于等于 >= 、小于 < 、小于等于 <= 、相等 == 、不相等 !=
- 不能对浮点数进行相等性运算
- =与区别:=是指定运算,是比较运算
- 条件运算符(Conditional Operator): 条件式 ? 成立返回值 : 失败返回值
- 逻辑运算:运算结果是boolean值
- &&、||、!
- &&、||为快捷方式运算,即左操作数为
false
,直接判断整个算式结果为false
- 位运算:对2进制数字串进行运算
- &、|、~、^、<<、>>、>>>
- << :左移,最右位补0 >> :右移,最高位为0(正数)补0,最高位为1(负数)补1 >>> :右移,最高位补0
- 位运算是逐位运算
- 递增、递减
- i++、i-- : 执行一次操作后再自增\自减
- ++i、--i : 先自增\自减后再执行操作
- 赋值
- = : 将右侧值赋给左边
- 左移并赋值<<=:a<<=b,a=a<<b
- 右移并赋值>>=:a>>=b,a=a>>b
- 类型转换
短->长
安全,类型不同时计算机采取类型提升的方式,以长度最长的为准,长->短
会损失精度- 用
float PI = 3.14F;
形式将3.14存储成float
型 - 用
long number=2147483648L
形式将2147483648存储成long
型
3.2 流程控制
- 机构化程序设计三种语句:顺序、分支、循环
- 分支
- 类型
- if
- if...else
- if...else if:执行完就结束,不再向下执行
- switch...case
- 应用于判断四种类型int,byte,short,char,字符串,不能判断运算结果为布尔型的变量
- case语句间没有位置顺序,无break就向下执行
- default语句最后执行
- 循环
- 类型
- for
for(int x=3;循环执行条件;重复式)
可以在for语句中定义一个临时变量,在语句外不可用,节省空间- 判断循环执行语句必须是boolean的重复式
- while
- 满足条件式时执行循环语句
- do...while
- 无论是否满足条件式都至少执行一次循环语句,之后满足条件式再执行
- for
- break/continue
- break和continue单独存在时,下面可以有任何语句,因为都执行不到
- break可以离开当前的区块,并执行区块后下一个描述句
- continue会略过之后的描述句,并回到循环区块开头进行下一次循环
教材学习中的问题和解决过程
- 问题:对于数据类型间的转换(数据类型的强专和丢失精度不能理解)
- 解决过程:理解不了为什么强制转换或者会丢失精度,从根源解决问题,看了视频发现各种数据类型的存储空间不同,数据类型不同会发生溢出(overflow)或者无法运算等错误情况,记住了每种数据类型的存储空间,就从根本上解决了类型强转换的方式和计算机如何提升数据类型以防止溢出情况发生
代码调试中的问题和解决过程
-
问题
- p62代码运行结果错误
- 解决过程:对照代码和报错提示,发现把printf打成了println,修改后发现成功了,不知道为什么println不能打印这个类型的变量,需要以后解决
- p62代码运行结果错误
-
问题
- p55代码运行结果错误
- 解决过程:将类名称和文件名改成相同的名称
- p55代码运行结果错误
-
问题
- p60代码运行结果错误
- p60代码运行结果错误
-
解决过程 : 调试了好几遍,不报错但是也不出结果,好郁闷,让同学帮着看了下,发现把%d抄成了%b,改过来了,运行成功
其他(感悟、思考等,可选)
- 上一周的学习中后半部部分的包有关内容不是很清楚,这周学习开始时又学习了一遍,体会到欠下的东西都是要自己还的,比起想着偷懒,还不如快点解决问题
- 上一周学习时只学习和安装了IDE,这周安装练习使用了IDEA,感受大了软件的便利但也感受到了不习惯的地方,还需要多加练习
- 这周主要学习了Java的基本语法,感觉和C语言语法的相似之处还是很多的
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 30/30 | 1/2 | 16/16 | 基础知识 |
第二周 | 100/130 | 1/3 | 20/36 | 基本语法 |
第三周 | 0/0 | 0/0 | 0/0 | |
第四周 | 0/0 | 0/0 | 0/0 |