首页
登录 | 注册

20145104张家明 《Java程序设计》第3周学习总结

20145104张家明 《Java程序设计》第4周学习总结

教材学习内容总结

第四章 认识对象

4.1 类与对象

4.1.1 定义类

类定义时使用class关键词,建立实例要用new关键词,在对象术语中,这叫作新建一个对象:

new clothes();

参考变量或声明参考名称或参考:

Clothes c1;

给新建对象一个标签:

Clothes c1 = new Clothes();
package four;

class Clothes{
String color;
char size;
}
public class ClassObject {
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);
    }
}
4.1.2使用标准类

java.util.Scanner会帮你扫描标准输入。
java.math.BigDecimal会以默认精度进行计算,防止浮点数运算错误的情况。

4.1.3对象指定与相等性

'='用于绑定对象,'=='用于比较二者参考对象是否相同,'a.equals(b)'表示二者所绑对象的内含值是否相同。

4.2 基本类型打包器

4.2.1打包基本类型

Long、Integer、double、float、boolean等类是所谓打包器,主要目的是提供对象实例作为“壳”,价格基本类型打包在对象中,可以将基本类型答案做对象操作。

4.2.2自动装箱、拆箱

自动装箱拆箱可以使程序更简洁,如'Integer data1=10'、'int i=10;Integer wrapper=i;''Number number=3.14f'。在运算时编译程序会自动拆箱。

4.2.3自动装箱拆箱的内幕

如果数值超出类的范围,就会建立新的实例,用'=='做比较易出错,若想比较数值应用equals()。

4.3 数组对象

4.3.1数组基础

java中的数组和C语言有一些不同之处。一般声明数组是在类型关键词后如'int[] score',定义的时候不必规定数组长度,指出单个数值时需要在'[]'里标明序号,若想知道数组长度则需要用length属性,若是二维数组则需要用'cords.length'得知列数,再由'cords[x].length'得知行数。

4.3.2操作数组对象

使用'new'建立数组后每个索引元素会有初始值,可以用'java.util.Arrays'的'fill()'方法更改默认值。

4.3.3数组复制

'int[] scores2=scores1'并不是数组复制,只是把'scores1'的参考对象也给'scores2'做参考对象。所以要复制数组需要用到for循环新建数组,或者直接使用'System.arraycopy()'方法/'Arrays.copyOf()'方法。

4.4 字符串对象

4.4.1字符串基础

字符串在Java中是对象,可以用'+'连接字符串。

4.4.2字符串特性

在Java中为了效率,相同的字符串无论出现多少次都只建立一个实例,但是用'new'一定是建立新对象。

第五章 对象封装

5.1何谓封装

封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度,隐藏对象细节,将对象当作黑箱进行操作。用户使用程序却不知道细节,要调用数据必须通过提供的方法。

package cc.openhome;
public class CardApp{
    public static void main(String[] arge){
        CashCard[] cards = {
            new CashCard("A001",500,0),
            new CashCard("A002",300,0), 
            new CashCard("A003",1000,1),
            new CashCard("A004",2000,2),
            new CashCard("A005",3000,3)
        };
        for(CashCard card : cards) {
            System.out.printf("(%s,%d,%d)%n",card.number,card.balance,card.bouns);
        }
    }
}

5.2类语法细节

如果想在其他包的类程序代码中存取某包的类或对象成员,则必须是公开成员,要用public加以声明。'this()'代表了调用另一个构造函数,调用哪个函数视自变量类型与数量而定。声明'static',表示属于类,不会被个别对象拥有。在'static'区块中不能出现'this',在其方法中不能使用非static数据或方法成员。

this关键字

this代表其所在函数所属对象的引用,简而言之就是this代本类对象的引用,当在函数内需要用到调用该函数的对象时,我们就可以使用this。 this()代表了调用另一个构造函数,至于调用哪个构造函数,则视调用this()时给的自变量类型与个数而定。注意:this()调用只能出现在构造函数的第一行

static关键字

static用于修饰成员(成员变量和成员函数),被声明为static的成员,不会让个别对象拥有,而是属于类。 在static方法中不能出现this关键字,static方法中不能用非static数据或方法成员。 import static语法是为了偷懒,但要注意名称冲突的问题。被声明为static的成员,是将类名称作为名称空间。

代码托管

20145104张家明 《Java程序设计》第3周学习总结

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

在本周的学习中,我发现第四章比较基础,主要是定义类的问题,打包封装的问题,这些代码放到idea中都可以直接运行,也比较好理解。而第五章就比较困难,在第五章中有一些代码不是直接进行编译就能运行的,这里与第四章的不同。教材所讲的内容也比较晦涩难懂,经过仔细的分析和观看了一点视频后,才对第五章有了更进一步的了解,希望在在下一周再复习一下第五章的知识。

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

在代码的调试中,我对于书中的使用标准类的概念不是很理解,有一些程序也都是半懂不懂的进行编译,在经过了几个程序的编译后,我才发现java.util.Scanner就相当于c语言中的输入语句,而java.math.BigDecimal的作用就是是计算出的数据更加精确,,在java的学习中,与c语言进行比较学习会使java的学习变得轻松很多。

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

在本周的学习中,我发现在书本上的学习还是不够的,有些知识还需要从别的地方进行补充(视频),有些代码还是要好好想想才能明白。而且java与c语言还有很多的相似之处,相对借鉴学习会使java语言更好地学习。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长

| 第二周 | 200/300 | 1/4 | 18/38 | |
| 第三周 | 300/600 | 2/6 | 22/60 | |

参考资料


相关文章

  • 一.前言 在日常开发中,我们经常会碰到需要在运行时才知道对象个数的情况,这种情况不能使用数组,因为数组是固定数量的,这个时候我们就会使用集合,因为集合可以存储数量不确定的对象. 集合类是特别有用的工具类,不仅可以存储数量不等的对象,还可以实 ...
  • 为什么说 Java 程序员到了必须掌握 Spring Boot 的时候?
    Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热,就单从我个人的博客的访问量大幅增加就可以感受到大家对学习 Spring Boot 的热情,那么在这么多人热衷于学习 Spring Boot 之时,我自己也在 ...
  • final关键字可用于修饰类.方法和变量,final修饰的类不能被继承:final修饰的方法不可被重写:final修饰的变量不可被改变. 1. final类 final修饰的类不能被继承意思是final修饰的类不可以有子类,java.lan ...
  • java中常见的集合类大部分是非线程安全的,在多线程情况下会报并发修改异常(ConcurrentModificationException) 并发下的ArrayList类: 1 //集合类不安全的例子 2 public class Coll ...
  • java游戏开发杂谈
    线程,让游戏拥有了动态变化的能力. java的图形界面,在启动的时候,就开始了一个线程. 这个线程负责处理:JFrame.JPanel等的绘制.事件处理. 它是由操作系统调用的,在程序启动时开启,程序关闭时消亡. 这个线程里执行的逻辑,支撑 ...
  • 最近老师老是不讲新课,好繁!!! 还是来说抽象类吧. public abstract class A{ //因为下边有一个抽象方法,所以这就必须要是一个抽象类,要不然编译不能通过 public void c(){ System.out.pr ...

2019 cecdns.com webmaster#cecdns.com
12 q. 0.079 s.
京ICP备10005923号