201771010123汪慧和《面向对象程序设计Java》第二周学习总结

时间:2023-12-18 20:16:26

一、理论知识部分

1、标识符由字母、下划线、美元符号和数字组成, 且第一个符号不能为数字。标识符可用作: 类名、变量名、方法名、数组名、文件名等。第二部分:理论知识学习部分

2、关键字就是Java语言中已经被赋予特定意义 的一些单词。 常见有:class、public、try、catch、if、 float、import、void等。 关键字不做变量名。

3、Java有三种注释的方式:   // 注释内容由//一直到此行结束。 /*和*/ 定义一个注释块。  /**开始,*/结束 这种注释方法可用来自动产生文档。

4、Java是一种强类型语言。这意味着每一个变量必 须声明一种为类型。

Java共有8种基本类型:整数类型(int、short、long、byte) –浮点类型(float、double) –字符类型(char) –布尔类型(boolean)

注意:Java中没有unsigned类型。

6、字符集:Java采用unicode字符编码集,该编码集16 位,含有65536个字符。

7、布尔类型:常量 true、false  变量的定义 booleanx; booleanx,y;  定义同时可赋值 booleanx=true, y=false;

注意:在Java中,布尔值和整数不能相互转换。

8、在Java中,每一个变量属于一种类型。在声明变量时, 变量所属的类型位于变量名之前。

在Java中,一行可以声明多个变量。逐一声明每一个 变量可以提高程序的可读性。

9、一个变量声明后,必须通过赋值语句对它进行明确的初始化——永远不要使用一个未初始化的变量的值。

在Java中,可以在代码的任何位置进行变量声明。变量 的声明尽可能地靠近变量第一次使用的地方,这是一种良 好的程序编写风格。

在Java中,不能在同一作用域内声明两个同名的变量。

10、Java提供了两个特别的运算符:

(1)new

(2)Instance

11、数学函数包含在Math类中。

–幂函数 –三角函数 –指数函数及它的反函数等。

Java还提供了两个常量。 –Math.PI –Math.E

若不想在数学方法名和常量名前加前缀 “Math.”,可在源文件顶部加上以下代码即可。 –import static java.lang.Math.*;

12、大多数的数值转换是遵循优先级的关系自动完成的。

转换原则如下: 如果两个操作数中有一个是double类型的,则另一个将 会转换成double类型。 否则,如果两个操作数中有一个是float类型的,另一个 将会转换成float类型。 否则,如果两个操作数中有一个是long类型的,另一个 将会转换成long类型。 否则,两个操作数都将转换成int类型。

13、强制类型转换的语法:

(目标类型)变量名

在进行强制类型转换时,当心丢失数据。

14、Java字符串是Unicode字符的序列,它是组织字符的基 本数据结构,用法类似于字符数组。

有内置的字符串类型,而是在标准Java类库中提供了一 个Java预定义类String。在Java中,字符串被当作对象 来处理。

程序中需要用到的字符串可以分为两大类: –创建之后不会再做修改和变动的不可变字符串String类; –创建之后允许再做更改和变化的构建字符串StringBuilder类。

15、创建String的一个对象并进行初始化,需要调用类 String的构造方法,主要有以下创造方法: ①String():创建一个空串 ②String(String value) ③String(char value[]) ④String(char[],intstartIndex,intnumChars) ⑤String(byte[],byte hibyte) ⑥String(byte[],byte hibyte,intstartIdnex,int numChars)

16、使用String 类中的length()方法可以获取一个字符串的 长度。

可以使用equals方法检测两个字符串是否相等。如 s.equals(t);注意:s和t可以是字符串变量,也可以是 字符串常量。

一定不能使用“==”运算符检测两个字符串是否相等! 这个运算符只能够确定两个字符串是否放置在同一位 置上。

java.lang包中的Integer类、Long类、Float类、 Double类分别提供了相应的方法用来进行字符串与数值间的转换。

字符串转化为数值。

使用String类中定义的valueOf()方法,便可将一个数 值转换为字符串。

