狄慧201771010104《面向对象程序设计(java)》第二周学习总结
第一部分:理论知识学习部分
在本章我们主要学习数据类型、变量、运算符、类型转换、字符串、输入输出、控制流程、大数值、数组等内容。
1. 基本概念:
(1)标识符:由字母、下划线、美元符号和数字组成,且第一个符号不能为数字。标识符可用作类名、变量名、方法名、数组名、文件名等。比如:Hello、$1234、程序名、www_123等都是合法标识符。
(2)关键字:java语言中被赋予特定意义的一些单词。关键字不做变量名。
(3)注释:java语言有三种注释。//、/* */、/** */。
1> //:其注释内容可以从本行到结尾。
2> 需要长篇注释时,可以在每行的注释前面标记//,也可以使用/*和*/将一段比较长的注释括起来。
3> 以/**开始,以*/结尾(C语言中没有这种注释),这种注释可以用来自动的生成文档。
2.数据类型
在java中,一共有八种基本类型,其中有4种整型、2种浮点型、1种用于表示Unicode编码的字符单元的字符类型char和一种用于表示真值的boolean类型。每一个变量必须声明一种类型。
1)整形(int、short、long、byte):整形用于表示没有小数部分的数值,它允许是负数(java中没有unsigned类型。)。
2)浮点类型(float、double):浮点类型用于表示有小数部分的数值。
浮点类型中用于表示溢出和出错情况的三个特殊浮点值为:正无穷大、负无穷大以及NaN(不是一个数字)。
3)char类型:char类型用于表示单个字符。
4)boolean类型:boolean类型有两个值:false和true,用来判定逻辑条件。整型值和布尔值之间不能进行转换。
3.变量
java中每一个变量属于一种类型。声明变量时,变量所属类型位于变量名之前。一行可以声明多个变量,逐一声明每个变量可以提高程序的可读性。一个变量声明之后,必须通过赋值语句对它进行明确的初始化。可以在代码的任何位置进行变量声明。不能在同一作用域内声明两个同名的变量。
java中关键字final来指示常量。习惯上常量名都用大写。
4.运算符
算术运算符、自增运算符与自减运算符、关系运算符、逻辑运算符、位运算符。new(用来创建对象的运算符)、Instanceof(返回一个布尔值来指出某个对象是否是一个特定类或者是它的子类的一个实例)。在Java中,使用算术运算符+、—、*、/表示加减乘除运算。
整数被0除将会产生一个异常,浮点数被0除将会产生一个无穷大或NaN结果。
1> 数学常量与函数。
在java中,没有幂运算。因此要借助Math类的pow方法。
double y=Math.pow(X,a);
此外,java还提供了两个用于表示圆周率和e常量的近似值:Math.PI和Math.E。
2> 数值类型之间的转换。
进行数值类型之间的转换时,其中一个操作数是什么类型,另一个操作数也会转换成什么类型。否则,两操作数将都被转换成int型。
3> 强制类型转换。
强制类型转换的语法格式是在圆括号中给出想要转换的目标类型,后面紧跟着带转换的变量名。
double x=9.997;
int nx=(int)x;
4> 结合赋值和运算符。
如x+=4;等价于x=x+4;
5.类型转换
(1)隐式类型转换
(2)强制类型转换
6.字符串
字符串用到的类是标准类。Java没有内置的字符串类型,而是在标准java库中提供了一个预定义类,叫做String。每个双引号括起来的字符串都是String类的一个实例,如:
String e=””;//an empty string
String greeting=”Hello”;
1> 子串:String类的substring方法可以从一个较大的字符串提取出一个子串。如:String greeting=“Hello”;
String s=greeting.substring(0,3);创建了一个由字符“Hel”组成的字符串。
2> 拼接:java语言允许使用+连接两个字符串。
3> 检测字符是否相等:使用equals方法检测两个字符串是否相等。
*一定不要使用==运算符检测两个字符串是否相等。这个运算符只能确定两个字符串是否放在同一位置上。如果字符串放置在同一位置上,它们必然相等。
java字符串时Unicode字符的序列,是组织字符的基本数据结构,用法类似于字符数组。没有内置的字符串类型,而是在标准java类库中提供了一个java预定义类。在java中字符串被当做对象来处理。
(1)String类
获得字符串的子串、串连接、获取字符串的长度、检测字符串是否相等、字符串检索、字符串与数值的转换、获得对象的字符串表示。
(2)StringBuilder类
分配/获取字符串的长度、分配/获取字符串的容量、字符串的检索和子串、字符串的修改、字符串类型转换。
7.输入输出
(1)读取输入
通过控制台进行输入时,需要构造一个Scancer对象,并与“标准输入流”System.in关联。
(2)格式化输出
使用System.out.print(x)将数值输出到控制台上这条命令将以x对应的数据类型所允许的最大非零数字位数打印输出x。
(3)文件输入与输出
要想对文件进行读取,就需要一个用File对象构造一个Scanner对象。
要想写入文件就需要构造一个PrintWriter对象,在构造器中只需提供文件名。
8.控制流程
(1)方法调用语句
(2)表达式语句
(3)复合语句
(4)控制语句
条件语句:if语句,switch语句。
循环语句:while、do-while、for。
(5)中断控制流程语句:break、continue。Java中没有goto语句。
(6)返回语句 return value
9.大数值
Java.math包中的两个类Biglntegre、BigDecimal可以操作任意长的数字。Biglntegre实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点运算。
10.数组
数据是一种数据结构,是有序数据的集合数据中每个元素的数据类型都是相同的。
(1)数组的声明
一维数组 数组元素类型 数组名字[]
二维数组 数据元素类型 数组名字[][]
Java中数组是独立类,有自身的方法。一个数组是一个对象。
(2)数组的创建
数组声明之后要用new运算符为其分配内存空间,分配内存空间时必须指明数组的长度。格式如下:数组名字=new 数组元素类型[个数]
(3)数组初始化及匿名数组
一维数组初始化:在声明数组的同时对数组的元素进行初始化。在java中可以初始化一个匿名数组。
多维数组的初始化:系统会自动根据初始值的大小计算出数组的大小。
(4)数组的操作
数组的拷贝:java允许把一个数组变量拷贝给另一个变量时,两个变量都指向相同的数组。如果只是想把一个数组中的值拷贝给另一个变量,就要使用Arrays类的copyOf方法,通过这个方法可以用来增加数组大大小。
数组排序:调用java.util.Arrays类中的sort方法。该方法采用优化快速排序方法。
(5)不规则数组:每一行有不同的长度。创建不规则数组时,从最高维开始分别为每一维数组分配空间。
第二部分:实验部分
实验 1:编写Java应用程序,输出以下4个表达式的值。
运行及结果:
实验 2:编写包含以下代码片段的Java应用程序,输出字符串类对象s3的值。
运行及结果:
实验 3:更改实验2中s1、s2、s3为StringBuilder类对象,观察程序运行结果并与实验2结果进行对比,理解StringBuilder类对象的区别。
结果及运行:
实验 4:在命令行方式下调试运行下列程序,理解Java应用程序命令行参数的用法。
运行及结果:
实验 5:Eclipse环境下导入第三章示例程序InputTest.java步骤:
(1) 新建Java project如下图:
(2) 选择File->inport->File system->Next,打开文件导入窗口如下图,点击上方Browse选择导入源程序并选中,点击下方Browse选择源程序导入位置为新项目InputTest/src位置后,点击finish完成导入。
(3) 打开InputTest项目src文件夹的缺省包,双击InputTest.java在IDE源程序编辑区打开文件。
(4) 右键单击InputTest.java文件名打开快捷菜单,选择Run as->java application运行此程序,结合程序运行结果,理解代码中Scanner类对象用法,掌握Java控制台输入方法。
结果:
实验 6:按照实验5的操作步骤,导入WriteReadFileTest.java示例程序,结合程序运行结果理解程序代码,观察项目文件夹下文件myfile.txt的内容,掌握文件的输入输出操作。
运行及结果:
实验 7:按照实验5的操作步骤,导入第3章示例程序,每个示例程序从语法、算法两个角度总结学习内容。
(1) 测试Retirement.java,Retirement2.java,Lottery0dds.java掌握循环控制结构;
(2) 测试BigIntegerTest.java,掌握大数值类的用法;
(3) 测试LotteryDrawing.java,掌握数组的用法;
(4) 测试CompoundInterest.java,掌握多维数组的用法;
(5) 测试LotteryArray.java,掌握不规则数组的用法。
第三部分:实验总结
经过本章的学习,我学习了标识符、关键字、注释等基本知识,也知道了数据类型、变量、运算符、类型转换、字符串、输入输出、控制流程、大数值、数组等内容。经过前三章的学习了解,我发现java的一些基础知识跟C语言非常相似,当然也有一部分是有区别的。在第三章的学习中,我也遇到了一些问题,比如在实验的过程中,忽略了数组越界问题,导致实验四的结果不正确,最后在大家的帮助下,当传入正确的参数之后,解决了这个问题。在这一段java的学习过程当中,我发现只有不断的动手编写java程序才能更好的理解所学的理论知识,才能够学好java,我也会继续努力的。