20155312 2006-2007-2 《Java程序设计》第三周学习总结

课堂内容总结

  • yyp复制上一行代码
  • 5不是false
  • statistics.sh换成.bat就可以在windows中运行脚本
  • 错误类型
    • 编译错误 Javac... -> 1~4周练习
    • 运行错误 Java...
    • 逻辑错误 1+1=8 -> debug
  • cpu 内存中取指令运行
    • 进行一个for循环:取指令、解析指令、执行指令
  • 局部变量、函数参数放“栈中”,函数执行完栈消失,堆一直存在

教材学习内容总结

  • 4.1定义类
class Clothes {
String color;//值域成员或对象数据成员
...
}
  • 4.1使用new建立实例
new Clothes();
  • 4.1将c1名称参考至新建对象
Clothes c1=new Clothes();
  • 4.1为对象的数据成员指定值
c1.color="red";
...
  • 4.1定义构造函数(目的:在建立对象时一并进行“赋值”)
Clothes2(String color,char size) {
this.color=color;
this.size=size;
}

接着便可以这样使用指定构造函数建立对象:

Clothes2 c1=new Clothes2("red",'S');
  • 4.1使用java.util.Scanner
import java.util.Scanner;//在public class... 前
...
Scanner scanner = new Scanner(System.in);//建立Scanner实例
...
guess=scanner.nextInt();//将标准输入中的下一个字符串 剖析为int型
  • 4.1使用java.math.BigDecimal得到浮点数更好的精确度
  • 4.1==用在对象类型,是比较两个名称是否参考到统一对象,equals()用于比较两对象的内含值。
  • 4.2打包基本类型
