20145233韩昊辰 第三周总结

20145233 《Java程序设计》第3周学习总结

教材学习内容总结

类与对象

Java中有基本类型与类类型两个类型系统,第三章已经学习过了基本类型,第四章主要讲解了类类型。使用Java撰写程序几乎都是在使用对象(Object),要产生对象必须先定义类(Class),对象是类的实例。下面我先举一个关于类类型的代码:

class Clothes{ 
String color; 
char size; 

public class Field{
public static void main(String[] args){
Clothes sun = new Clothes();
Clothes spring = new Clothes(); 
sun.color = "red";
sun.size = ‘S‘;
spring.color = "green";
spring.size = ‘M‘;
System.out.printf("sun (%s, %c)%n",sun.color,sun.size);
System.out.printf("spring (%s, %c)%n",spring.color,spring.size);
  }
}

在这个Field.java文件中,定义了两个类,一个是公开的(public)的Field类,所以文档主文档名必须为Field,另一个非公开的Clothes,在第二章中我们有学到,一个原始码中可以有多个类定义,但只能有一个是公开类的,且文档中的主文档名必须与公开类名称相同。

使用标准类

目前为止我们的程序都是比较简单的,变量值都是死的,没有办法接受我们的输入,所以在这里我们就可以使用标准类的代码语句来解决问题。

1.使用java.util.Scanner


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.printf("guess a number :");
guess = scanner.nextInt();
}
while(guess != number);
System.out.println("you are right!");
  }
}

2.使用java.math.BigDecimal

第二章有一个问题就是1.0 - 0.8的结果是多少?那是我们会以为答案是0.2,其实不是这样的,这是因为Java使用分数与指数来表示浮点数,所以导致计算时无法精确表示,造成运算上的误差。故我们可以使用java中的java.math.BigDecimal来解决。

import java.math.BigDecimal;
public class DecimalDemo{
public static void main(String[] args){
BigDecimal operand1 = new BigDecimal ("1.0");
BigDecimal operand2 = new BigDecimal ("0.8");
BigDecimal result = operand1.subtract(operand2);
System.out.println(result);
  }
}

基本类型打包器

要让基本类型像对对象一样操作,可以使用Long、Integer、Double、Float、Boolean等类打包基本类型,这些类就是打包器,除了使用new创建基本类型打包器,之外,从J2RE5.0之后提供了自动装箱和拆箱功能。

数组对象与数组复制

1.数组在Java中就是对象。

2.在Java中,数组一旦建立,其长度就已经固定了,这一点也是和C语言所不同的地方。

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

字符串对象

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

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

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

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

查询API文件

老师上课有举例子关于API的,我们需要现在自己的个人电脑中下载API。
并且老师提供了一篇博客供我们学习:
-积极主动地敲代码

封装

Java学习笔记中,对于封装有了一个定义:构造函数实现对象初始化流程的封装,方法封装了操作对象的流程。java中还可以使用private封装对象私有数据成员。封装目的的主要就是隐藏对象细节,将对象当做黑箱进行操作。

this关键字

除了被声明为static的地方外,this关键字可以出现在类中的任何地方,在对象建立后为“这个对象”的参考名称。目前我们看到的应用,是在构造函数参数与对象数据成员同名时,可以使用this加以区别。
注意:this()调用只能出现在构造函数的第一行。

static类成员

被声明为static的成员,不会让个别对象拥有,而是属于类。我们也是通过类名称与“.”运算符,就可以取得static成员。我们一直在用的System.in与System.out中的in与out都是static成员。

static成员属于类所有,将类名称当作名称空间是其最常使用的方式。正是由于static成员是属于类,而非个别对象,所以在static成员中使用this会是一个语意上的错误。有些情况没有写this,但是隐含了this的意义在里面,因此也会发生编译错误。

.class被JVM加载后,默认就会执行static区块。在JDK5之后,新增了import static语法,可以在使用静态成员时少打几个字。我们可以通过import来偷懒,偷懒过头就会出现问题,要注意名称冲突问题,有些名称冲突,编译程序可通过以下顺序来解析:

1.局部变量覆盖

2.成员覆盖

3.重载方法比较

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

1.乱码问题

在之前的那一章学习中,我们在计算的时候遇到了乱码问题,以为乱码计算机没有办法读取里面的内容,我在向同学请教后,学到了一行代码-ebcoding UTF-8,在第四章的末尾我终于搞清楚了这是为什么。
因为只有敲了这一行代码,编译程序才会清楚用何种编译读取.java的内容。

2.==与equals的问题解决

在这周的一个代码中我没仔细看书,将.equals下意识的写成了==,结果我的程序在运行的时候出现的结果和书上的不一样,我一直觉得没有出现编译错误就是没有问题,这又反了在学习C语言时的问题,其中也会不出现编译错误但是在执行时就会出现。这个==和.equals在书中还是重点强调的,我还是不够仔细,没有真的理解里面的内容,我在这里在做一个总结。
(错误的代码编写)

1.==

==:使用在对象类型,是比较两个名称是否参考同一对象。

2.equals

equals:它用在定义两个对象的内含值是否相同。

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

我的代码在编写的过程中因为对定义的不完全理解,导致了一些错误,就是上面这个==和equals的问题,使得程序无法正确的像我所希望的那样进行,在仔细看书并且重新改写代码之后,程序可以良好的运行。
正确的代码编写:

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

