面向对象程序设计 (JAVA)》第二周 学习总结

项目

内容

这个作业属于哪个课程

<任课教师博客主页链接>https://www.cnblogs.com/nwnu-daizh/

这个作业的要求在哪里

<作业链接地址><https://edu.cnblogs.com/campus/xbsf/2018CST1/homework/4519>

作业学习目标

<填写具体目标>

  • 适应老师教学方式,能按照自主学习要求完成本周理论知识学习;
  • 掌握Java Application程序结构;
  • 掌握Java语言的数据类型与变量;
  • 学会使用Java运算符构造各类表达式;
  • 掌握Java Application输入输出技术;
  • 掌握Java流程控制技术(分支、循环);(重点)
  • 掌握Math类、String类的用法。(难点)

第一部分:结合Java和C基础语法的异同比较,总结本周理论知识(30)

一.简单的Java程序应运程序

1.标识符0标识符由字母、下划线、美元符号和数字组成,且第一个符号不能为数字。

标识符可用作:类名、对象名、变量名、方法名、数组名、文件名等

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

二.注释

注释Java有三种注释的方式:1.注释内容由//一直到此行结束。

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

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

三.数据类型

1.数据类型Java是一种强类型语言。这意味着每一个变量必须声明一种为类型。

  Java共有8种基本类型   -整数类型(int、short、long、byte)-浮点类型(float、double)-字符类型(char)-布尔类型(boolean)
2.整数类型整型常量表示:十进制,八进制,十六进制,二进制
   整型变量的数据类型分为四种:int short long byte,Java中整数的范围与运行Java代码的机器无关且Java中没有unsigned类型。
   int型   ,变量定义:int x;int height,age;定义同时可赋值:intheight=180,age=20;对于int型变量,内存分配个4字节,占32位                                              
  short型  ,变量定义:short h;short m,n;定义同时可赋值:shortm=12,n=20;对于short型变量,内存分配2个字节,占16位,                                              
  long型  ,变量定义:long sum;long I,j.k;定义同时可赋值:longsum=343435L;对于long型变量,内存分配8个字节,占64位 ,                                             
  byte型  ,变量定义:byte w;byte x,y,z;定义同时可赋值:bytex=12,y=24,z=36;对   于byte型变量,内存分配个1字节,占8位
 
3.浮点类型Java中有两种浮点类型:float double
   浮点常量的表示:小数表示,科学计数表示溢出和出错的三种特殊的浮点常量:正无穷大——Double.POSITIVEINFINITY负无穷大——Double.NEGATIVE_INFINITYNaN
   float型有效小数位数为6~7,变量的定义float x;floatx1,x2,x3,定义时赋初值floatx1=12.23f,x2=32.00f,x3,对于float型变量内存分配4个字节,占32位    
  double型有效小数位数为15,变量定义double d;doubled1,d2,d3,定义时可以赋初值doubled1=12.23,d2=32.00d,d3;对于double型变量内存分配8个字节,占64位。
4.字符类型常量‘a’、‘A’、‘8’、‘?'。变量定义char q;char c,type,cat;定义同时可赋值char c=‘a ',type,cat;19   字符集:Java采用unicode字符编码集,该编码集16位,含有65536个字符。
  Unicode(统一码、万国码)是一个编码规范,转义字符-前缀lu表示Unicode值,而十六进制的4位数字则表明具体是哪个Unicode字符。
5.布尔类型常量true、false变量的定义boolean x;boolean x,y;定义同时可赋值booleanx=true,y=false;在Java中,布尔值和整数不能相互转换
 
四.变量
1.变量在Java中,每一个变量属于一种类型。在声明变量时,变量所属的类型位于变量名之前。-double salary;-int vacationDays;-long earthPopulation;-boolean done;在Java中,一行可以声明多个变量。逐一声明每一个变量可以提高程序的可读性。 2.变量初始化一个变量声明后,必须通过赋值语句对它进行明确的初始化——永远不要使用一个未初始化的变量值。在Java中,可以在代码的任何位置进行变量声明。变量的声明尽可能地靠近变量第一次使用的地方,这是一种良好的程序编写风格。在Java中,不能在同一作用域内声明两个同名的变量
 