System.out.println(wrapper1.doubleValue() / 3);//将用Integer打包的对象wrappper1中的值以double类型返回
  • 4.2一般化类装箱:Number number = 3.14f;
  • 4.2类类型自动装箱时如果打包的值相同且在.low.high范围内,c1,c2会参考到同一实例(eg:Integer打包:若参考数值在-128-127之间且相同,第二个实例就是之前建立过放在缓冲区中的实例)
  • 4.3注意:建立类类型数组时,若未给定初始值,建立的实例个数为0!
  • 4.3System.arraycopy()五个参数:来源数组、来源起始索引、目的数组、目的起始索引、复制长度。Arrays.copyOf()两个 来源数组长度。(无需新建数组,eg:int[] score2=Arrays.copyOf(score1,score1.length);
  • 『思考题1』:举例说明什么是浅拷贝与深拷贝?
    • 「浅拷贝」只是将c1每个索引处所参考的对象也给c2来参考,没有复制出对象。c2[i] = c1[i];

    • 「深拷贝」c1每个索引参考的对象也会被复制,分别指定给c2的每个索引。 Clothes2 c = new Clothes2(c1[i].color,c1[i].soze); c2[i] = c;

  • 『思考题2』:你遇到过乱码的情况没?有的话如何解决问题的?
    • 还没有遇到过
  • 4.4注意:以" "包括的字符串,只要内容相同,JVM只创建一个String实例。
  • String:字符串常量,不可变。StringBuffer:字符串变量(在多线程环境下建议使用,会处理同步问题),主要操作是 append 和 insert 方法。StringBuilder:也是字符串变量,主要用在全局变量中(非多线程情况下使用,不处理同步问题)。
  • 5.2:Java private,protected,public三个权限
  • 『思考题』:private用在类前、方法前,可以吗?
    • 「答」:可以用在类前,书5.2.7在类中声明类时举的例子就用private声明类了。方法前应该也可以。
  • 5.2:注意返回值类型不同不可作为方法 重载依据。
  • 5.2:this()表示调用另一个构造函数,注意:this()调用只能出现在构造函数的第一行。
  • 5.2:被static声明的变量 方法可以用“类名称.”来调用。其方法和区块中不能出现this,不能调用非static方法和区块。

教材学习中的问题和解决过程

  • 『问题1』:"一个XXXX.java要有一个包含main函数的XXXXTester.java的测试类"这句话什么意思?

  • 『解决』:老师在第六章学习指导中提到:“教材中不少都是代码段,自己新建一个 TestJavaInheritance.java的类,把代码段输入进行测试”

  • 『问题2』:在运行P87中的Guess.java文件时,最开始没有出现任何提示,输入任意一个数字后程序可以正常运行,但如果直接按回车会出现这样的提示:

  • 『解决』:是我安装的jdk版本有问题,根据老师的指导卸载原版本,下载安装新版本后问题解决。

  • 『问题3』:javac -encoding 指定字符编码是什么?

  • 『解决』:用-encoding参数指定java源程序的编码格式,避免中文乱码情况。(在编译java程序时,若不指定源程序文件的编码格式,jdk首先获得操作系统默认的编码格式)

——参考javac -encoding 用法

  • 『问题4』:数组访问的foreach语法 是什么?

  • 『解决』:搜索了一下百度,其在Java中指的是增强式for循环。foreach(元素类型type 元素变量x : 遍历对象obj)。

  • 『问题5』:运行P109中的Sum.java时,出现了类似于“问题2”的问题,运行开始时没有提示“输入数字”,若按回车会出现错误,如果输入数字,可以继续运行,但是要输入两次0才能结束程序。截图如下:

  • 『解决』:同问题2。

  • 『问题6』:书中P110的Average.java程序计算由用户命令行自变量提供的整数的平均值结果输出:平均:NaN这是正确的吗?截图如下:

  • 『解决』:在执行程序时(java...)同时要输入想要计算的数字。

  • 『问题7』:5.2.8传值调用中的 CallByValue.java代码和书中一样但编译有错,编译截图、代码截图如下:



  • 『解决』:是因为jdk版本过低的原因,下载新版本后编译通过,运行正常。

代码调试中的问题和解决过程

  • 『问题1.1』:对P89中的DecimalDemo.java进行了改动,运用plus(),multiply(),divide(),分别计算d : a+b ;e : a*b; f : a/b。编译时出错:

  • 解决过程

    • 「尝试1」:将BigDecimal d = a.plus(b);System.out.println(d);这两句去掉后,编译没有错误,但运行时出错:

    • 「尝试2」:单独执行乘法、减法和乘法、 除法、加法,运行截图如下:(发现原因出在加法“plus()”和除法上)

  • 『解决』:把“plus()”改成“add()”结果可以实现加法功能。把操作数改为2.00.5可以实现除法功能。

  • 『问题1.2』plus()add()的区别是什么?

  • 『解决』:查了API,plus()返回值是自加后的结果,add(...)返回值是与其他数相加后的结果。

  • 『问题1.3』为什么用divide()无法计算1.0/0.8?

  • 『解决』:divide()首选标度是(this.scale() - devisor.scale())。1.0/0.8=0.125不在标度范围内,无法表示准确是商值所以出现错误提醒。

  • 『问题2』:为什么System.out.println("%d",foo);会编译出错?

  • 『解决』:将其改为System.out.printf("%d%n",foo);

  • 『问题3』:P139中的OverloadBoxing.java在idea中编译没问题并输出正常结果,但在vim中编译失败?(问题同样出现在“用this()调用构造函数”的编译过程和P141的ObjectInitialBlock.java的编译过程中)

  • 「分析」:问题存在普遍性,发现是我虚拟机无法编译有参数的构造函数。

  • 『解决』:是因为jdk版本过低的原因,下载新版本后编译通过,运行正常。

  • 『问题4』:用this(a)调用Some类中的构造函数1时编译出错:提示“类重复:Some”

  • 『解决』:把Some都换成了Some1(是因为这个Some类和其它程序里的Some重名但 内容不同的原因吧?)。

代码托管

上周考试错题总结

  • 填空:~0b1011的十进制值是(-12)

    • 出错原因:1011在内存中应该在前面补零:0000 1011取反后是1111 0100 表示的真值:1000 1100
    • 已理解
  • 判断:Java中, 非零数字等价于true(错)

其他(感悟、思考等,可选)

感觉自己在课本上下的功夫不少,但课堂测验成绩仍不理想,一方面是自学能力有待提高,最重要的是,参考老师的学习指导时,遇到不会的问题并没有解决,而是跳过去看下一个问题,导致测验上有些问题仍然不会。我会吸取教训,换一种方法学习第6章和第7章。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 4/0 1/3 28/80 下载了JDK和GIT
第二周 61/4 1/4 20/108 在unbuntu中熟练编写程序,熟练进行文件、目录等操作
第三周 684/65 1/5 27/128 初步配置vim方便使用,会自己解决一些代码问题

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

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

参考资料

20155312 2006-2007-2 《Java程序设计》第三周学习总结的更多相关文章

  1. Java程序设计第三周学习总结

    1. 本周学习总结 2. 书面作业 Q1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ...

  2. 20155312 2016-2017-2 《Java程序设计》第九周学习总结

    20155312 2016-2017-2 <Java程序设计>第九周学习总结 课堂内容总结 两个类有公用的东西放在父类里. 面向对象的三要素 封装 继承 多态:用父类声明引用,子类生成对象 ...

  3. 对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈

    对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈 一:教学中存在的学习问题 “1.由于同学们平时练习不足,上课总是出现跟不上老师的节奏的现象. 2.个别同学上课不认真听讲,打开 ...

  4. 20155312 2006-2007-2 《Java程序设计》第二周学习总结

    20155312 2006-2007-2 <Java程序设计>第二周学习总结 课堂内容总结 git:版本控制 生活中的容灾备份 归纳思维.实验思维.计算思维 计算机:实现自动化 学会使用快 ...

  5. 20155333 2016-2017-2 《Java程序设计》第九周学习总结

    20155333 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC(Java DataBase Connectivity) 驱动的四种类型 JDBC- ...

  6. 20155213 2016-2017-2 《Java程序设计》第九周学习总结

    20155213 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC(Java DataBase Connectivity)即java数据库连 ...

  7. 20155313 2016-2017-2 《Java程序设计》第一周学习总结

    20155313 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 本周的Java学习进入了一个全新的阶段,对于我这样的并没有每天花费时间钻研的同学来说,最后几 ...

  8. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  9. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  10. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

随机推荐

  1. java面试题:数据库mysql

    Web后端数据库一般用mysql. 数据库基础 Q:数据库三范式是什么? 第一范式:列不可再分 第二范式:行可以唯一区分,主键约束 第三范式:表的非主属性不能依赖与其他表的非主属性 外键约束 且三大范 ...

  2. pandas中series和dataframe之间的区别

    series结构有索引,和列名组成,如果没有,那么程序会自动赋名为None series的索引名具有唯一性,索引可以数字和字符,系统会自动将他们转化为一个类型object. dataframe由索引和 ...

  3. Appium+python自动化4-等待函数

    4.1 等待函数癈使用 4.1.1 为什么要使用等待函数 我们在做自动化的时候很多时候都不是很顺利,不是因为app的问题,我们的脚本也没问题,但是很多时候都会报错,比如一个页面本来就有id为1的这个元 ...

  4. Codeforces Beta Round #44 (Div. 2)

    Codeforces Beta Round #44 (Div. 2) http://codeforces.com/contest/47 A #include<bits/stdc++.h> ...

  5. 超强、超详细Redis入门教程【转】

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...

  6. spring cloud ribbon和feign的区别

    spring cloud的Netflix中提供了两个组件实现软负载均衡调用:ribbon和feign. Ribbon 是一个基于 HTTP 和 TCP 客户端的负载均衡器 它可以在客户端配置 ribb ...

  7. 解决JFinal多文件上传时只获取到第一个文件名

    我的思路: 用户生成时随即生成一串随机字符作为该用户的文件上传目录,并保存该字符串到用户的某一字段.需要显示上传的附件时,遍历这个文件夹.上传时可把文件名设置为上传时间. 1.生成上传路径 可写在注册 ...

  8. Django——模板语言相关内容

    Django模板语言相关内容   Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...

  9. 让 div中的div垂直居中的方法!!同样是抄袭来的(*^__^*)

    同样 ,水平居中很简单,给子div设置margin:0px auto; 垂直居中也不难::给父div设置display:table-cell;vertical-align:middle; 重点是dis ...

  10. 1F - A+B for Input-Output Practice (III)

    Your task is to Calculate a + b. Input Input contains multiple test cases. Each test case contains a ...