20155318 2016-2017-2 《Java程序设计》第二周学习总结
2017-03-05 23:41
316 查看
20155318 2016-2017-2 《Java程序设计》第二周学习总结
教材学习内容总结
Java编程风格
基本语法与C相似;调用main函数写public static void main (String[] args)
Java是自由格式语言(确实比C自由一些,虽然编的不多,但是能感受到)
认识Java的类型与变量
类型基本类型:整数、字节、浮点数、字符、布尔(true&false)
整数可分为short(2)、int(4)、long(8)
浮点型可分为float(4)、double(8)o
boolean类型中的true/false不能与其他类型进行运算
类类型
程序中写下一个浮点数,系统会默认为double类型,写下一个整数时默认不超过int类型的长度,如果表达式有不同类型的数值,运算时以较长类型为主,其他数值自动提升。
变量
命名规则:驼峰式
局部变量使用前需要赋值(可以边定义边赋值)
final变量不可修改
字面常数
忽略符号''
运算符
算数运算符、比较条件运算符、逻辑运算符、位运算符、递增递减运算符、指定运算符
=与
==的区别,前者是赋值,后者比较是否相等。
位运算符的一个例子,可以显示写成二进制数每一位按位取反。
byte number = 0; System.out.printli(~number);
逻辑运算符的快捷方式运算
位运算:>>最左边补原来位,>>>最左边补0;
类型转换
float PI = 3.14F和
float PI =(float)3.14
运算时自动提升类型
掌握Java流程控制的方法
分支if...else...
switch
循环
for(初始式;true/false;重复式)
前测试循环
while
while(true){...}直接循环
后测试循环
do{...}while(条件);
退出
break 离开循环
continue 退出本次循环进入下一次循环
配合标签使用
程序优化
多个相同类型的选择更倾向于用switch而不是
if else
如果isOpened是boolean型,在if中判断可直接用
if(isOpened)
教材学习中的问题和解决过程
问题1: 课本68页有关溢值的一段代码,为什么count+1>Interger.Max_VALUE永远不会是true?
问题1解决方案:书上给出的解释是Java中字节的第一位是1表示一个负数,Interger.Max_VALUE代表int所能表示的最大值 0x7FFFFFFF,再加1后是0xFFFFFFFF,这在Java中表示一个负数。
问题2:
Math.radom()会产生0.0到1.0的任意值吗?是什么类型的值?
问题2解决方案
public class MathRandom { public static void main(String[] args){ int number1 =(int) (Math.random()*10); float number2=Math.random(); System.out.println(number1); System.out.println(number2); } }
调试这些代码的时候出现了这样的提示
可见产生的是double型的数,修改程序后进行编译得出想要的结论
如果修改其中一行代码为
float number2=(float) (Math.random());也可以得出正确结论,相当于将MathRandom函数产生的随机数强制类型转换一float形式输出
代码调试中的问题和解决过程
问题1: 在Java中用System.out,println("i=%d",i)输出时报错
问题1解决方案:当输入
public static void main(String[] args){ for(int i=1;i<=10;i++){ System.out.println("i=%d",i);
时,显示这样的错误提示
修改为
System.out.println(i);运行正常;
上网查了一下printf,println和print的区别
public static void main(String[] args) { int i = 4; double j = 5; System.out.print("用print输出i:"+ i);//直接写参数 System.out.println( "用println输出i:"+ i);//直接写参数 System.out.printf("i的值为%d,j的值为%f", i,j); }
运行结果为
print将它的参数显示在命令窗口,并将输出光标定位在所显示的最后一个字符之后。
println 将它的参数显示在命令窗口,并在结尾加上换行符,将输出光标定位在下一行的开始。
printf是格式化输出的形式。
问题2:continue在for前后配合标签使用产生影响的不同?
问题2解决方案:
分别运行continue back1和continue back2
public class ContinueBack { public static void main(String[] args){ back1: for (int i = 0;i<10;i++ ){ back2: for (int j=0;j<10;j++){ if (i==9){ continue back1; //continue back2; } } System.out.println("test"); } } }
产生的结果
continue back1:产生9个text
continue back2:产生10个text
结论:continue配合标签可以自由跳至任何一层for循环
代码托管
代码提交过程截图:运行
ssh -T git@git.oschina.net git init git remove add origin http://git.oschina.net/bestiisjava2017/HelloWorld.git git pull origin master git add . git commit -m "week03" git push origin master
截图
代码量截图:
运行
$ chmod +x statistics $ ./statistics
上周考试错题总结
试卷还没发,我印象中有这么几道(还会持续更新)学习JavaAPI要掌握API在设计时的封装、继承、多态、接口架构
只有通过TCK兼容性测试的实现,才可以使用Java这个商标
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 50/100 | 1/1 | 24/12 | |
第二周 | 250/300 | 2/2 | 48/36 |
计划学习时间:24小时
实际学习时间:24小时
参考资料
Java学习笔记(第8版)《Java学习笔记(第8版)》学习指导
相关文章推荐
- # 20155236 2016-2017-2 《Java程序设计》第二周学习总结
- 20155328 2016-2017-2 《Java程序设计》第二周学习总结
- 20155230 2016-2017-2《Java程序设计》第二周学习总结
- 20155336 2016-2017-2《JAVA程序设计》第二周学习总结
- 20155238 2016-2017-2 《Java程序设计》第二周学习总结
- 20155315 2016-2017-2 《Java程序设计》第二周学习总结
- 20155302 2016-2017-2 《Java程序设计》第二周学习总结
- 20155318 2016-2017-2 《Java程序设计》第八学习总结
- 20155318 2016-2017-2 《Java程序设计》第六周学习总结
- 20155318 2016-2017-2 《Java程序设计》第七学习总结
- 20155213 2016-2017-2 《Java程序设计》第二周学习总结
- 20155330 2016-2017-2 《Java程序设计》第二周学习总结
- 20155216 2016-2017-2 《Java程序设计》第二周学习总结
- 20155326刘美岑 2016-2017-2 《Java程序设计》第二周学习总结
- 20155227 2016-2017-2 《Java程序设计》第二周学习总结
- 20155333 2016-2017-2《Java程序设计》第二周学习总结
- 2016-2017-2 《Java程序设计》第二周学习总结
- 20155318 2016-2017-2 《Java程序设计》第一周学习总结
- 20155318 2016-2017-2 《Java程序设计》第十周学习总结
- 20155334 2016-2017-2 《Java程序设计》第二周学习总结