20145337《Java程序设计》第三周学习总结

时间:2022-09-21 21:47:50

20145337 《Java程序设计》第三周学习总结

教材学习内容总结

类与对象

  • 类与对象的关系:要产生对象必须先定义类,类是对象的设计图,对象是类的实例。我觉得在视频中对类与对象关系的描述更加形象,它说类是对现实生活中事物的描述,而对象就是这类事物,它是实实在在存在的个体,此外,通过举汽车的例子,也让我们对类与对象有了更深层次的理解。

  • 类在定义时要使用关键词class,而具体对象就是对应java在堆内存中用new建立的实体。

  • 在Java中,为个别对象的数据成员指定值的方式是:对象.对象成员,例如sun.color = "red";

  • 在一个java文档中可以有多个类,当类只需要描述一个事物,而不需要独立运行的时候,是不用写主函数的,例如教材第84页的Clothes类就没有主函数,它只是为了描述事物,这也类似于我们C语言中定义一个函数。不过我们尽量不要在一个类中写多个class,如果有多个class,也只能有一个类前面加public,要养成一类一文件的习惯。

标准类API

  • java.util.Scanner类:java.util.Scanner的nextInt()方法会看看标准输入中,有没有输入下一个字符串(以空格或换行分隔),有的话会尝试将之剖析为int类型,其它的nextByte()、nextShort()等作用都类似。如果直接取得上一个字符串(以空格或换行分隔),则使用next(),如果想取得用户输入的整行文字,则使用nextLine()(以空格或换行分隔),总而言之Scanner类大大简化了Java的输入。

  • java.math.BigDecimal类:Java遵守IEEE754浮点数运算规范,使用分数与指数来表示浮点数,这样就导致无法精确的进行运算,从而造成运算上的误差,比如1.0-0.8的结果就不是0.2。因此如果要求精确度,那就要小心使用浮点数,而且不能用==直接比较浮点数运算结果,所以我们可以使用BigDecimal类来得到想要的精确度。

对象指定与相等性

  • 在基本类型中,=是将值复制给变量,而是比较两个变量储存的值是否相同。但是,如果是在操作对象时,=是用在指定参考名称参考某个对象,而是用在比较两个参考名称是否参考同一对象,换句话说也就是=是用在将某个名牌绑到某个对象,而==是用在比较两个名牌是否绑到同一对象。

  • equals是逻辑上相等,比如a.equals(b)意思就是判断a名牌绑定的对象与b名牌绑定的对象实际上内含值是否相同,因此equals()和==是不一样的。

基本类型包装

  • 为了让Java 基本类型像对象一样操作,可以使用Long、Integer、Double、Float、Boolean、Byte等类来打包基本类型,这些类就是所谓的打包器。

  • 除了使用new创建基本类型打包器,从J2SE5.0之后提供了自动装箱功能。自动装箱与拆箱的功能事实上是编译程序蜜糖,也就是编译程序让你撰写程序时吃点甜头,编译时期根据所撰写的语法,决定是否进行装箱或拆箱动作。

数组对象

  • 数组在Java中就是对象,Java会检查数组的边界,一旦越界就会抛出ArrayIndexOutOfBoundsException的错误,所以在Java中,数组一旦建立,其长度就已经固定了,这一点也是和C语言所不同的地方。

  • 在Java中可以使用System.arraycopy()的方法来进行数组值的复制,它会使用原生方式复制每个索引元素,比使用循环更快。在JDK6以上的版本中,还有个更方便的Arrays.copyOf()的方法,能够帮你建立新的数组。无论System.arraycopy()还是Arrays.copyOf(),用在类类型声明的数组时,都是执行浅层复制。

字符串对象

  • 字符串本质是打包字符数组的对象,是java.lang.String类的实例。

  • 要想比较字符串实际字符内容是否相同,不能使用==,要用equals(),这一点前面也提到了。

  • 字符串对象一旦建立,就无法更改对象中的内容,使用+会产生新的String实例,不要将+用在重复性的连接场合。

  • 使用javac指令没有指定-encoding选项时,会使用操作系统默认编码。

查询Java API文件

  • 在Windows系统下,首先要下载CHM格式的Java API,然后具体过程可以参照教材,以及娄老师提供的积极主动敲代码,使用JUnit学习Java。

对象封装

封装

  • 封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式,其目的主要就是隐藏对象细节,将对象当作黑箱进行操作。

构造函数

  • 构造函数特点:首先,函数名与类名相同,其次,不用定义返回值类型,另外不可以写return语句。

  • 构造函数作用是给对象进行初始化,多个构造函数是以重载的形式存在的。

this关键字

  • this代表其所在函数所属对象的引用,简而言之就是this代本类对象的引用,当在函数内需要用到调用该函数的对象时,我们就可以使用this。

  • this()代表了调用另一个构造函数,至于调用哪个构造函数,则视调用

    this()时给的自变量类型与个数而定。

static关键字

  • static用于修饰成员(成员变量和成员函数),被声明为static的成员,不会让个别对象拥有,而是属于类。

  • 在static方法中不能出现this关键字,static方法中不能用非static数据或方法成员。

  • import static语法是为了偷懒,但要注意名称冲突的问题。

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

关于代码托管的问题

