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.14Ffloat 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

上周考试错题总结

试卷还没发,我印象中有这么几道(还会持续更新)

  1. 学习JavaAPI要掌握API在设计时的封装、继承、多态、接口架构
  2. 只有通过TCK兼容性测试的实现,才可以使用Java这个商标

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 50/100 1/1 24/12
第二周 250/300 2/2 48/36

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:24小时

  • 实际学习时间:24小时

参考资料

20155318 2016-2017-2 《Java程序设计》第二周学习总结的更多相关文章

  1. 20145304 刘钦令 Java程序设计第二周学习总结

    20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...

  2. 201521123063 JAVA程序设计 第二周学习总结

    1.本周学习重点(2.27-3.5) java中的数组 以二维数组为例,数组名为scores,则 (1)先声明数组 int[][] scores;或int scores[][];或int[] scor ...

  3. 2017面向对象程序设计(Java)第二周学习总结

    2017面向对象程序设计(Java)第二周学习总结 直系学妹学弟们好!额...不要问我为什么把学妹放前面,我也不知道!我只是你们和蔼可亲的学长一枚而已.也不要问为什么是第二周学习总结而不是第一周,因为 ...

  4. 201871010106-丁宣元 《面向对象程序设计(java)》第二周学习总结

    丁宣元 <面向对象程序设计(java)>第二周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在 ...

  5. 201521044152<java程序设计>第一周学习总结

    本周学习总结 java开发时间虽然很短,但是发展迅速,已成为现在非常流行的一门语言,很开心能有幸学习java.第一周学习了java的平台,运行环境jdk以及jrt等等新名词,还了解了eclipse的基 ...

  6. 20145304 刘钦令 Java程序设计第一周学习总结

    20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...

  7. 201621123007 Java程序设计第一周 学习总结

    第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...

  8. 201871010121 王方 《面向对象程序设计(java)》 第二周学习总结

    这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11475 ...

  9. 杨其菊201771010134《面向对象程序设计Java》第二周学习总结

    第三章 Java基本程序设计结构 第一部分:(理论知识部分) 本章主要学习:基本内容:数据类型:变量:运算符:类型转换,字符串,输入输出,控制流程,大数值以及数组. 1.基本概念: 1)标识符:由字母 ...

  10. 201777010217-金云馨《面向对象程序设计(Java)》第二周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

随机推荐

  1. 四、并行编程 - 并行LINQ(PLINQ) 的使用。AsParallel

    用于对内存中的数据做并行运算,也就是说其只支持 LINQ to Object 的并行运算 一.AsParallel(并行化) 就是在集合后加个AsParallel(). 例如: , ); == ); ...

  2. codeforces 414D Mashmokh and Water Tanks

    codeforces 414D Mashmokh and Water Tanks 题意 题解 \(a_i\):第 \(i\) 层的结点个数. \(b_i\):第 \(i\) 层初始有水的结点个数. 如 ...

  3. MySQL忘记密码处理方法

    在windows下: 打开命令行窗口,停止mysql服务:        Net stop mysql 在cmd下启动mysql,一般到mysql的安装路径,找到 mysqld-nt.exe 执行:m ...

  4. 常用算法的C++实现

    常用算法的C++实现 // // DZAppDelegate.m // AlgorithmTest // // Created by dzpqzb on 13-8-4. // Copyright (c ...

  5. 对deferred(延迟对象)的理解

    deferred对象从jQuery 1.5.0开始引入 什么是defrred对象 开发网站过程中,我们经常遇到某些耗时长的JS操作,其中,既有异步操作(如Ajax读取服务器数据),也有同步的操作(如遍 ...

  6. Vue Spa切换页面时更改标题

    在Vue组件化开发过程中,因为是单页面开发,但是有时候需要页面的title根据情况改变,于是上网查了一下,各种说法花(wo)里(kan)胡(bu)哨(dong), 于是想到一个黑科技 documet. ...

  7. urlparse 用法

    ifrom urllib2 import urlparse ‘’ captcha_id = urlparse.parse_qs(urlparse.urlparse(link).query, True) ...

  8. 翻译 TI SerialBLEbridge V 1.4.1

    原文地址:http://processors.wiki.ti.com/index.php/SerialBLEbridge_V_1.4.1 Sample App Overview This page d ...

  9. npm run dev启动项目报错 Cannot find module 'webpack-cli/bin/config-yargs'

    一般是webpack的版本和webpackserver的版本不兼容导致的错误. 解决方法是先卸载这两个版本,再安装指定的版本. 卸载: 再安装指定或者最新版本的webpack和webpack-dev- ...

  10. javacript window对象

    Window -- 代表浏览器中一个打开的窗口: 对象属性 window //窗口自身 window.self //引用本窗户window=window.self window.name //为窗口命 ...