五.运算符
1.各种运算符:与面向对象运算相关Java提供的一个特别运算符new-这是一个用来创建对象的运算符。Java另外一个特别运算符Instanceof-返回一个布尔值来指出某个对象是否是一个特定类或者是它的子类的一个实例。 2.需注意运算符的优先级与结合性优先级操作符结合性 3.数学函数与常量数学函数包含在Math类中。-幂函数-三角函数-指数函数及它的反函数等Java还提供了两个常量。-Math.PI-Math.E若不想在数学方法名和常量名前加前缀Math.”,可在源文件顶部加上以下代码即可。 4.强制类型转换强制类型转换的语法:(目标类型) 变量。
 
六.字符串
1.字符串Java字符串是Unicode字符的序列,它是组织字符的基本数据结构,用法类似于字符数组。有内置的字符串类型,在标准Java类库中提供了一个Java预定义类String。
   程序中需要用到的字符串可以分为两大类:-创建之后不会再做修改和变动的不可变字符串String类;-创建之后允许再做更改和变化的构建字符串StringBuilder类。
 
七.输入输出
1.读取输入通过控制台进行输入时,需要构造一个Scanner对象,并与“标准输入流”System.in关联。-Scannerin=newScanner(System.in);-例3-2InputTest.javap55任务:测试InputTest.javaScanner类定义在java.util包中,因此使用时需将相应的包加载进来 2.文件输入与输出要想对文件进行读取,就需要一个用File对象构造一个Scanner对象。要想写入文件,就需要构造一个PrintWriter对象,在构造器中,需要需提供文件名。
 

八控制语句(程序控制流程由这些控制语句确定)

1.if、switch、for、while、do-while

2.Package语句和import语句

九.大数值

a)如果基本的整型和浮点型数据无法达到要求的精度,可以使用java.math包中的两个类, BigInteger和BigDecimal。

b)这两个类可以操作任意长的数字:BigInteger类实现了任意精度的整数运算, BigDecimal实现了任意精度的浮点运算

十.数组

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

2.数组的声明:一维数组格式    数组元素类型    数组名字[];    数组元素类型[]  数组名字;

二维数组格式:数组元素类型    数组名字[][];    数组元素类型[][]   数组名字;其中数据类型可以为java中的任意类型,包括基本类型和复合类型。也可用定义的类来声明数组;

java在数组声明时并不为数组分配内存,在java中,数组是独立的类,有自身的办法。

3.数组的创建

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

格式:数组名字=new  数组元素类型[个数]

第二部分:实验部分

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

1.  实验目的:

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

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

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

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

2. 实验步骤与内容:

实验1 程序互评(10分)

评分要求:结合评分程序的运行情况,给出评分程序成绩,满分5分,每个错误扣1分,扣至0分为止;

评分者每发现一个正确的错误,本人实验1得分加1分,最高加5分。

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

String s1=“Hello!”;

String s2=“World”;

String s3=s1+s2;

代码如下:

public class cld {

public static void main(String[] args) {

// TODO Auto-generated method stub

String s1="Hello!";            //定义了一个String,名为s1,并将字符串Hello赋值给s1

String s2="World";             //定义了一个String,名为s2,并将字符串World赋值给s2

String s3=s1+s2;               //定义了一个String,名为上,并将s1+s2的值赋给s3

System.out.println(s3);        //输出s3的值

}

}

运行结果如下:

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

程序代码如下:

package message;

 
public class Message {
 
    public static void main(String[] args) {
        StringBuilder s1=new StringBuilder("Hello!");   //在字符串构建器StringBuilder中创建一个新的StringBuilder
        StringBuilder s2=new StringBuilder("world");
        StringBuilder s3=new StringBuilder();
        s3.append(s1);
        s3.append(s2);       //用StringBuilder将s1和s2拼接起来
        System.out.println(s3);
         
    }
    }
截图如下:
运行结果如下:

2)String类对象与StringBuilder类对象的区别:

1.String类

1) 字符串是常量;

2)String本身是不可改变的,它只能赋值一次,每次内容发生改变,都会生成一个新的String类对象,然后原有的对象引用新的对象。(它们的值在创建之后不能更改)

3)String实现字符串加法,会在内存中创建很多字符串占用内存,占用内存越多,程序的效率就越低。

2.StringBuilder类

1)每次操作都是对自身对象进行操作,而不是产生新的对象,其所占空间会随着内容的增加而扩充;

2)字符串缓冲区,可以提高字符串的效率,支持可变的字符串;

3)StringBuilder实现字符串加法,始终是一个数组,占用内存少,所以效率高。