所有的类都默认为是java.lang包中Object类的子类或 间接子类----同族同宗,所有的类都可以享用一些基本功能。

Object类有一个方法:toString()可用于获得对象的 字符串表示。

17、StringBuilder类的说明:

如果需要多个小段字符串连接创建一个字符串时,每次连 接字符串时,都会构建一个新的String对象,既耗时,又浪 费空间。使用StringBuilder类就可以避免这个问题的发生。

18、读取输入:

通过控制台进行输入时,需要构造一个Scanner对象,并 与“标准输入流”System.in关联。 –Scannerin=newScanner(System.in);

Scanner类定义在java.util包中,因此使用时需将相应的 包加载进来。

由于Scanner类输入是可见的,所以不适用于从控制台读 取密码。JavaSE6.0特别引入Console类实现这个目的。

19、使用System.out.print(x)将数值x输出到控制台上, 这条命令将以x对应的数据类型所允许的最大非0数字 位数打印输出x。

20、文件的输入和输出:

要想对文件进行读取,就需要一个用File对象构 造一个Scanner对象。比如: –Scanner  in = new Scanner(new File(“myfile.txt”)); 要想写入文件,就需要构造一个PrintWriter对象, 在构造器中,只需提供文件名: –PrintWriterout = new PrintWriter(“myfile.txt”);

21、Java有5种语句:

(1)方法调用语句 System.out.println(“Hello!”);

(2)表达式语句 x=23; i++;

(3)复合语句

用{}把一些语句括起来就构成了一个语句。

{ z=x+23;

System.out.println(“Hello”);

}

(4)控制语句(程序控制流程由这些语言确定) if 、switch、for、while、do-while

(5)packege语句和import语句。

22、Java有两种类型的条件语句

(1)if语句 (2)switch语句

注意:

(1)表达式值、常量i的值为整型,不能是字符串。

(2)常量i != 常量j

(3)执行:先计算表达式值,若与常量i相同,则 执行语句序列i;若都不相同,则执行语句序 列n+1。

(4)注意case子句后的break!!

23、循环语句分为三种:

(1)while  (2) do-while (3)for

24、中断控制流程语句:

break 作用:结束整个循环的执行,转到下一语句。

continue 作用:结束本次循环,开始下一次循环。

注意: (1)Java中没有goto语句!!! (2)Java中提供了一种带标签的break语句, 用于跳出多重嵌套的循环语句。

25、返回语句:

Java的返回语句与Java的方法紧密相关,当 程序执行到此语句时,将立即返回上一级方法。

格式:return value;

26、大数值:

(1)如果基本的整型和浮点型数据无法达到要求的精度, 那么可以使用java.math包中的两个类, BigInteger和BigDecimal。这两个类可以操作任意长的数字。

(2)BigInteger类实现了任意精度的整数运算, BigDecimal实现了任意精度的浮点运算。

27、数组:

(1)数组是一种数据结构,它是有序数据的集合, 数组中的每个元素的数据类型都是相同的。

(2)对元素的确定是由数组名和它的下标实现的, 如a[0]代表数组a的第一个元素,a[1]代表数组 a的第二个元素,依次类推。

28、数组的申明:

一维数组格式: 数组元素类型数组名字[]; 数组元素类型[]数组名字;//推荐使用

二维数组格式: 数组元素类型数组名字[][]; 数组元素类型[][]数组名字;//推荐使用

其中数组元素类型可以为Java中的任意类型,包括基本类型和复合类型。

也可用定义的类来声明数组: Point[] line;

27、数组的申明:

(1)与C/C++不同,Java在数组声明时并不为数组分配 内存。

(2)在Java中,数组是独立的类,有自身的方法。

(3)一个数组是一个对象,它由基本数据类型组成。

28、数据的创建:

(1)数组声明后,要用new运算符为其分配内存空间,分配 内存空间时必须指明数组的长度。

(2)格式如下: 数组名字=new数组元素类型[个数] 如:boy=new float[5]; int[] age=new int[10];

