201871010119-帖佼佼《面向对象程序设计(java)》第二周学习总结
阅读原文时间:2023年07月09日阅读:2

项目

内容

这个作业属于哪个课程

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

这个作业的要求在哪里

<作业链接地址>     https://www.cnblogs.com/nwnu-daizh/p/11435127.html

作业学习目标

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

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

      2、标识符可以用作类名,变量名,方法名,数组名以及文件名等。

    3、关键字:Java中被赋予特殊意义的单词。   注意:关键字不做变量名。

    4,注释:在Java语言中,注释的方法有三种。

      (1)//  (2)/*    */ , 在Java中,这种注释不能嵌套。      (3)/**    */。

      (2)在Java语言中,源代码的文件名必须与公共类的名字相同,并用   .java    作为扩展名。而且区分大小写。

      (3)System.out.println();   和   System.out.print(); 其中第一个在输出之后换行,而第二个在输出之后不换行。

    5、数据类型:(Java是一种强类型语言,所以它的每一个变量都要声明一种类型)。

      (1)8中基本的类型:

          ————整数类型:(int:内存占4个字节;    short:内存占2个字节;    long:内存占8个字节;  byte:内存占1个字节)

          ————浮点类型:(float:占四个字节;  double占8个字节)

          ————字符类型:(char:字面量值要用单引号括起来)

          ————布尔类型:(Boolean:其值为:true   或者   false。 布尔值和整数不能相互转换)

      注意:在Java语言中,没有任何无符号型(unsigned)形式的int, short, long,和byte类型。

      转义字符:\b(退格);    \t(制表);    \n(换行);     \r(回车);   \"(双引号);    \'(单引号);    \\(反斜杠)。

    6、变量:在Java中每一种变量属于一种类型。在声明变量时,变量所属的类型在变量的前面。变量名必须是以字母开头并由字母或数字组成的序列。变量名中,所有的字母都是有意义的,并且大小写敏感。

                    不能使用Java中的关键字(保留字)来作为变量名。在一行可以声明一个或多个变量,但是逐一声明每一个变量可以提高程序的可读性。

      变量的初始化:

        一个变量声明后,必须通过赋值语句对它进行明确的初始化。(永远不要使用未初始化的变量)。在Java语言中,可以在代码的任何位置进行变量的声明,但是变量的声明尽可能地在靠近变量第一次使                               用的地方。(在同一作用域内不能声明两个同名的变量)。

    7、常量:在Java中,使用关键字   final来指示常量。关键字final表示这个常量只能被赋值一次,一旦被赋值就不能再改了。在Java中,经常希望某个常量可以在一个类中的多种方法中使用,通常称这些常量为类                                  常量。可以使用关键字    Static  final  声明一个类常量。

    8、运算符:

      (1)各种条件运算符:包括算术运算符、自增运算符与自减运算符、关系运算符、逻辑运算符和位运算符。

      (2)Java提供的特殊运算符:New运算符和Instenceof,前者用来创建对象的运算符,或者用来返回一个布尔值来指出某个对象是否是一个特定类或者是它的子类的一个实例。

      (3)运算符的优先级与结合性:见书44~45.

      (4)数学函数与常量:数学函数包含在Math类中,————幂函数;————三角函数;————指数函数及它的反函数等。

      (5)Java还提供了两种常量:——Math.PI, Math.E.

    9、类型转换:       char

             ↓                

       byte  →  short  →     int  →  long

                           ↓          ↓

                       float  → double

      隐式类型转换:

      (1)如果两个操作数中有一个是double类型的,则另一个会转换成double类型;

      (2)如果两个操作数中有一个是float类型的,则另一个会转换成float类型;

      (3)如果两个操作数中有一个是long类型的,则另一个会转换成long类型;

      (4)两个数都将转换成int类型。

      强制类型转换:

      强制类型转换的语法格式是在圆括号中给出想要转换的类型,后面紧跟带转换的变量名。

      (目标类型 )        变量名

      强制类型转换只是从那个变量计算出一个新的类型的值,并没有改变那个变量,无论是值还是类型都不改变。

     10、字符串

        (1)Java中字符串是Unicode字符的序列,它是组织字符的基本数据结构。

        (2)有内置的字符串类型,在标准Java类库中提供了一个Java预定义类String。在Java中,字符串被当作对象来处理。

        (3)程序中需要用到的字符串有两类:创建之后不会再做修改和变动的不可变字符串String类;

                          创建之后允许再做更改和变化的构建字符串StringBuilder类。

        (4)字符串常量:用双引号定义字符串常量;

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

          (5)String类:

    String类的构造方法:创建String类的一个对象,并对它初始化,需要调用类String的构造方法。

    A:String(): 创建一个空串;

    B:String(String  Value);

    C:String  (char  value []);

    D:String  (char[],  int   startIndex);

    E:String  (byte[],   byte   hibyte);

    F:String  (byte[],  byte  hibyte,  int   startIndex,  int numChars);

    String类的基本方法:   获得字符串的字串;

              串连接(+): 注意,当获取一个字符串和一个非字符串时,后者将会转换成字符串;

              获取字符串的长度:使用String类中的length()方法可以获取一个字符串的长度;

              检测字符串是否相等:可以使用equals方法检测两个字符串是否相等;

                        一定不能使用   “=”   运算符两个字符串是否相等,这个运算符只能确定两个字符串是否放置在同一个位置上。

              字符串检索:

              字符串数字与数值的转化:Java.lang包中的Interger类,Long类,Float类, Double类分别提供了相应的方法来进行字符串与数值间的转换。

              获得对象的字符串表示:所有的类都默认为Java.lang包中Object类的子类或间接子类。Object类中有一种方法获得对象的字符串表示:   toString()。

    String类的API及文档:String类中包含各类字符串处理的50多种方法,使用JDK在线API 文档可以查阅所有标准类及其方法,打开浏览器,指向JDK安装目录下的docs/spi/index.html。

         (6)StringBuilder类字符串;

      StringBuilder类的说明:需多个小段字符串连接创建一个字符串时,每次连接字符串时,都会构建一个新的String类对象。

               eg:

                StringBuilder  builder = new  StringBuilder();     创建一个字符串对象;

                builder.append(ch);                                                   appends  a   singer   character;

                -----Builder.append(str);                                              appends    a    String

      StringBuilder 类的API:

        (1)分配/获取字符串的长度;

        (2)分配/获取字符串的容量;

        (3)字符串的检索和字串;

        (4)字符串的修改;

        (5)字符串类型转换:   toString();

    11、输入输出:

         (1)读取输入:通过控制台进行输入时,需要构建一个Scanner对象,并与“标准输入流”System.in关联。

                 Scanner  in= new   Scanner(System.in);

                Scanner类定义在java.util包中,使用时将包加载进来;

                Scanner类输入时可见的;

             (2)格式化输出:使用System.out.println();将数值输出到控制台。

    12、控制流程:

           Java有5中语句:

          (1)方法调用语句:System.out.println("Hello!World");

          (2)表达式语句:

             (3)复合语句:用    {}    把一些语句括起来就构成了一个语句。

          (4)控制语句:程序控制流程由控制语句给出;if, switch, for, while,do_while.

          (5)package语句和import语句。

   第二部分:实验部分

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

1.  实验目的:

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

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

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

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

3. 实验步骤与内容:

实验1 程序互评

打印九九乘法表代码如下:                                    

(1)

package dier;

public class shiyanerer {

public static void main(String\[\] args) {  
    // TODO Auto-generated method stub  
    for (int i=1; i <= 9; i++)  
    {  
        for(int j=1; j<=i; j++)  
        {  
        System.out.print(i + "\*" + j + "=" + (i\*j) + "\\t");  
        }  
        System.out.println();  
    }  
}

}

  运行结果如下:

方法二代码如下:

package dier;

public class shiyanerer {

public static void main(String\[\] args) {  
    // TODO Auto-generated method stub  
    for (int i=1; i <= 9; i++)  
    {  
        for(int j=1; j<=9; j++)  
        {  
        System.out.print(i + "\*" + j + "=" + (i\*j) + "\\t");  
        }  
        System.out.println();  
    }  
}

}

  运行结果如下:

实验2

程序代码如下:

package dier;

public class shiyaner {

public static void main(String\[\] args) {  
    // TODO Auto-generated method stub  
    String s1="Hello!";      //定义一个String类,s1 ,将字符串“Hello!”赋值给s1;  
    String s2="World";       //定义一个String类,s2 ,将字符串“World”赋值给s1;  
    String s3 = s1 + s2;     //定义一个String类, s3 ,将s1+s2赋值给s3;  
    System.out.println(s3);  //输出s3的值。  
}

}

  运行结果如下:

    

实验3

程序代码如下:

package dier;

public class shiyansan {

public static void main(String\[\] args) {  
    // TODO Auto-generated method stub  
    StringBuilder s1= new StringBuilder("Hello!");   //在字符串构建器StringBuilder中创建一个新的StringBuilder s1;  
    StringBuilder s2= new StringBuilder("World");    //在字符串构建器StringBuilder中创建一个新的StringBuilde s2;  
    StringBuilder s3= new StringBuilder();  
    s3.append(s1);  
    s3.append(s2);        //将s1和s2连接起来赋值给s3;  
    System.out.println(s3);     //输出s3;  
}

}

  运行结果如下:

    

实验4

程序代码如下:

package dier;

public class shiyansi {

public static void main(String\[\] args) {  
    // TODO Auto-generated method stub  
    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 java程序导入

程序代码如下:

import java.util.*;

/**
* This program demonstrates console input.
* @version 1.10 2004-02-10
* @author Cay Horstmann
*/
public class InputTest
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in); //通过控制台进行输入时,需要构建一个Scanner对象,并与“标准输入流”System.in关联。

  // get first input  
  System.out.print("What is your name? ");//输入名字  
  String name = in.nextLine();           //定义一个String类,用来显示计算机读入的字符串“What is your name?”的内容;

  // get second input  
  System.out.print("How old are you? ");    //输入年龄  
  int age = in.nextInt();                  //定义一个整形,用来显示计算机读入的字符串“How old are you?”的内容;

  // display output on console  
  System.out.println("Hello, " + name + ". Next year, you'll be " + (age + 1));  
  //最后显示Hello,加上你输入的名字,再加上.next year, you'll be 在加上输入年龄加一。  

}
}

运行结果如下:

实验6 文件读写程序测试

程序代码如下: 

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。    

}
}

运行结果如下:

实验7 :

(1)Retirement 程序代码如下:

import java.util.*;

/**
* This program demonstrates a while 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.");  

}
}

运行结果如下:

(2)Retirement(2)程序代码如下:

import java.util.*;

/**
* This program demonstrates a do/while 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

程序代码如下:

import java.util.*;

/**
* This program demonstrates a for 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!");  

}
}

  运行结果如下:

4. 实验总结:

  通过实验课老师和助教的指导,自己动手操作,先是跟着老师说的做,然后再改一下,试着摸索其他函数的作用,刚开始感觉更不上老师的节奏,但是在助教的帮助下,慢慢的适应。实验课的学习就是把上课老师说的理论知识实践化,实验和理论结合运用,但是这方面我还很欠缺,理论掌握不透彻,自然实验就比较难做了。所以首先得了解理论知识,然后更好的进行实验课得操作。