201871010121 王方 《面向对象程序设计(java)》 第二周学习总结
这个作业属于哪个课程 |
https://www.cnblogs.com/nwnu-daizh/ |
这个作业的要求在哪里 |
https://www.cnblogs.com/nwnu-daizh/p/11475377.html |
作业学习目标 |
|
第一部分
本周理论知识总结及分析Java知识与C基础语法的异同比较
(一)在Java应用程序应注意的问题
(1)首先Java区分大小写,如果出现了大小写拼写错误程序将无法运行。
(2)Java应用程序中的全部内容都应当放在类中。
(二)基本知识
(1)标识符
标识符由字母、下划线、美元符号和数字组成,且第一个符号不能为数字。
比如下列都是合法标识符:Hello、$1234、程序名、www_123
标识符可用作:类名、对象名、变量名、方法名、数组名、文件名等。
(2)关键字
关键字就是Java语言中已经被赋予特定意义的一些单词。
常见的关键字有:class、public、try、catch、if、float、import、void等。
关键字不做变量名
(3)注释
Java有三种注释的方式:
//
注释内容由//一直到此行结束。
/*和*/
定义一个注释块。
/**开始,*/结束
这种注释方法可用来自动产生文档。
(4)数据类型
Java是一种强类型语言。这意味着每一个变量必须声明一种为类型。
Java共有8种基本类型
整数类型(int、short、long、byte)
整型常量表示:
十进制:123, 6000
八进制:077, 065
十六进制:0x234, 0Xab12
二进制:0b1001,0B0111
Java中整数的范围与运行Java代码的机器无关。
Java中没有unsigned类型
整型变量的数据类型分为四种:
int、short、long、byte
变量定义:
int x;
int height, age;
定义同时可赋值: int height=180, age=20;
对于int型变量,内存分配个4字节,占32位,取值范围-231 ~ 231-1。
short型
变量定义:
short h;
short m, n;
定义同时可赋值:
short m=12, n=20;
对于short型变量,内存分配2个字节,占16位,取值范围-215 ~215-1
long型
变量定义:
long sum;
long I, j, k;
定义同时可赋值:
long sum=343435L;
对于long型变量,内存分配8个字节,占64位,取值范围-263 ~263-1
byte型
变量定义:
byte w;
byte x,y,z;
定义同时可赋值:
byte x=12, y=24, z=36;
对于byte型变量,内存分配个1字节,占8位,取值范围-27 ~ 27-1。
浮点类型(float、double)
Java中有两种浮点类型:
float double
浮点常量的表示:
小数表示 430.2
科学计数 4.302E2
表示溢出和出错的三种特殊的浮点常量:
正无穷大——Double.POSITIVE_INFINITY
负无穷大——Double.NEGATIVE_INFINITY
NaN(非数字)——Double.NaN
float型
常量
12.23f, 32.00F, 2e40f
变量的定义
float x;
float x1,x2,x3;
定义时赋初值
float x1=12.23f, x2=32.00f, x3;
对于float型变量内存分配4个字节,占32位double 型
常量
12.23d, 32.00D,123.0,6e-120
变量定义
double d;
double d1,d2,d3;
定义时可以赋初值
double d1=12.23, d2=32.00d, d3;
对于double型变量内存分配8个字节,占64位。
字符类型(char)
常量
‘a’、‘A’ 、‘8’ 、‘?’
变量定义
char q; char c, type, cat;
定义同时可赋值
char c=‘a’, type, cat;
布尔类型(boolean)
3.2.4 布尔类型
常量
true、false
变量的定义
boolean x;
boolean x,y;
定义同时可赋值
boolean x=true, y=false;
在Java中,布尔值和整数不能相互转换
(5)变量
在Java中,每一个变量属于一种类型。在声明变量时,
变量所属的类型位于变量名之前。
double salary;
int vacationDays;
long earthPopulation;
boolean done;
在Java中,一行可以声明多个变量。逐一声明每一个变量可以提高程序的可读性。
int i,j;//both are integers
1、变量的初始化
一个变量声明后,必须通过赋值语句对它进行明确的初始化——永远不要使用一个未初始化的变量值。
在Java中,可以在代码的任何位置进行变量声明。变量的声明尽可能地靠近变量第一次使用的地方,这是一种良好的程序编写风格。
在Java中,不能在同一作用域内声明两个同名的变量。
2、常量的定义
在Java中,使用关键字final来指示常量。习惯上常量名都用大写。
final double CM_PER_INCH=2.54;
关键字final表示只能对变量赋一次值,其值一旦设定,便不能改。
在Java中,经常希望某个常量可以在一个类中的多个方法中使用,通常将这些常量称为类常量。可以使用关键字static final声明一个类常量(class constants)。
public static final double CM_PER_INCH=2.54
(6)运算符
(1)各种运算符:与面向对象运算相关
Java提供的一个特别运算符
这是一个用来创建对象的运算符。
Java另外一个特别运算符
返回一个布尔值来指出某个对象是否是一个特定类或者是它的子类的一个实例。
(a)算术运算符
(b)自增运算符
(c)关系运算符
(d)逻辑运算符
(e)位运算符
(3)运算符的优先级与结合性
(3)数学函数与常量
数学函数包含在Math类中。
幂函数
三角函数
指数函数及它的反函数等
Java还提供了两个常量。
Math.PI
Math.E
若不想在数学方法名和常量名前加前缀
“Math.”,可在源文件顶部加上以下代码即可。
import static java.lang.Math.*;
(7)转换类型
(a)强制转换类型
强制类型转换的语法:
(目标类型)变量名
在进行强制类型转换时,当心丢失数据。
例1:double x=9.987;
int nx=(int) x; //转换后 nx=9
例2:若要把一个浮点数转换成与其最接近的数(即
进行四舍五入)需使用Math.round()方法。
double x=9.987;
int nx=(int)Math.round(x); //结果:nx=10
(b)隐式转换类型
大多数的数值转换是遵循优先级的关系自动完成的。
转换原则如下:
如果两个操作数中有一个是double类型的,则另一个将会转换成double类型。
否则,如果两个操作数中有一个是float类型的,另一个将会转换成float类型。
否则,如果两个操作数中有一个是long类型的,另一个将会转换成long类型。
否则,两个操作数都将转换成int类型。
(8)字符串
Java字符串是Unicode字符的序列,它是组织字符的基本数据结构,用法类似于字符数组。
有内置的字符串类型,在标准Java类库中提供了一个Java预定义类String。在Java中,字符串被当作对象来处理。
程序中需要用到的字符串可以分为两大类:
创建之后不会再做修改和变动的不可变字符串String类;
创建之后允许再做更改和变化的构建字符串StringBuilder类。
(a)字符串常量
使用“”定义字符串。
“abc”,“欢迎使用Java”都是字符串。
Java会自动为字符串常量生成一个String类的对象,所以可以直接初始化String对象。
如:String s = “Hello world!”
(b)String类
String类的构造方法
创建String的一个对象并进行初始化,需要调用类
String的构造方法,主要有以下创造方法:
① String():创建一个空串
② String(String value)
③ String(char value[])
④ String(char[],int startIndex,int numChars)
⑤ String(byte[],byte hibyte)
⑥ String(byte[],byte hibyte,int startIdnex,int
numChars
(c)SttringBuilder类的说明
如果需要多个小段字符串连接创建一个字符串时,每次连接字符串时,都会构建一个新的String对象,既耗时,又浪费空间,建立StringBuilder类就可以避免这个问题的发生。
步骤:
StringBuilder builder = new StringBuilder(); //create a string builder
builder.append(ch); //appends a single character
Builder.append(str); //appends a string
在JDK5.0中引入StringBuilder类,这个类的前身是StringBuffer类
(9)输入输出
(a)读取输入
通过控制台进行输入时,需要构造一个Scanner对象,并与“标准输入流”System.in关联。
Scanner in = new Scanner(System.in);
例3-2 InputTest.java p55
任务:测试InputTest.java
Scanner类定义在java.util包中,因此使用时需将相应的包加载进来。
Scanner类具体API见p57。
由于Scanner类输入是可见的,所以不适用于从控制台读
取密码。Java SE 6.0特别引入Console类实现这个目的。
(b)格式化输出
使用System.out.print(x)将数值x输出到控制台上,这条命令将以x对应的数据类型所允许的最大非0数字位数打印输出x。
Java SE 5.0沿用了C语言库函数中的printf方法,
System.out.printf()。
用于printf的转换符
用于printf的标志。
printf方法中日期和时间的格式化输出
(c)文件输入与输出
要想对文件进行读取,就需要一个用File对象结构造一个Scanner如: Scanner in = new Scanner(new File(“myfile.txt”));
要想写入文件,就需要构造一个PrintWriter对象,在构造器中,只需提供文件名:
PrintWriter out = new PrintWriter(“myfile.txt”);
(9)控制流程(Java共有5中语法)
(a)方法调用语句
(b)表达式语句
(c)复合语句
(d)控制语句(if、switch、for、while、do-while)
(e)Packege和import语句
(10)大数值
如果基本的整型和浮点型数据无法达到要求的精度,那么可以使用java.math包中的两个类,
BigInteger和BigDecimal。这两个类可以操作任意长的数字。
BigInteger类实现了任意精度的整数运算,
BigDecimal实现了任意精度的浮点运算。
(11)数组
(1)数组是一种数据结构,它是有序数据的集合,
数组中的每个元素的数据类型都是相同的。
(2)数组的声明
a)一维数组格式:
数组元素类型 数组名字[];
数组元素类型[] 数组名字; //推荐使用
b)二维数组格式:
数组元素类型 数组名字[][];
数组元素类型[][] 数组名字; //推荐使用
d)其中数据类型可以为java中的任意类型,包括基本类型和复合类型。
e)也可用定义的类来声明数组;
Point[] line;
f)java在数组声明时并不为数组分配内存,在java中,数组是独立的类,有自身的办法。
(3)数组的创建
数组声明后,要用new运算符为其分配内存空间,分配内存空间时必须指明数组的长度。 数组名字= new 数组元素类型[个数]
第二部分 实验部分
实验名称 Java基本程序设计
1、实验目的
(1)进一步熟悉命令行和IDE两种方式下java程序开发的基本步骤;
(2)掌握Eclipse集成开发环境下导入Java源程序的过程;
(3)掌握Java语言构造基本程序的数据类型、变量、运算符、各类表达式、输入输出、流程控制的基本语法;
(4)掌握Math类、String类、StringBuilder类的用法。
2、实验内容和步骤
实验1:java风格九九乘法表程序互评。通过互评给分让我们更加熟悉九九乘法表的代码,更让我们在给别人找错误的同事思考自己搓澡哪里以及错误的原因。
实验2:编写包含以下代码片段的java应用程序,输出字符串类对象s3的值。
String s1=“Hello!”; String s2=“World”; String s3=s1+s2; |
(1)程序代码及运行结果如下
实验3:更改实验2中s1、s2、s3为StringBuilder类对象,观察程序运行结果并与实验2结果进行对比,理解String类对象与StringBuilder类对象的区别。
实验代码及运行结果如下
实验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(“!”);
}
}
(1)实验结果及代码如下
实验5:Eclipse环境下导入第3章示例程序InputTest.java步骤:
(1) 新建java project如下图:
(2) 选择File->import->File ystem->Next,打开文件导入窗口如下图,点击上方Browse选择导入源程序并选中,点击下方Browse选择源程序导入位置为新项目InputTest/src位置后,点击finish完成导入。
(3) 打开InputTest项目src文件夹的缺省包,双击InputTest.java在IDE源程序编辑区打开文件。
(4) 右键单击InputTest.java文件名打开快捷菜单,选择Run as->java application运行此程序,结合程序运行结果,理解代码中Scanner类对象用法,掌握java控制台输入方法。
(5) 实验代码及结果如下
实验6:按照实验5操作步骤,导入WriteReadFileTest.java示例程序,运行程序并理解程序代码,观察项目文件夹下文件myfile.txt的内容,掌握文件的输入输出操作。
(1)实验代码运行结果
(2)myfile.txt实验结果如下
实验7:按照实验5的操作步骤,导入第3章3-3——3-4示例程序,掌握两个程序循环控制结构的用途。
(1)3-3实验代码及运行结果
(2)3-4实验代码及运行结果
实验8:按照实验5的操作步骤,导入第3章3-5示例程序,理解抽奖概率计算算法。
实验代码及运行结果
课程总结
(1)这周我们所学的内容主要包括Java理论知识学习和实验操作部分。在这期间老师还通过雨课堂对我们所学知识进行了检测,其中老师还帮我们复习了之前学过的C语言部分,对我有极大的帮助。
(2)理论知识部分我们主要学了Java的应用程序,还有标识符、数组等基础语言知识,我们之前在C语言中也学过,这次主要是再次学习和区分Java和C基础语言中的区别,对我们有很大的帮助。
(3)这次在实验部分出现了很多细节上面的问题,这些源于自己没有很深刻的理解,尤其在符号上面出现的错误,导致实验运行错误或着运行不出来是很低级的错误,以后我一定会更加扎实仔细的学习,多动手敲代码,尽量避免一些简单的错误。