2021-09-15 JAVA实验一学习总结

1、一个简单的Java Application程序

(记性不好,所以废话以及对于别人来说容易的东西很多,仅供参考)

首先贴代码:(有//的地方为题目要求添加代码)

Hello.java
public class Hello
{     
     public static void main (String args[ ])
     { 
         System.out.println("你好,很高兴学习Java"); //命令行窗口输出"你好,很高兴学习Java"
         A a=new A();
         a.fA();
     }
}
class A
{
      void fA()
      {
       System.out.println("We are students");  //命令行窗口输出"We are students"
      }
}

初次接触Java,有一些小发现:

(1)*.java的文件可以直接用记事本打开。

在没有使用eclipse写Java代码时,我们首先使用的是记事本来写代码,然后再将文件后缀名txt改成java就可以了。原本我以为记事本只能打开txt文件,后来发现也可以直接打开java文件进行直接的更改,这就减少了改来改去文件后缀名带来的麻烦。

(2)Java的主函数可以放在定义的类中运行。

与C语言不同,Java的main函数可以定义在类中运行,且有main函数的类为主类。查了一下是说在Java中最小的单位可以理解为类,也就是说所有的东西都要写在类里面而不再独立写一个函数。这更能体现面向对象的思想。

(3)定义类class的相关问题。

Java源文件中不一定要有public类,有且只能有一个public类,允许多个class的声明。

class定义的类只具有包访问权限,该类不能被其他包访问。

如果一个类声明的时候使用了public class进行了声明,则类名称必须与文件名称完全一致。

被public修饰的类可以被其他包访问。如果库名是com,就可以通过import com.Hello;或import com.*;来访问Hello。

(4)关于错误:编码GBK的不可映射字符。

第一种方法,保存文件的时候将编码UTF-8改成ANSI。

 第二种方法,在cmd中运行时输入javac -encoding utf-8 文件名.java。

(5)控制台目录转换的方法。

如图:

 (6)控制台编译以及运行java的命令。

编译:javac  *.java

编译成功会在目标文件生成类的*.class文件。

运行:java  *(*代表文件名)

(7)两个错误原因。

Command not Found

File not Found

答:可能没有将目录成功转化到存放目标文件的文件夹。

运行程序。

      d:\Experiment\java  Hello

这一步可能会遇到下列错误提示,请说明错误原因是什么?

Exception in thread ”main” java.lang.NoClassFoundError

答:可能为类名错误或类的路径错误。

(8)实验报告。

实验内容

回答

用命令javac hello.java替换命令javac Hello.java,会发生什么现象?

没有输出

用命令java hello替换命令java Hello,会发生什么现象?

错误: 找不到或无法加载主类 hello

编译器怎样提示丢失大括号的错误

Hello.java:15: 错误: 解析时已到达文件结尾

      }

       ^

1 个错误

编译器怎样提示语句丢失分号的错误

Hello.java:14: 错误: 需要';'

       System.out.println("We are students")

                                            ^

1 个错误

如果在汉语输入法状态下输入语句分号,程序编译时将出现错误,编译器怎样提示这一错误

Hello.java:14: 错误: 编码GBK的不可映射字符

       System.out.println("We are students")锛?

                                             ^

Hello.java:14: 错误: 需要';'

       System.out.println("We are students")锛?

                                            ^

2 个错误

编译器怎样提示将System写成system这一错误

Hello.java:5: 错误: 程序包system不存在

         system.out.println("你好,很高兴学习Java");

               ^

1 个错误

编译器怎样提示将String写成string这一错误

Hello.java:3: 错误: 找不到符号

     public static void main (string args[ ])

                              ^

  符号:   类 string

  位置: 类 Hello

1 个错误

用Main替代main,重新编译源代码,会发生什么现象?再重新运行会出现什么现象?

没有输出

没有区别

(9)运行成功效果。


 2、一个简单的Java Applet程序

(java11以后的版本不支持applet)

首先贴代码:

FirstApplet.java
import java.awt.*;
import java.applet.*; 
import javax.swing.*;
public class FirstApplet extends JApplet
{  
    public void paint(Graphics g)
    {
          g.setColor(Color.blue);   
          g.drawString("这是一个Java Applet 程序",10,30);//在Java Applet中绘制一行文字:“这是一个Java Applet 程序”。
          g.setColor(Color.red);
          g.setFont(new Font("宋体",Font.BOLD,36));
          g.drawString("我改变了字体",10,100);//在Java Applet中绘制一行文字:“我改变了字体”。
    
    }
}

再写一些我的小发现:

(1)Java类的继承。

(本部分有参考博客java继承(extends关键字)_王富贵的博客-CSDN博客(侵权删))

格式:class 子类 extends 父类{}

和C++一样,继承是从已有的类中派生出新类,新的类能吸收已有类的属性和方法,并能扩展新的属性和方法。继承某些类时记得import相应的包。

类继承的限制:

一个子类只能继承一个父类(单继承局限)。

在一个子类继承的时候,实际上会继承父类中所有的属性和方法,但是要注意的是,对于所有的非私有操作(没有private)属于显示继承(可以直接利用对象操作),而所有的私有操作属于隐式继承(间接完成)。

在继承关系中,如果要实例化子类的对象,会默认的先调用父类的构造,为父类之中的属性初始化,之后再调用子类构造,为子类之中的属性初始化,即:默认情况下,子类会找到父类之中的无参构造方法。

(2)Graphics类的使用。

这里贴两个我觉得写的比较好且完整的博客。(侵权删)

Java的Graphics类进行绘图的方法详解 - donghongbo - 博客园 (cnblogs.com)

Java Graphics类的绘图方法_小明的专栏-CSDN博客

然后是一些总结:

1.画直线    drawLine(int x1,int y1,int x2, int y2)

2.画矩形边框    drawRect(int x,int y,int width,int height)

3.画椭圆边框    drawOval(int x,int y,int width,int height)

4.填充矩形        fillRect(int x,int y,int width,int height)

5.填充椭圆        fillOval(int x,int y,int width,int height)

6.画图片            drawImage(Image img,int x,int y,……)

7.画字符串        drawString(String str,int x,int y)

8.设置画笔的字体    setFont(Font font)

9.设置画笔的颜色    setColor(Color c)

(其中(x,y)坐标指的是左下角坐标,整数类型x和y是在图形窗口上保持x和y位置的变量。)

(3)此处html文件的作用。

编写一个html文件FirstApplet.html,保存到与FirstApplet.java相同的位置,文件内容如下:

<Applet code=FirstApplet.class width=300 height=300>

</Applet>

html文件的作用是控制窗口的大小。

(4)实验报告。

实验内容

回答

程序中的主类如果不用public修饰,编译能通过吗?

可以

程序中的主类如果不用public修饰,程序能正确运行吗?

不能

程序将paint()方法误写成Paint(),编译能通过吗?

可以

程序将paint()方法误写成Paint(),运行时能看到相关的输出信息吗?

不能

程序中如果没有”import java.awt.*;”,编译时会出现哪些错误提示?

FirstApplet.java:6: 错误: 找不到符号

    public void paint(Graphics g)

                      ^

  符号:   类 Graphics

  位置: 类 FirstApplet

FirstApplet.java:8: 错误: 找不到符号

          g.setColor(Color.blue);

                     ^

  符号:   变量 Color

  位置: 类 FirstApplet

FirstApplet.java:10: 错误: 找不到符号

          g.setColor(Color.red);

                     ^

  符号:   变量 Color

  位置: 类 FirstApplet

FirstApplet.java:11: 错误: 找不到符号

          g.setFont(new Font("宋体",Font.BOLD,36));

                        ^

  符号:   类 Font

  位置: 类 FirstApplet

FirstApplet.java:11: 错误: 找不到符号

          g.setFont(new Font("宋体",Font.BOLD,36));

                                   ^

  符号:   变量 Font

  位置: 类 FirstApplet

5 个错误

(5)运行成功效果。


3、从键盘输入数据编写一个Java Application程序

首先贴代码:

