实验二 Java基本程序设计(1)

实验时间 2018-9-6

1、实验目的与要求

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

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

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

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

2理论学习部分

(1) Java是一种强类型语言,这意味着每一个变量必须声明为一种类型。类是构建所有Java应用程序和applet的构建模块。Java应用程序中的 全部内容都必须放置在类中。

类名是以大写字母开头的名词。如果名字由多个单词组成,每个单词的第一个字母都应该大写。

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

  源代码的文件名必须与公共类的名字相同,并用java做扩展名。

  永远不要使用一个没初始化的变量的值。

  标识符(类名,变量名,方法名,数组名,文件名):由字母,下划线,美元符号和数字组成,第一个符号不能为数字。

  常见关键字(不作变量名):class  public  try  catch  if  float  import  void

(2)数据类型:

  整数类型:(int   short  long  byte)

  浮点类型:(float  double)

  字符类型:(char)

  布尔类型:(boolean)

(3)在Java中,使用关键字final来指示常量,习惯上常量名都大写。final表示只能对变量附一次值,其值一旦设定,便不能改。

(4)新的运算符:new:这是一个用来创建对象的特别运算符。

  Instanceof:返回一个布尔值来指出某个对象是否是一个特定类或者是它的子类的一个实例。

(5)类型转换:

  隐式类型转换:大多数的数值转换是遵循优先级关系自动完成的。

  强制类型转换的语法:(目标类型)变量名

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

(6)字符串常量:

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

  使用“  ”定义字符串。

  Java会自动为字符串常量生成一个String类的对象,所以可以直接初始化String类对象。

  Java语言允许使用+号连接(拼接)两个字符串。

  当一个字符串与一个非字符串的值进行拼接时,后者被转换成字符串。

  可以用equals方法检测两个字符串是否相等。表达式为:  s.equals(t)

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

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

  StringBuilder  builder = new StringBuilder();//create a string builder

(7)数学函数包含在Math类中。

  两个常量   —math.PI    ,—Math.E

  若不想在数学方法名和常量名前加前缀“Math”,可在源文件顶部加上以下代码即可:

  —import  static  java.lang.math*;

