20165228 2017-2018-2 《Java程序设计》第2周学习总结
教材学习内容总结
- 标识符:名字
组成:字母/下划线/美元符号或数字
注意:标识符的第一个字符不能是数字字符,且标识符不能是Java关键字以及ture、false和null - Unicode字符集
- 关键字:有特殊用途,例如int、double、float、class
基本数据类型: - 逻辑类型:boolean(只有true或者false)
- 整数类型:byte、short、int、long
其区别:取值范围不同,占有内存空间不同。
byte -128~+127 1字节
short
int
long 8字节 - 字符类型:char
赋值:char c = ‘ XX ’ ; XX需要时unidode字符集里的字符
转化:(int)‘c’ 指的是将字符c转化为int类型表示
转义:“\u+地址(16进制)”表示位置上的字符
浮点类型:float(8位有效)、double(16位有效)
赋值:float m =12.123456f;
double n =12.12345678901234;
注意:精度从低到高的排序是:byte、short、char、int、long、float、double
低精度赋值给高精度时需要转化,高精度赋值给低精度时则不用,但会损失精度
具体程序中的java:
System.out.println("汉字:"+chinaWord+"的位置:"+(int)chinaWord);
“+”表示首尾相接,输出的结果为“汉字:X的位置:xxxx”
- 输入
步骤(1)创建一个Scanner对象
Scanner reader = new Scanner(System.in);
步骤(2)Scanner对象调用方法读取用户键盘输入的数据(等待用户键盘输入)
int m =reader.nextInt();
红标的字类型应一致
- 输出
System.out.println();
System.out.printf("格式",值列表)
-数组:一些类型相同的变量组成的集合
声明数组:
类型 [] 数组名;
或
类型 数组名[]
例:int [] a
创建数组:
数组名 = new 类型[整值];
a = new int [5]
计算一维数组长度(对二维数组使用该命令时显示的是一维数组的个数):
数字名.length
-数组的初始化
一维数组的初始化:
int [] 数组名 ={a,b,c,...};
二维数组的初始化:
int [] [] 数组名 ={ {...}, {...}, {...}, {...}};
在数组生成的同时就已初始化
-数组的引用
即数组本身存放的值
两个类型相同的数组,一旦二者具有相同的引用,那么二者就具有一样的单元
- 运算符与表达式
如果表达式中有双精度浮点数(double型数据),则按双精度进行运算
如果表达式中最高精度是单精度浮点数(float型数据),则按单精度进行运算
如果表达式中最高精度是long型整数,则按long精度进行运算
如果表达式中最高精度低于int型整数,则按int精度进行运算
Java允许把不超过byte,short和char的取值范围的算术表达式的值赋给byte,short和char型变量
通过变量给另一变量赋值时例如x = m + 'a';应写成
x = (byte)(m + 'a');
instanceof运算符: 类+对象
对象+instanceof+类
检验对象是不是该类,若是则输出ture,若不是则输出false
-语句概述
方法调用语句:例如System.out.println("Hello");
表达式语句:由一个表达式构成一个语句,即表达式尾加上分号
复合语句:可以用{ }把一些语句复合起来构成复合语句
空语句:一个分号则是一跳空语句
控制语句:控制语句分为条件分支语句、开关语句和循环语句
package语句和inport语句:与类、对象有关
- 条件分支语句
if(条件表达式) {
//if操作
}
if(条件表达式) {
//if操作
}
else {
//if操作
}
if(条件表达式) {
//if操作
}
else if(条件表达式){
//else if操作
}
- switch开关语句(单条件多分支)
switch(表达式){
case 常量值1:
若干个语句
break;
case 常量值2:
若干个语句
break;
case 常量值n:
若干个语句
break;
default:若干语句
- 循环语句
while (表达式) {
//循环体
}
- break和continue语句
break和continue使用在循环体中。
break:运行到break时立刻结束整个循环语句
循环体运行到满足表达式为止
continue:运行到continue直接跳出本次循环,进入到下一一次循环中 - 数组与for语句
传统方式:
for(int n=0;n<a.length;n++) {
System.out.print(a[n]+ " ");
}
System.out.println();
for(int i:a) {
System.out.print(i+" ");
}
for(声明循环变量:数组的名字) {
...
}
教材学习中的问题和解决过程
- 问题1:高精度变量赋值给低精度变量为什么可能会损失精度?
- 问题1解决方案:高精度变量能够赋值的数更多,当其值将大于低精度最大可存储数值时,低精度变量储存的值其实是循环值
- 问题2:为什么1.5f与1.5不相等?
- 问题2解决方案:1.5是double型数据,而1.5f是float型数据,1.5与1.5f仅前面float型数据的位数相等,后面的double型比float型数据高的精度就不等了
代码调试中的问题和解决过程
- 问题1:在编译某个程序时,提示“错误:需要class,interface或enum”
- 问题1解决方案:检查程序时发现把"{"输成了中文符号"{"导致调试失败
代码托管
本周我调整了代码的文件夹,根据不同单元和另外找的代码分到不同文件夹里,所以本周的代码数应为统计的代码数459减去上周的235,本周实际敲的代码总行数为224.
(statistics.sh脚本的运行结果截图)
上周考试错题总结
- 错题及原因,理解情况
错题:带包的代码编译运行测试
原因:敲代码的时候出错,然后一直编译失败。当时没有检查出原因
理解情况:已经掌握带包的代码编译及运行
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 25篇 | 400小时 | |
第一周 | 235/235 | 1/1 | 15/15 | |
第二周 | 224/459 | 2/3 | 15/30 |