这周的学习任务是相当的重,相比前几周有了质的变化,但是在这周的学习中我感到十分充实,没有了以往在大学里学不到什么实用性知识的困惑,我的父母这周打电话给我,问我周末有没有什么打算出去玩,但是因为这学期的Java是自学为主,我的周末几乎都用在学习上面了,虽然没有出去,但是这几天里我学到的知识让我觉得有很大的收获,虽然学习的过程是长久的,但是在这段时间内的学习,让我收获颇深,学到知识的成就感还是很足的。

学习进度条

  代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 4000行 30篇 400小时  
第一周 150/150 2/2 15/15 jdk及jre是什么
第二周 200/350 2/4 20/35   基本类型的学习
第三周 350/700 2/6 30/65 封装的定义以及数组和函数
时间: 2024-11-04 13:29:19

20145233韩昊辰 第三周总结的相关文章

魏昊卿——《Linux内核分析》第三周作业:Linux系统启动过程

魏昊卿——<Linux内核分析>第三周作业:Linux系统启动过程 一.实验部分 实验指导 使用实验楼的虚拟机打开shell 1 cd LinuxKernel/ 2 qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img 内核启动完成后进入menu程序(<软件工程C编码实践篇>的课程项目),支持三个命令help.version和quit,您也可以添加更多的命令,对选修过<软件工程C编码实践篇>

20142335郝昊第三周学习总结

20145335郝昊 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 类与对象 定义: 对象(Object):存在的具体实体,具有明确的状态和行为. 类(Class):具有相同属性和行为的一组对象的集合,用于组合各个对象所共有操作和属性的一种机制. -关系: 从类看对象:类定义可视为具有类似性质与共同行为的对象的模板,用来产生对象. 从对象看类:类的产生,是实例,推广到大量相似实例的抽象化过程. 二者的关系:类是对象的设计图,对象是类的实例,生成对象要先定义类. 特点: 与c语言

第三周博客问题总结

1.学会了```的用法 一开始并没有成功,后来发现是因为输入法没有切换成英文,今后这样的问题要避免出现.--20145106 2.问题:教材86页,Guess的代码,猜数字,不知道原先没有设定好一个数字,为什么可以在0-9之间猜中一个数 解答:百度了(Math.random()10)这行代码的意思,知道了(Math.random())的意思是在[0,1)之间随机产生一个数字,10,所以变成了[0,10)之间随机产生一个数字,所以可以进行猜数字 --20145123 3.IntegerCache.

2019-2020 191316《信息安全专业导论》第三周学习总结

2019-2020 191316<信息安全专业导论>第三周学习总结 教材学习内容总结 阅读课本第二三章,我了解了数字的分类和位置计数法,学会了如何在不同进制直接对数字进行转换和计算补码.知道了为什么计算机要采用二进制.了解了文本压缩的三种方法,颜色表示法和视频表示法. 教材学习中的问题和解决过程 问题一:我阅读了关于数据压缩技术的有关文字,没有明白既然有损压缩会丢失数据,为什么有时还会采用这种方法. 解决方案:我上网查了有关资料,知道了有损与无损的区别以及各自的优缺点. 有损压缩 有损压缩的特

第三周活动进度

学习进度表:   第三周内容 时间 周一(4:10-6:00)上课,周二晚上(8:00-9:00),周四晚上(8:00-8:30),周四下午(4:10-6:00)javaweb课程 代码行数 200行 发博客量 3篇 了解到的知识 随机数的产生,四则运算的开发思路(分解),简单的数据库创建表. 周活动详细记录表: 日期/内容 写代码 上网查方法 上课 看书(构建执法) 3.6 2小时(150行)大概完成   2小时   3.7   查询缺失功能的方法   1小时 3.8         3.9

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

20145207<Java程序设计>第三周学习总结 教材学习内容总结 这部分可能要扒一些课本而上的东西了.在第三章中,知道了Java可区分为基本类型和类类型两大类型系统,其中类类型也称为参考类型.在这一周主要学习了类类型. 对象(Object):存在的具体实体,具有明确的状态和行为 类(Class):具有相同属性和行为的一组对象的集合,用于组合各个对象所共有操作和属性的一种机制. 简单来说,类是对象的设计图,对象是类的实例. 要深刻理解对象的含义,例如Clothes c1 = new Clot

每周学习进度--第三周

  第三周 所花时间(包括上课) 300min 代码量 258 博客量 2 了解到的知识点 初步了解了如何做软件需求分析

20145326蔡馨熠《信息安全系统设计基础》第三周学习总结

教材学习内容总结 书上有的内容我就不重复赘述了,只需要将部分重要的知识点归纳总结一下. 1.进制 二进制.八进制.十进制.十六进制(转换:以二进制作为中间变量) 2.字 每台计算机都有一个字长,指明整数和指针数据的大小. 虚拟地址是以这样的一个字来编码的,字长决定虚拟地址空间的最大范围. 3.字节顺序 小端法——在存储器中按照从最低有效字节到最高有效字节的顺序存储对象. 大端法——从最高有效字节到最低有效字节的顺序存储. 4.布尔代数 (1)二进制值是计算机编码.存储.操作信息的核心(0.1),

马哥2016全新Linux+Python高端运维班第三周作业作答

                    马哥2016全新Linux+Python高端运维班第三周作业                                           1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可.     [[email protected] ~]# who | awk '{print $1 $NF}'| uniq -d     [[email protected] ~]# who     yicx     :0