(3)数字数组创建后,所有数组元素自动初始化为0; boolean数组创建后数组元素初始化为false;对象数组初 始化为null。

(4)数组创建后不能再更改大小。

29、一维数据的初始化:

在声明数组的同时对数组的元素进行初始化,例如: int[]  smallPrimes= {2, 3, 5, 7, 11, 13};

系统会自动按照所给的初值的个数,算出数组的长度, 并分配相应的空间。

在Java中,可以初始化一个匿名数组。例如: new int[] {17, 19, 23, 29, 31,37}

使用这种语法形式可以在不创建新变量的情况下重新 初始化一个数组。

30、多维数组的初始化:

系统会自动根据初始值的大小计算出数组的大小。

Java语言中,二维数组被看作数组的数组,把数组当 作对象来处理。

31、foreach循环

for循环语句依次输出a数组每个元素的程序段,例如: for(inti= 0; i< a.length; i++) System.out.println(a[i]);

JavaSE5.0增加了一种功能很强的循环结构,可以用来 依次处理数组中的每个元素,而不必指定下标值,以下程序也可获得同样的效果: for(intelement: a); System.out.println(element);

这种for循环的语句格式为: for(variable: collection) statement

32、数组拷贝:

Java允许把一个数组变量拷贝给另一个变量时,两个 变量都指向相同的数组。 例:float girl[]=boy;

如果只是想把一个数组中的值拷贝给另一个变量,就 要使用Arrays类的copyOf方法: int[]copiedGirl=Arrays. copyOf(girl, girl.length);

通过这个方法可以用来增加数组的大小: girl=Array. copyOf(girl, 2*girl.length);

33、数据排序:

调用java.util.Arrays类中的sort方法,可对一个数字数组进行排序。

该方法采用优化快速排序算法。

34、多维数组:

在程序设计时,如果需要存储二维表格数据,其中每 个数据的类型是一样的,可采用二维数组。

对二维数组的每个元素赋值一般是通过嵌套的二重循环来进行。

35、不规则数组:

Java可以使用不规则数组,即数组的每一行有不同的长度。

在创建不规则数组时,从最高维开始分别为每一维数组分配空间。

36、数组总结:

数组使用之前要确定大小,可以在程序中根据需要动 态生成数组(如用表达式计算出大小)。

一旦生成数组,大小不可改变。Java不支持变长数组。 数组的属性—length :数组元素的个数。

Java中的数组作为一种对象类型,可以作为方法的参 数,方法调用时传的是指向数组的引用。

ArrayIndexOutOfBoundsException异常。

第二部分:实验部分

(1)进一步熟悉命令行和IDE两种方式下java程序开发的基本步骤;

(2)掌握Eclipse集成开发环境下导入Java源程序的过程;

(3)掌握Java语言构造基本程序的数据类型、变量、运算符、各类表达式、输入输出、流程控制的基本语法;

(4)掌握String类、StringBuilder类、数组类的用法。

实验1:编写java 应用程序,输出以下4个表达式的值。

int i=1;

double d=1.0;

(1) 45+45*50%i--

(2) 1.5*3+d++

(3) (true)&&(3>4)

(4) (i>0)||(i<0)

在Eclipse中写下程序,其程序与结果如下图所示:

201771010123汪慧和《面向对象程序设计Java》第二周学习总结

实验2:编写包含以下代码片段的java应用程序,输出字符串类对象s3的值。

String s1=“Hello!”;

String s2=“World”;

String s3=s1+s2;

在Eclipse中写下程序,其程序与结果如下图所示:

201771010123汪慧和《面向对象程序设计Java》第二周学习总结

实验3:更改实验2中s1、s2、s3为StringBuilder类对象,观察程序运行结果并与实验2结果进行对比,理解String类对象与StringBuilder类对象的区别。

更改后的程序及结果所下图所示:

201771010123汪慧和《面向对象程序设计Java》第二周学习总结

区别:string本身是不可改变的,它只能赋值一次,每一次内容发生改变,都会生成一个新的对象,然后原有的对象引用新的对象,而每一次生成新对象都会对系统性能产生影响,这会降低.NET编译器的工作效率。

而StringBuilder类则不同,每次操作都是对自身对象进行操作,而不是生成新的对象,其所占空间会随着内容的增加而扩充,这样,在做大量的修改操作时,不会因生成大量匿名对象而影响系统性能。

当程序中需要大量的对某个字符串进行操作时,应该考虑应用StringBuilder类处理该字符串,其设计目的就是针对大量string操作的一种改进办法,避免产生太多的临时对象;而当程序中只是对某个字符串进行一次或几次操作时,采用string类即可。

实验4:在命令行方式下调试运行下列程序,理解java应用程序命令行参数的用法。

public class Message

{

public static void main(String[] args)

{

if (args[0].equals(“-h”)) System.out.print(“Hello”);

else if(args[0].equals(“-g”); System.out.print(“goodbye,”);

for(int i=1;i<args.length;i++)

System.out.print(“  ”+args[i]);

System.out.println(“!”);

}

}

其运行结果如下图所示:

201771010123汪慧和《面向对象程序设计Java》第二周学习总结

201771010123汪慧和《面向对象程序设计Java》第二周学习总结

实验5:Eclipse环境下导入第3章示例程序InputTest.java步骤:

(1)   新建java project如下图:

201771010123汪慧和《面向对象程序设计Java》第二周学习总结

(2)   选择File->import->File ystem->Next,打开文件导入窗口如下图,点击上方Browse选择导入源程序并选中,点击下方Browse选择源程序导入位置为新项目InputTest/src位置后,点击finish完成导入。

201771010123汪慧和《面向对象程序设计Java》第二周学习总结

(3)   打开InputTest项目src文件夹的缺省包,双击InputTest.java在IDE源程序编辑区打开文件。

(4)   右键单击InputTest.java文件名打开快捷菜单,选择Run as->java application运行此程序,结合程序运行结果,理解代码中Scanner类对象用法,掌握java控制台输入方法。

其结果下图所示:

201771010123汪慧和《面向对象程序设计Java》第二周学习总结

实验6:按照实验5的操作步骤,导入WriteReadFileTest.java示例程序,结合程序运行结果理解程序代码,观察项目文件夹下文件myfile.txt的内容,掌握文件的输入输出操作。

程序及结果如下图所示:

201771010123汪慧和《面向对象程序设计Java》第二周学习总结

实验7:按照实验5的操作步骤,导入第3章示例程序,每个示例程序从语法、算法两个角度总结学习内容。

(1)测试Retirement.java,Retirement2.java,LotteryOdds.java掌握循环控制结构;

201771010123汪慧和《面向对象程序设计Java》第二周学习总结

201771010123汪慧和《面向对象程序设计Java》第二周学习总结

201771010123汪慧和《面向对象程序设计Java》第二周学习总结

(2)测试BigIntegerTest.java,掌握大数值类的用法;

201771010123汪慧和《面向对象程序设计Java》第二周学习总结

(3)测试LotteryDrawing.java,掌握数组的用法;

201771010123汪慧和《面向对象程序设计Java》第二周学习总结

(4)测试CompoundInterest.java,掌握多维数组的用法;

201771010123汪慧和《面向对象程序设计Java》第二周学习总结

(5)测试LotteryArray.java,掌握不规则数组的用法。

201771010123汪慧和《面向对象程序设计Java》第二周学习总结

三、实验总结:

通过本次实验了解了就java的数据类型,变量,类型转换,运算符的优先级和结合性,输入输出,多维数组等的相关知识。了解了java 与C语言的一些不同之处:比如字符型java使用的是万国码。在实验中掌握了将文件导入到Eclipse中,并且掌握了一些编程相关的知识,比如:String与StringBuilder的区别。

在命名类名是前面不能有空格,标识符的开头不能是数字,通过实验明白了java的严谨性,标点符号必须要,并且是英文状态下。在实验中遇到了很多问题,通过学长和老师的讲解最终解决了。也让我认识到了java语言需要多动手去敲代码,多去思考。