4)如果需要用许多小段的字符串构建一个字符串,那么,首先,构建一个空的字符串构建器:

  StringBuilder builder = new StringBuilder();

当每次需要添加一部分内容时,就调用 append 方法。

  builder.append(ch); // appends a single character

  builder.append(str); // appends a string

在需要构建字符串时就调用 toString 方法,将可以得到一个 String 对象,其中包含了构建器中的字符序列。

  String completedString = builder.toString();

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

a)程序代码如下:

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

b) 其运行结果如下:

c) Java程序中main方法里存在“String[] args”参数:

1.  “String[] args”是命令行参数(其接收运行参数)

Java程序运行的同时,可以通过两种方式将命令行参数赋给给“String[] args”:

一种是在Java命令行后面带上参数,另一种是通过编译器(本文将用eclipse进行演示)进行输入,之后虚拟机就直接把他们存放到“String[] args”数组中。

2.  args是命令行参数,因为参数可以为多个,所以要用数组来存取我们输入的参数值。

 3. 针对以上程序,在命令行中调试运行:

输入 Java Message -h (或 Java Message -g)回车,即将参数赋给 args 数组,运行程序。

4.若在eclipse中进行,右键找到run as,选择Run Configurations,在文件Message中,找到它的 Arguments,在program arguments中输入参数 -h (-g) 后点击run即可。

实验5 java程序导入(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控制台输入方法。

A.Scanner类对象用法:

      1)使用Scanner的步骤:

    a: 必须导包 import java.util.Scanner; 可使用快捷键ctril+shift+o

    b:创建对象 Scanner sc = new Scanner(System.in);

    c:调用方法 sc.xxx( )

B.Scanner类的方法

    1)public int nextInt( ) : 读取一个int类型的值

    2)public String nextLine( ):读取一个String类型的值

    3)public boolean hasNextXxx():判断是否是某种类型的元素

C.Scanner类的方法总结:

    1)next( ): 只读取输入直到空格。它不能读两个由空格或符号隔开的单词。此外,next()在读取输入后将光标放在同一行中。(next()只读空格之前的数据,并且光标指向本行)

    2)nextLine():读取输入,包括单词之间的空格和除回车以外的所有符号(即。它读到行尾)。读取输入后,nextLine()将光标定位在下一行。

    3)nextline( ):只读取数值,剩下的“\n”还没有读取,并将光标放在本行中 。

    4)hasNextInt( ):判断是否是int 类型的元素,进而获取元素。

    5)next()方法并不能返回带空格、Tab键、回车符的字符串,而nextLine可以。

D.上述程序中的,Scanner in=new Scanner(System.in);

System.in 是获得一个键盘输入流,监听键盘输入的数据,所以,Scanner in=new Scanner(System.in);就已经得到了获取键盘输入的实列。

    Scanner 是一个类,in 是一个实列或者说是对象,new 是一个创建对象的方法…Scanner类表现在获得控制台输入,相当于与声明一个人类(Scanner),这个人类是谁(in),后面新创建一个人类new Scanner(system.in),system.in 表示他有什么特征。换言之,就是,新创建一个输入的Scanner 对象,然后赋值给in。在使用时要关闭 流 ,否则会有警报。

实验6 文件读写程序测试(10分)

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

  1.导入WriteReadFileTest.java示例程序,运行程序结果如下:

实验7 (5分)

按照实验5的操作步骤,导入第3章3-3——3-4示例程序,掌握两个程序循环控制结构的用途。

1)导入的3-3示例程序如下:

2)导入3-4示例程序如下:

实验8 (5分)

按照实验5的操作步骤,导入第3章3-5示例程序,理解抽奖概率计算算法。

1)导入3-5示例程序如下:

3-5该程序使用了for循环,此程序用来计算抽奖中奖的概率,如果从n个数字中抽取K个数字,可用以下公式进行计算得到结果。

  compute binomial coefficient n*(n-1)*(n-2)*...*(n-k+1)/(1*2*3*...*k)

其语句为:

3. 实验总结:(10分)

通过本周的学习,我进一步熟悉了eclipse的使用,还有就是命令行和IDE两种方式下Java程序开发的基本步骤。在完成此次老师布置的作业的过程中,我又一次遇到了新的问题,新的挑战,但是我会克服这些困难努力学习的。实验六和实验七以及实验八都是在实验五的基础上完成的,通过实验五的操作,对于文件的导入又有了进一步的熟悉。实验过程中,掌握了Java语言构造基本程序的数据类型,变量,运算符,各类表达式,输入输出,流程控制的基本语法,希望在以后的学习中,能更好的掌握Java程序设计语言。