InputFloat.java
import java.util.*;
public class InputFloat
{  
    public static void main(String args[])
    {
        double a,b,c;
        Scanner reader=new Scanner(System.in);//创建一个Scanner类的对象reader     
        System.out.println("从键盘输入一个浮点数");
        a=reader.nextDouble();// reader调用nextDouble()方法读取用户从键盘输入的数据,并赋值给a
        b=a*a;
        c=a*a*a;
        System.out.println(String.format("%.2f", b));// 输出b
        System.out.println(String.format("%.2f", c));// 输出c 
    }
}

然后也是照例写我的发现:

(1)Java的输入输出。

System.out表示标准输出设备,用System.in表示标准输入设备,默认情况下,输出设备是控制台,输入设备是键盘。

输入:

①使用java.util.Scanner类创建对象读取来自System.in的输入,语句如下:

Scanner scanner=new Scanner(System.in)

使用时必须引入包:import java.util.*;

Scanner对象包括以下读取输入的方法:

  1. next():读取一个字符串。
  2. nextByte():读取byte类型的整数
  3. nextShort():读取short类型的整数
  4. nextInt():读取int类型的整数
  5. nextLong():读取long类型的整数
  6. nextFloat():读取float类型的整数
  7. nextDouble():读取double类型的整数

②使用System.in.read()方法来输入,语句如下:

System.in.read();

使用时必须引入包:import java.io.*;

System.in从标注输入获取数据,数据类型为InputStream。通过read()方法返回ASCII码,若返回值为-1,说明没有读取到任何字符结束工作。

使用时需要添加抛出声明或用try/catch包围。

try {
            a=System.in.read();
        }catch (Exception e){
            System.out.println("错误!!");
        }

③使用DataInputStream方法来输入,语句如下:

DataInputStream din = new DataInputStream(System.in);

使用时也需要添加抛出声明或用try/catch包围。

try {
            x = Double.parseDouble(din.readLine());
        }catch (Exception e){
            System.out.println("错误!!");
        }

Double.parseDouble()是把括号里面内容变成double类型的。

Integer.parseInt()是把括号里面内容变成int类型的。

输出:

System.out.println();

是最常用的输出语句,它会把括号里的内容转换成字符串输出到输出窗口(控制台),并且换行,当输出的是一个基本数据类型时,会自动转换成字符串,如果输出的是一个对象,会自动调用对象的toString()方法,将返回值输出到控制台。

System.out.print();

与第一个很相似,区别就是上一个输出后会换行,而这个命令输出后并不换行。

System.out.printf();

这个方法延续了C语言的输出方式,通过格式化文本和参数列表输出。

(参考博客:(侵权删)Java的常用输入输出语句_学到的就要教人 赚到的就要给人-CSDN博客_java输出语句

java的四种输入方法,你会几种?_小雨的博客-CSDN博客_java输入

(2)运行成功效果。


 4、判断三角形是否有效小程序

首先贴代码:

import java.util.*;
public class Triangle
{     
     public static void main (String args[ ])
     { 
         Scanner scanner=new Scanner(System.in);
         int a;
         int b;
         int c;
         System.out.println("请输入三角形的第一条边长:");
         a=scanner.nextInt();
         System.out.println("请输入三角形的第二条边长:");
         b=scanner.nextInt();
         System.out.println("请输入三角形的第三条边长:");
         c=scanner.nextInt();
         if((a+b>c)&&(a+c>b)&&(b+c>a)){
              System.out.println(a+"、"+b+"、"+c+"是否可以组成三角形?"+"true");
         }
         else{
              System.out.println(a+"、"+b+"、"+c+"是否可以组成三角形?"+"false");   
         }
     }
}

运行成功实例:

题目自带运行实例如下,不太明白为什么题目运行出来的页面是白色且字体为绿色的,还有输出文字后没有换行,不知道是不是我多虑了,暂且作为一个疑问希望日后学习可以解决。

(我明白了!这是eclipse的运行界面,是我多虑了哈哈)

 

 本次记录到此为止啦~感谢阅读~

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值