杨其菊201771010134《面向对象程序设计Java》第二周学习总结

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

第三章 Java基本程序设计结构

第一部分:(理论知识部分)

本章主要学习:基本内容;数据类型;变量;运算符;类型转换,字符串,输入输出,控制流程,大数值以及数组。

1.基本概念:

1)标识符:由字母、下划线、美元符号、数字、汉字组成, 且第一个符号不能为数字。标识符可用作: 类名、变量名、方法名、数组名、文件名等

2)关键字:  关键字就是Java语言中已经被赋予特定意义 的一些单词。 Eg:class、public、void等。 注意:关键字不做变量名

3)三种注释方式:

a.// 注释内容由//一直到此行结束。

b. /*和*/ 定义一个注释块。

c.  /**开始,*/结束 这种注释方法可用来自动产生文档。

2.数据类型:

Java是一种强类型语言。这意味着每一个变量必须声明一种为类型。
 Java共有8种基本类型
– 整数类型(int、short、long、byte)Java中没有unsigned类型 。
– 浮点类型(float、double)
– 布尔类型(boolean )    在Java中,布尔值和整数不能相互转换。只有true、false两个值。

– 字符类型 (char)     英语引号             Java采用unicode字符编码集

1)常量

2)变量:定义 ;定义同时赋值

(3)字符集:Java采用unicode字符编码集,该编码集16 位,含有65536个字符。

(4)转义字符:

3.变量

 1)声明变量:在Java中,每一个变量属于一种类型。在声明变量时,变量所属的类型位于变量名之前,一行可以声明多个变量。。如;– int vacationDays;– int i,j;

2)变量初始化:一个变量声明后,必须通过赋值语句对它进行明确的初始化——永远不要使用一个未初始化的变量的值。  在Java中,不能在同一作用域内声明两个同名的变量。一个变量声明后,必须通过赋值语句对它进行明确的初始化。

4.运算符(与面向对象运算相关):

1)各种运算符:算术运算符;自增运算符与自减运算符; 关系运算符;逻辑运算符;

2)运算符的优先级与结合性:

优先级 操作符 结合性
1 [ ] . () (方法调用) 从左到右
2 ! ~ ++ -- +(一元) –(一元) ()(强制类型转换) new 从右到左
3 * / % 从左到右
4 + - 从左到右
5 << >>(算术右移) >>>(逻辑右移) 从左到右
6 < <= > >= instanceof 从左到右
7 == != 从左到右
8 & 从左到右
9 ^ 从左到右
10 | 从左到右
11 && 从左到右
12 || 从左到右
13 ?: 从右到左
14 = += -= *= /= %= &= |= ^= <<= >>= >>>= 从右到左

Java提供的两个特别运算符:new(创建对象),Instanceof(返回一个布尔值来指出某个对象是否是一个特定类或者是它的子类的一个实例)。

5.类型转换(长字节向短字节转换):

杨其菊201771010134《面向对象程序设计Java》第二周学习总结

1) 隐式类型转换:大多数的数值转换是遵循优先级的关系自动完成的。 转换原则如下: 如果两个操作数中有一个是double类型的,则另一个将 会转换成double类型。float、long型同理。否则,两个操作数都将转换成int类型。

2) 强制类型转换

6.字符串

String:不可变字符串

基本操作:(a) 获得字符串的子串;

                  (b)串连接(+);

                   (c)  获取字符串的长度;

                  (d) 检测字符串是否相等;

                   (5) 字符串检索;

获得对象的字符串表示:所有的类都默认为是java.lang包中Object类的子类或间接子类----同族同宗,所有的类都可以享用一些基本功能。

StringBuilder:允许更改和变化的构建字符串StringBuilder.

7.输入与输出:

1) 读取输入:通过控制台进行输入时,需要构造一个Scanner对象,并 与“标准输入流”System.in关联。Scanner类定义在java.util包中,因此使用时需将相应的包加载进来。
     2)格式化输出:需要构造一个PrintWriter对象, 在构造器中,只需提供文件名。
     3)文件输入与输出:需要一个用File对象构 造一个Scanner对象。

8.控制流程:if、switch、for、while、do-while。

循环语句分为三种: while; do-while;for

几点注意:
 表达式值、常量i的值为整型,不能是字符串。
 常量i != 常量j
 执行:先计算表达式值,若与常量i相同,则执行语句序列i;若都不相同,则执行语句序列n+1。
 注意case子句后的break!!