扎西平措 201571030332 《面向对象程序设计 (JAVA)》第二周 学习总结的更多相关文章

  1. 201571030332 扎西平措 《面向对象程序设计Java》第八周学习总结

    <面向对象程序设计Java>第八周学习总结   项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https: ...

  2. 20172325 2018-2019-1 《Java程序设计》第二周学习总结

    20172325 2018-2019-1 <Java程序设计>第二周学习总结 教材学习内容总结 3.1集合 集合是一种聚集.组织了其他对象的对象.集合可以分为两大类:线性集合和非线性集合. ...

  3. 20172321 2017-2018-2 《Java程序设计》第二周学习总结

    20172321 2017-2018-2 <Java程序设计>第二周学习总结 教材学习内容总结 第一章要点: 要点1 字符串:print和println用法的区别,字符串的拼接,java中 ...

  4. 20145326《Java程序设计》第二周学习总结

    20145326<Java程序设计>第二周学习总结 教材学习内容总结 本周学习教材第三章,本章主要讲述了java语言中的一些基础语法,java是个支持面向对象的程序语言,但在正式进入面向对 ...

  5. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  6. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  7. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

  8. 20155304田宜楠 2006-2007-2 《Java程序设计》第二周学习总结

    20155304田宜楠 2006-2007-2 <Java程序设计>第二周学习总结 教材学习内容总结 一.类型与变量 1.类型 整数: 可细分为为short整数(占2字节),int整数(占 ...

  9. 201521123038 《Java程序设计》 第二周学习总结

    201521123038 <Java程序设计> 第二周学习总结 1.本章学习总结 学会在Java程序中使用函数,使程序层次更清晰 使用StringBuilder编写代码,减少内存空间的占用 ...

  10. 20155303 2016-2017-2 《Java程序设计》第二周学习总结

    20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...

随机推荐

  1. python配置yaml

    我们在做自动化的过程中无论是接口自动化还是UI自动化都会存在很多数据,我们对于自动化中如何存放这些数据也是很重要一点,如果写在代码里的话,每次更换数据就有点繁琐,我们可以通过一个文件存放这些数据,然后 ...

  2. 使用docker运行springboot项目

    本文主要讲的是使用docker运行springboot项目 获取一个springboot项目 这里我没有重新构建,用的之前写的一个项目,直接从github上下载下来,地址:https://github ...

  3. The Three Rules/Laws of TDD

    You are not allowed to write any production code unless it is to make a failing unit test pass. 除非为了 ...

  4. Codeforces Round #602 (Div. 2, based on Technocup 2020 Elimination Round 3) D2. Optimal Subsequences (Hard Version) 数据结构 贪心

    D2. Optimal Subsequences (Hard Version) This is the harder version of the problem. In this version, ...

  5. [LeetCode] 42. Trapping Rain Water 收集雨水

    Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...

  6. Python程序中的进程操作-进程池(multiprocess.Pool)

    目录 一.进程池 二.概念介绍--multiprocess.Pool 三.参数用法 四.主要方法 五.其他方法(了解) 六.代码实例--multiprocess.Pool 6.1 同步 6.2 异步 ...

  7. ExtJS布局控件

    Layout Controls Auto Layout Ext JS4中的容器的默认布局是自动布局.这个布局管理器会自动地将组件放在一个容器中. Fit Layout Fit布局安排了容器的内容完全占 ...

  8. Distilling the Knowledge in a Neural Network

    url: https://arxiv.org/abs/1503.02531 year: NIPS 2014   简介 将大模型的泛化能力转移到小模型的一种显而易见的方法是使用由大模型产生的类概率作 ...

  9. python基础(4):用户交互、if判断、while循环、break和continue

    1. 用户交互 使⽤input()函数,可以让我们和计算机互动起来 语法: 内容 = input(提⽰信息) 这⾥可以直接获取到⽤户输入的内容 content = input("你吃了么?& ...

  10. Python【day 16-1】面向对象初识

    1.面向对象思想 1.面向过程 1.概念 按照事物的发展流程,第一步,第二步,第三步,一步步往下 2.优缺点 1.优点 简单,流水线式的 2.缺点 可扩展性差 2.面向对象 1.概念 对象:是属性和动 ...