您的位置:首页 > 编程语言 > Java开发

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/1001/124/12
第二周250/3002/248/36
参考:软件工程软件的估计为什么这么难软件工程 估计方法

计划学习时间:24小时

实际学习时间:24小时

参考资料

Java学习笔记(第8版)

《Java学习笔记(第8版)》学习指导
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: