201871010104陈园园 《面向对象程序设计(java)》第二周学习总结 陈园园

                                                                                                         201871010104-陈园园 《面向对象程序设计(java)》第二周学习总结

项目 内容
这个作业属于哪个课程 ttps://www.cnblogs.com/nwnu-daizh/
这个作业要求在哪里 https://www.cnblogs.com/lily-2018/p/11441372.html
作业学习目标
  1. 适应老师教学方式,能按照自主学习要求完成本周理论知识学习;
  2. 掌握Java Application程序结构;
  3. 掌握Java语言的数据类型与变量;
  4. 学会使用Java运算符构造各类表达式;
  5. 掌握Java Application输入输出技术;
  6. 掌握Java流程控制技术(分支、循环);(重点)
  7. 掌握Math类、String类的用法。(难点)

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

1、标识符

     Java中标识符是由字母、下划线、美元符号和数字组成,且第一个符号不能为数字。标识符可用作类名、对象名、变量名、方法名、数组名、文件名。

2、关键字

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

3、注释

    java中注释有三种方式:

    1)//   注释内容由//一直到此行结束。

    2)/*和*/   定义一个注释块

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

4、数据类型

    整数类型(int、short、long、byte

   浮点类型(float、double)

   字符类型(char)

   布尔类型(boolean

   java中没有unsigned类型。在java中,布尔值和整数不能相互转换

5、字符集:java采用unicode字符编码集,该编码集16位,含有65536个字符。Unicode(统一码,万国码)是一个编码规范,为解决传统字符编码方案局限产生。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

6、转义字符

7、变量

     在java中,每一个变量属于一种类型。在声明变量时,变量所属的类型位于变量名之前。一行可以声明多个变量,逐一声明每一个变量可以提高程序的可读性。

     一个变量声明后,必须通过赋值语句对它进行明确的初始化。在java中,可以在代码的任何位置进行变量的声明。变量的声明尽可能地靠近变量第一次使用的地方,这是一种良好的程序编写风格。

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

8、常量

    在java中,使用关键字final来表示常量。习惯上常量名都用大写。关键字final表示只能对变量赋一次值,其值一旦设定,便不能改。使用关键字static final声明一个类常量。

9、各种运算符

   算是运算符、自增运算符域自减运算符、关系运算符、逻辑运算符、位运算符、运算符的优先级与结合性。

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

 10、类、域、方法和全局变量、函数

 1)类是C中没有的,Java中类定义如下:

 [修饰符] class 类名[extends 父类名][implements 接口名]

其中修饰符可以为以下一个或多个访问修饰符:

 abstract:抽象类。

 final:最终类。

 public:公共类。

 2)域(成员变量)和全局变量类比:

 Java中域的定义如下:

 [修饰符] 类型 成员变量名;

 修饰符可选以下一个或多个关键字:

 public:公共成员。

 protected:本类或同一个包的其他类以及其它包该类的子类可访问。

 private:私有成员。

 final:常量,确定后不能改变。

 static:静态变量。

 transient:临时变量。

 volatile:备份变量。

 各类型成员变量默认初始化为:

整型变量:0

浮点型变量:0.0

布尔型变量:false

字符型变量:空格

类变量:null

C中全局变量定义同一般变量:

[存储类别] 数据类型 变量表列;

其中存储类别可选:

auto:自动变量,当不申明存储类别时隐式默认该值。

static:静态变量。

register:寄存器变量。

extern:外部变量。

3)方法和函数类比:

Java中方法的定义如下:

[修饰符] 返回类型 方法名([参数表列])

修饰符可选以下一个或多个:

public:公共方法。

protected:本类或同一个包的其他类以及其它包该类的子类可访问。

private:私有方法。

abstract:抽象方法,只有方法头没有方法体。

static:静态方法。

存储类别可选:

extern:外部函数。

static:静态函数。

11、数学函数与常量

    数学函数包含在Math类中(幂函数、三角函数。指数函数以及它的反函数)等。

12、数组

Java中数组定义有两种方式:

数据类型数组名[];或 数据类型 []数组名;

定义和初始化可同时进行,如:int []a = {0,1,2,3,4,5,6,7,8,9};

注意Java中数组如果在定义时没有进行初始化,在进行初始化的时候需要先分配内存,即:

数组名 = new 数据类型[常量表达式];

也可在定义同时进行内存分配:

数据类型数组名[] = new 数据类型[常量表达式];

C和Java都不支持变长数组,引用的时候都是 数组名[下标]。区别是:Java的下标范围为0~数组长度-1,不在该范围会抛出数组下标越界异常,而C有效范围也是0~数组长度-1,但下标超出此界不会报错。

13、类、域、方法和全局变量、函数

 1)类是C中没有的,Java中类定义如下:

 [修饰符] class 类名[extends 父类名][implements 接口名]

其中修饰符可以为以下一个或多个访问修饰符:

 abstract:抽象类。

 final:最终类。

 public:公共类。

 2)域(成员变量)和全局变量类比:

 Java中域的定义如下:

 [修饰符] 类型 成员变量名;

 修饰符可选以下一个或多个关键字:

 public:公共成员。

 protected:本类或同一个包的其他类以及其它包该类的子类可访问。

 private:私有成员。

 final:常量,确定后不能改变。

 static:静态变量。

 transient:临时变量。

 volatile:备份变量。

 各类型成员变量默认初始化为:

整型变量:0

浮点型变量:0.0

布尔型变量:false

字符型变量:空格

类变量:null

C中全局变量定义同一般变量:

[存储类别] 数据类型 变量表列;

其中存储类别可选:

auto:自动变量,当不申明存储类别时隐式默认该值。

static:静态变量。

register:寄存器变量。

extern:外部变量。

第二部分:实验部分

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

1.  实验目的:

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

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

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

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

3. 实验步骤与内容:

实验1 java风格九九乘法表程序互评。

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

String  s1="Hello!";

String s2="World";

String s3=s1+s2;

代码如下:

package cyy;
public class cl {
	public static void main(String[] args) {
		String  s1="Hello!";
		String s2="World";
		String s3=s1+s2;
		s3=s2.concat(s1);
		System.out.println(s3);
	}

}

 

运结结果如下:

 

 

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

代码如下:

package cyy;
public class cl {
	public static void main(String[] args) {
		StringBuilder s1=new StringBuilder("Hello!");
		StringBuilder s2=new StringBuilder("World");
		StringBuilder builder=new StringBuilder();
		builder.append(s1);
		builder.append(s2);
		System.out.println(builder);
	}
}

 

运行结果如下:

 

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

运行结果如下:

实验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控制台输入方法。

实验6 文件读写程序测试

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

2)myfile.txt内容如下

 

实验7  

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

3-3实例

代码如下:

import java.util.*;
 
/**
 * This program demonstrates a <code>while</code> loop.
 * @version 1.20 2004-02-10
 * @author Cay Horstmann
 */
public class Retirement
{
   public static void main(String[] args)
   {
      // read inputs
      Scanner in = new Scanner(System.in);   //通过控制台进行输入时,需要构建一个Scanner对象,并与“标准输入流”System.in关联。
 
      System.out.print("How much money do you need to retire? "); 
      double goal = in.nextDouble();//输入"How much money do you need to retire? "的内容;
 
      System.out.print("How much money will you contribute every year? ");
      double payment = in.nextDouble();//输入"How much money will you contribute every year? "的内容;
 
      System.out.print("Interest rate in %: ");
      double interestRate = in.nextDouble();//输入"Interest rate in %: "的内容;
 
      double balance = 0; //定义双精度型 balance,并进行初始化;
      int years = 0;      //定义整型years,并进行初始化;
 
      // update account balance while goal isn't reached
      while (balance < goal)                   //while循环
      {
         // add this year's payment and interest
         balance += payment;                   //balance=balance + payment;
         double interest = balance * interestRate / 100;
         balance += interest;
         years++;
      }
 
      System.out.println("You can retire in " + years + " years.");
   }
}

  运行结果如下:

 3-4实例

代码如下:

import java.util.*;
 
/**
 * This program demonstrates a <code>do/while</code> loop.
 * @version 1.20 2004-02-10
 * @author Cay Horstmann
 */
public class Retirement2
{
   public static void main(String[] args)
   {
      Scanner in = new Scanner(System.in);   //通过控制台进行输入时,需要构建一个Scanner对象,并与“标准输入流”System.in关联。
 
      System.out.print("How much money will you contribute every year? ");
      double payment = in.nextDouble();       //输入"How much money will you contribute every year? "的内容;
 
      System.out.print("Interest rate in %: ");
      double interestRate = in.nextDouble();  //输入"Interest rate in %: "的内容;
 
      double balance = 0;
      int year = 0;
 
      String input;
 
      // update account balance while user isn't ready to retire
      do                                    //do-while循环
      {
         // add this year's payment and interest
         balance += payment;                 //balance=balance+payment;
         double interest = balance * interestRate / 100;
         balance += interest;
 
         year++;
 
         // print current balance
         System.out.printf("After year %d, your balance is %,.2f%n", year, balance);
 
         // ask if ready to retire and get input
         System.out.print("Ready to retire? (Y/N) ");
         input = in.next();
      }
      while (input.equals("N"));  //循环满足的条件,当输入“Y”的时候结束循环语句;
   }
}

运行结果如下:

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

代码如下:

import java.util.*;
 
/**
 * This program demonstrates a <code>for</code> loop.
 * @version 1.20 2004-02-10
 * @author Cay Horstmann
 */
public class LotteryOdds
{
   public static void main(String[] args)
   {
      Scanner in = new Scanner(System.in);
 
      System.out.print("How many numbers do you need to draw? ");
      int k = in.nextInt();   //输入"How many numbers do you need to draw? "的内容;
 
      System.out.print("What is the highest number you can draw? ");
      int n = in.nextInt();  //输入"What is the highest number you can draw? "的内容;
 
      /*
       * compute binomial coefficient n*(n-1)*(n-2)*...*(n-k+1)/(1*2*3*...*k)
       */
 
      int lotteryOdds = 1;
      for (int i = 1; i <= k; i++)    //for循环;
         lotteryOdds = lotteryOdds * (n - i + 1) / i;
 
      System.out.println("Your odds are 1 in " + lotteryOdds + ". Good luck!");
   }
}

  

运行结果如下:

 四.实验总结

  本周的实验主要是在c语言的基础之上,对java作了学习,通过将两者作对比将java的基础知识加以巩固与学习,此外,还通过实例中的代码慢慢地走进java,慢慢理解java中的各种数学算法,虽然看着不太懂。但是我相信以后可能会慢慢得到升华,努力为以后的学习打下一个基础。

原文地址:https://www.cnblogs.com/chanyeol1127/p/11483986.html