类类型
20145217 《Java程序设计》第3周学习总结(1)
教材学习内容总结
第三章中详细的介绍了基本类型,第四章对Java的另一个类型系统类类型做了详细的介绍。
4.1定义类和标准类
- 定义类
书上有一句话和形象的说出了类与对象的关系,及“类是对象的设计图,对象是累的实例”。而定义类顾名思义,即使编程人员自己给出的对象类别。类使用时要用class关键词,具体使用方法如下实例:
一个原始码中可以有多个定义类,但只有一个是公开的,即public class。
定义类中还可以定义构造函数,给出的例子中color的参数值指定给了这个对象的color成员。main中可以直接用Clothes2 sun = new Clothes2("red",'S');来建立对象。
- 标准类
标准类即API提供的类,书中着重介绍了java.util.Scanner和java.math.BigDecimal。System.in.read()输入时数据为字符型,java.util.Scanner可以直接输入你想要的类型。
调用时采用import语句,减少一下工作量。java.util.Scanner对应整型、浮点型、布尔型分别给出了nextShort()、nextInt()、nextDouble()、nextBoolean()等等
而java.math.BigDecimal则是弥补运算误差的,对应加减乘除有plus()、substract()、multiply()、divide()。
基本类型打包器
基本类型打包类都归类于java.lang。doublevalue()用于以value前的类型返回值,compareTo()是用于两队相比较,相同返回0,小于返回-1,大于返回1.
除了用new创建基本类型打包器外,Java提供自动装箱拆箱。而在其中实际上会使用Integer.valueOf等,以整型为例Integer.valueOf在-128到127之间的数据会直接对应缓存值,而在这之外的会新建。
4.3数组
声明数组在java同在c中十分相似,int[] scores={···},定义定长数组int[] scores=new int[10]。而区别主要在于打印方式,除了用循环语句一个一个输出外,还有用用增强式for循环语法:
多维数组同一维类似。
4.4字符串
name.length长度,name.charAt(n)第n+1个字符,name.toUpperCase()转大写,Integer.praseInt(n)将n剖析为整型,name.toCharArray字符串返回为char[]数组。
- 字符串特性
1.以“”包括的字符串只要内容相同,只会建立一个String实例。
2.不可变动,只要建立就不可变动了,而“+”采用的用Stringbuilder和appand建立新的字符串。但如果+两端都连接“”与“”包含这两部分没区别。
4.5对象指定规则
1.java中的变量相当于标签,指示数据。int a=b等同于int a=10,b=10;且二者指示同一存储地点的同一数据,ab为true。担当采用基本类型打包器时,当数据量在定义范围之外时ab为False。当采用BigDecimal定义时也是false。原因是虽然数据量相同,但==表达的是位置一样及同一数据的含义。
2.同样数组和字符串也是这样的,基本类型中如果要复制一个数组时不能简单的a=b而要使用System.arraycopy()或者Array.copyOf()语句,或者一个一个复制,二者都要采用new语句。
但在定义类中:
浅层复制:使用System.arraycopy()或者Array.copyOf(),其实际上是复制参考。
深层复制:联通同一对象也进行复制。
教材学习中的问题和解决过程
教材这部分编排有点乱,我细细的整理了一下,其实依旧还是没有什么头绪,下手有点晚了,但是相信今后多练习一点会真正掌握起来。
代码调试中的问题和解决过程
教材中的深层拷贝我并没有实现,代码同作者一样编译程序也不报错,但运行不了,显示Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at cc.openhome.Deepcopy.main(Deepcopy.java:21)
附图一张,求大神帮助:
上传代码到git,本周未对代码进行分类,下周一定改进。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第三周 | 400/500 | 5/6 | 40/50 |