9. 大数值
 如果基本的整型和浮点型数据无法达到要求的精度,那么可以使用 java.math 包中的两个类,BigInteger和BigDecimal。这两个类可以操作任意长的数字。
 BigInteger类实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点运算。

10.数组: 对元素的确定是由数组名和它的下标实现的,如a[0]代表数组a的第一个元素,a[1]代表数组a的第二个元素,依次类推。
  1)声明:
       一维数组格式:
                                数组元素类型 数组名字[];
                                数组元素类型[] 数组名字; //推荐使用
      二维数组格式:
                                数组元素类型 数组名字[][];
                                 数组元素类型[][] 数组名字;//推荐使用
其中数组元素类型可以为Java中的任意类型,包括基本类型和复合类型。

2)创建:格式如下:数组名字=new 数组元素类型[个数]

3)初始化

第二部分:(实验部分)

1、实验目的与要求

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

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

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

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

2、实验内容和步骤

实验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)

实验代码及调试结果如下图:

杨其菊201771010134《面向对象程序设计Java》第二周学习总结

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

String s1=“Hello!”;

String s2=“World”;

String s3=s1+s2;

实验代码及调试结果如下图:

杨其菊201771010134《面向对象程序设计Java》第二周学习总结

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

实验代码及调试结果如下图:

杨其菊201771010134《面向对象程序设计Java》第二周学习总结

实验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(“!”);
}
}

用命令行方式调试结果如下图

杨其菊201771010134《面向对象程序设计Java》第二周学习总结

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

(1)   新建java project如下图:

杨其菊201771010134《面向对象程序设计Java》第二周学习总结

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

杨其菊201771010134《面向对象程序设计Java》第二周学习总结

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

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

示例代码:

杨其菊201771010134《面向对象程序设计Java》第二周学习总结

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

 import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
import java.util.Arrays; public class WriteReadFileTest { /**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException { //写入文件演示
PrintWriter out = new PrintWriter("myfile.txt");
out.println("姓名 高数 Java 数据结构 平均成绩 总成绩");
out.println("张三 20 30 40 0 0");
out.println("李四 50 60 70 0 0");
out.close();//切记,输出完毕,需要close //读入文件演示
Scanner in = new Scanner(new File("myfile.txt"));//为myfile.txt这个File创建一个扫描器in
int number = 1;//行号
while(in.hasNextLine()){//判断扫描器是否还有下一行未读取,该循环把文件的每一行都读出
String line = in.nextLine();//读出myfile.txt的下一行
System.out.println("第"+(number++)+"行的内容" +"="+line); Scanner linescanner = new Scanner(line);//对每一行的内容建立一个扫描器
linescanner.useDelimiter(" ");//使用空格作为分隔符
String name = linescanner.next();
String math = linescanner.next();
String java = linescanner.next();
String ds = linescanner.next();
String avg = linescanner.next();
String total = linescanner.next();
System.out.println("name="+name+" math="+math+" java="+java+" ds="+ds+" avg"+avg+" total="+total);
}
in.close();//读入完毕,最后需要对其进行close。 }
}

按上述步骤导入运行截图如下:

杨其菊201771010134《面向对象程序设计Java》第二周学习总结

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

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

1)

杨其菊201771010134《面向对象程序设计Java》第二周学习总结

2)

杨其菊201771010134《面向对象程序设计Java》第二周学习总结

3)

杨其菊201771010134《面向对象程序设计Java》第二周学习总结

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

杨其菊201771010134《面向对象程序设计Java》第二周学习总结

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

杨其菊201771010134《面向对象程序设计Java》第二周学习总结

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

杨其菊201771010134《面向对象程序设计Java》第二周学习总结

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

杨其菊201771010134《面向对象程序设计Java》第二周学习总结

第三部分:实验总结

通过本周学习,学习到了Java的一些基本内容,认识到其语言确实与C语言极其相似,学完C语言很容易理解其中一些内容,在做实验的过程中对理论知识部分有了更深一层的理解和体会,。每个实验的语言都值得仔细体会和玩味,尤其在实验7中,通过测试Retirement.java,Retirement2.java,LotteryOdds.java等示例程序基本认识了循环控制结构、大数值类的用法、数组的用法、多维数组的用法和不规则数组的用法,除此之外,也通过几个实验熟悉了文件的导入与输出。但随着学习的深入,也让我发现了更多的问题和疑惑,我想我还需要更多的时间去琢磨这门语言!