博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20145233韩昊辰 第(三)周总结
阅读量:5325 次
发布时间:2019-06-14

本文共 3797 字,大约阅读时间需要 12 分钟。

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

887941-20160320165100521-454096754.png

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在书中还是重点强调的,我还是不够仔细,没有真的理解里面的内容,我在这里在做一个总结。

(错误的代码编写)
887941-20160320165017834-913687860.png

1.==

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

2.equals

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

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

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

正确的代码编写:
887941-20160320165035037-552593322.png

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

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

代码上传

887941-20160324100438354-1539484818.png

887941-20160324100454604-1196615423.png

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 4000行 24篇 400小时
第一周 150/150 2/2 15/15
第二周 200/350 2/4 20/35
第三周 350/700 2/6 30/65
第四周 / / /

转载于:https://www.cnblogs.com/hanhaochen/p/5298915.html

你可能感兴趣的文章
Exception in thread "AWT-EventQueue-0" java.lang.IllegalThreadStateException
查看>>
随手练——HDU 5015 矩阵快速幂
查看>>
启动redis一闪就关
查看>>
Maven之setting.xml配置文件详解
查看>>
ASP.NET 4.5 Web Forms and Visual Studio vs2013年入门1
查看>>
SDK目录结构
查看>>
malloc() & free()
查看>>
HDU 2063 过山车
查看>>
高精度1--加法
查看>>
String比较
查看>>
Django之Models
查看>>
CSS 透明度级别 及 背景透明
查看>>
Linux 的 date 日期的使用
查看>>
PHP zip压缩文件及解压
查看>>
SOAP web service用AFNetWorking实现请求
查看>>
HTTPS、SPDY和HTTP/2的性能比较
查看>>
Java变量类型,实例变量 与局部变量 静态变量
查看>>
sublime快捷键
查看>>
mysql操作命令梳理(4)-中文乱码问题
查看>>
Python环境搭建(安装、验证与卸载)
查看>>