(8)文件的输入和输出

  要想对文件进行读取,就需要一个用File对象构建一个Scanner对象。

  Scanner in  =  new  Scanner(“paths.get(“myfile.txt”),"UTF-8”);

(9)Java有五种语句:

  方法调用语句:System。out("Hello!");

  表达式语句:x = 23;  i++;

  复合语句:块(即复合语句)是由一对大括号括起来的若干条简单的Java语句。

  控制语句:程序控制流程由这些语言确定。

(10)大数值:如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中的两个很有用的类:BigInteger和    BigDecimal。

3、实验内容和步骤

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

 

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

String s1=“Hello!”;

String s2=“World”;

String s3=s1+s2;

 

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

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

  有内置的字符串类型,而是在标准Java类库中提供了一个Java预定义类String。在Java中,字符串被当作对象来处l理程序中需要用到的字符串可以分为两大类:

  1.创建之后不会再做修改和变动的不可变字符串String类;
  2. 创建之后允许再做更改和变化的构建字符串StringBuilder类。

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

public class Message

{

public static void main(String[] args)

{

if (args[0].equals(“-h”)) System.out.print(“Hello”);//用equals方法检测两个字符串是否相等

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

}

}

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

(1) 新建java project如下图:

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

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

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

  想要通过控制台进行输入,首先需要构造一个Scanner对象,并与“标准输入流”System.in关联。

  Scanner scan = new Scanner(System.in);

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

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

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

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

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

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

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

  

第二周Java实验作业的更多相关文章

  1. 第十八周java实验作业

    实验十八  总复习 实验时间 2018-12-30 1.实验目的与要求 (1) 综合掌握java基本程序结构: (2) 综合掌握java面向对象程序设计特点: (3) 综合掌握java GUI 程序设 ...

  2. 第十五周java实验作业

    实验十五  GUI编程练习与应用程序部署 实验时间 2018-12-6 1.实验目的与要求 (1) 掌握Java应用程序的打包操作: Java程序的打包,程序编译完成后,程序员将.class文件压缩打 ...

  3. 第十一周Java实验作业

    实验十一   集合 实验时间 2018-11-8 1.实验目的与要求 (1) 掌握Vetor.Stack.Hashtable三个类的用途及常用API: Vector类类似长度可变的数组,其中只能存放对 ...

  4. 第二周Java课堂作业

    演示一: public class EnumTest { public static void main(String[] args) { Size s=Size.SMALL; Size t=Size ...

  5. 第十七周Java实验作业

    实验十七  线程同步控制 实验时间 2018-12-10 1.实验目的与要求 (1) 掌握线程同步的概念及实现技术: 多线程并发运行不确定性问题解决方案:引入线程同步机制,使得另一线程使用该方法,就只 ...

  6. 第十六周Java实验作业

    实验十六  线程技术 实验时间 2017-12-8 1.实验目的与要求 (1) 掌握线程概念: 多线程是进程执行过程中产生的多条执行线索,线程是比进程执行更小的单位. 线程不能独立存在,必须存在于进程 ...

  7. 第十二周java实验作业

    实验十二  图形程序设计 实验时间 2018-11-14 1.实验目的与要求 (1) 掌握Java GUI中框架创建及属性设置中常用类的API: Java的集合框架实现了对各种数据结构的封装. jav ...

  8. 第十周Java实验作业

    实验十  泛型程序设计技术 实验时间 2018-11-1 1.实验目的与要求 (1) 理解泛型概念: 泛型:也称参数化类型,就是在定义类,接口和方法时,通过类型参数只是将要处理的类型对象.(如Arra ...

  9. 第九周Java实验作业

    实验九 异常.断言与日志 实验时间 2018-10-25 1.实验目的与要求 (1) 掌握java异常处理技术: Java的异常处理机制可以控制程序从错误产生的位置转移到能够进行错误处理的位置. Ja ...

随机推荐

  1. DEBUG -- CLOSE BY CLIENT STACK TRACE问题的两种解决方案,整理自网络

    1.DEBUG -- CLOSE BY CLIENT STACK TRACE 最近用c3p0遇到各种奇怪的问题,也不知道是它不行还是我不行. 今天又遇到了一个"DEBUG -- CLOSE ...

  2. [PyTorch入门之60分钟入门闪击战]之训练分类器

    训练分类器 目前为止,你已经知道如何定义神经网络.计算损失和更新网络的权重.现在你可能在想,那数据呢? What about data? 通常,当你需要处理图像.文本.音频或者视频数据时,你可以使用标 ...

  3. Pwnable.tw start

    Let's start the CTF:和stdin输入的字符串在同一个栈上,再准确点说是他们在栈上同一个地址上,gdb调试看得更清楚: 调试了就很容易看出来在堆栈上是同一块地址.发生栈溢出是因为:r ...

  4. 手机预装APP“死灰复燃”,这颗“毒瘤”到底怎么了

    ​ ​ 离全新智能手机集中发布的8月底.9月初这个时间段越来越近了,iPhone 8等重磅新机也为互联网媒体贡献了足够的流量和热度.但就在大众聚焦于新机时,一个困扰很多人的问题再度冒出头--智能手机上 ...

  5. 《和莎莫的 500 天》中为什么 Summer 最终没有和 Tom 在一起?

    好的电影总是需要仔细赏味几次,每次也都会有不同的收获.就像我钟爱的[500 days of summer]. 彪悍的大胡子导演MarcWebb实在是太有趣,把自己的亲身经历搬上大荧幕,因为" ...

  6. MHRD_Guide

    @(Steam蒸汽动力)[MHRD|Game|How To] [CH]游戏解决方案 1.解决方案将作为完整的代码呈现,部分结决方案将有理论分析或图解. 2.根据记录板判断,解决方案远非理想. 3.慎重 ...

  7. 解决Request中参数中文乱码问题

    1.使用配置过滤器的方式解决 在web.xml中增加过滤器: <!--配置解决中文乱码的过滤器--> <filter> <filter-name>character ...

  8. shell 之 case。。。esac多分支选择

    case分支属于匹配执行的方式,它针对指定的变量预先设置一个可能的取值,判断该变量的实际取值是否与预设的某一个值相匹配,如果匹配上了,就执行相应的一组操作,如果没有任何值能够匹配,就执行预先设置的默认 ...

  9. unittest实战(二):用例编写

    # coding:utf-8import unittestfrom selenium import webdriverimport timefrom ddt import ddt, data, unp ...

  10. NLP(二十二)利用ALBERT实现文本二分类

      在文章NLP(二十)利用BERT实现文本二分类中,笔者介绍了如何使用BERT来实现文本二分类功能,以判别是否属于出访类事件为例子.但是呢,利用BERT在做模型预测的时候存在预测时间较长的问题.因此 ...