前面没有看清老师的要求,下载了GitHub,但是不会用,后面找到链接,按提示下载安装了Git,但到第二部分时,有点看不懂,在询问了身边的同学后,采取了网页版的开源中国托管代码。因为不熟悉,所以还在笨拙的复制粘贴阶段,这里的“新建项目——master分支”与《git使用规范流程》博客中所述略有不同,还没弄懂。

  • 具体

    20145337《Java程序设计》第三周学习总结

    20145337《Java程序设计》第三周学习总结

  • 但是使用IDEA进行托管,还不是很懂。填入地址“Clone”后,界面与蔡野同学略有不同,发现不能新建.class文档。*新建Project,再次尝试托管时

    20145337《Java程序设计》第三周学习总结

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

  • P85代码

    `class Clothes2{

    String color;

    char size;

    Clothes2(String color,char size){

    this.color = color;

    this.size = size;

    }

    }

public class Field2 {

public static void main(String[] args) {

Clothes2 sun = new Clothes2("red",'S');

Clothes2 spring = new Clothes2("green",'M');

    System.out.printf("sun (%s, %c)%n", sun.color,sun.size);
System.out.printf("spring (%s, %c)%n", spring.color,spring.size);
}

}`

  • P86代码

    `import java.util.Scanner;

    public class Guess {

    public static void main(String[] args) {

    Scanner scanner = new Scanner(System.in);

    int number = (int) (Math.random()*10);

    int guess;

     do{
    System.out.print("猜数字(0~9):");
    guess = scanner.nextInt();
    }while(guess!= number);
    System.out.println("猜中了、、、");

    }

    }`

  • 运行结果

    20145337《Java程序设计》第三周学习总结

  • 运行结果

  • 找不到变量符号

    20145337《Java程序设计》第三周学习总结

  • 仔细检查后,发现定义数组时,错误的将‘scores’错写成‘score’.

    -public class Score { public static void main(String[] args) { int[] scores = {88,81,74,68,78,76,77,85,95,93}; for(int i = 0;i < scores.length;i++){ System.out.printf("学生分数: %d %n", scores[i]); } } }

  • 运行结果

    20145337《Java程序设计》第三周学习总结

  •   public static void main(String[] args) {
    Integer[] scores = new Integer[3];
    for(Integer score : scores){
    System.out.println(score);
    scores[0] = new Integer(99);
    scores[1] = new Integer(87);
    scores[2] = new Integer(66);
    for(Integer score : scores){
    System.out.println(score);
    }
    }
    }

}```

  • Error:(12, 25) java: 已在方法 main(java.lang.String[])中定义了变量 score
  • 还没有改正

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

觉得第四、五章的学习较第三章而言上了一个难度,一开始不是很明白“类是对象的设计图,对象是类的实例”这个概念,结合学习指导,理解容易了些。对基本类型理解起来很容易,但对类类型还不很熟悉。留给我们学习的时间很短,但效率确很高,通过这几天的学习,看视频,对Java这门课程的了解逐步加深。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20 了解java环境
第二周 300/500 2/4 18/38 编写HelloWorld
第三周 500/1000 3/7 22/60 了解类、封装

参考资料

20145337《Java程序设计》第三周学习总结的更多相关文章

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

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

  2. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  3. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

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

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

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

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

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

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

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

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

  8. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

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

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  10. 20145236 《Java程序设计》第九周学习总结

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

随机推荐

  1. C&plus;&plus;矢量图形库系列&lpar;1&rpar;——矢量图形库乱谈(转)

    转自:http://blog.sina.com.cn/s/blog_4265e1760100lg03.html 本系列篇章的主要内容是讲解矢量图形库的编译.开发和使用.并不对他们周边的内容做过多的描述 ...

  2. win7 web开发遇到的问题-由于权限不足而无法读取配置文件,无法访问请求的页面

    错误一: HTTP Error 500.19 - Internal Server Error配置错误: 不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定是默认设置的 (ov ...

  3. TKinter的常用组件

    python提供了多个图形开发界面的库,几个常用Python GUI库如下: Tkinter: Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.T ...

  4. POJ&lowbar;1088 滑雪&lpar;记忆型DP&plus;DFS&rpar;

    Description Michael喜欢滑雪,这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...

  5. 数独破解c&plus;&plus;代码

    数独破解c++代码 #include <iostream> #include <cstring> #include <cstdio> #include <st ...

  6. java里程碑之泛型--泛型方法

    前面我已经介绍过了,我们可以在定义类和接口的时候使用类型形参,在该类的方法定义中,成员变量定义中,这些类型形参都可以被当成普通类型来使用.但是如果我们在定义类和接口的时候没有使用类型形参,但是在定义方 ...

  7. Taro 列表循环--点赞功能图片切换

    图片,未点击与点击 页面编写如下, 绑定我们的事件,继续: 附带注:Taro中不能使用 catchEvent 的方式阻止事件冒泡.你必须明确的使用 stopPropagation. 列表中点赞图片的切 ...

  8. D3、EChart、HighChart绘图demol

    1.echarts:   <!DOCTYPE html>   <html>   <head>   <meta charset="utf-8&quot ...

  9. Django之模板Template

    模板介绍 作为Web框架,Django提供了模板,可以很便利的动态生成HTML 模版系统致力于表达外观,而不是程序逻辑 模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视 ...

  10. Python连接MySQL数据库执行sql语句时的参数问题

    由于工作需要,今天写了一个Python小脚本,其中需要连接MySQL数据库,在执行sql命令时需要传递参数,结果出问题了.在网上查了一下,发现有以下几种方式传递参数: 一.直接把sql查询语句完整写入 ...