zoukankan      html  css  js  c++  java
  • 课程作业02

    1.一个Java类文件里边只能有一个公共类。例如

    package test;

    public class Test1 {

    public static void main(String[] args) {

    public  class Inner 

    {

    }

    // TODO 自动生成的方法存根

    }

    }

    这一段代码就是错误的,因为他有两个公共类,若将类Inner前的public删掉程序就不会报错。一个java文件可以写多个类和接口在里面,但必须只能且必须有一个public的类或接口,而且那个public的类或接口必须和文件同名

     

     

     

    2.main()方法的返回值由 void 改为 int ,程序能编译通过吗?能运行吗?

    比如下边的例子:

    package test;

    public class Test1 {

    public static int main(String[] args) {

    // TODO 自动生成的方法存根

    }

    }

    答案是不可以的,若为int,则main里边应该有返回值,而且返回值的类型为int类型

     

     

     

    3.如果源程序为如下所示:

    package test;

    public class Test1 {

    private static int value=-1;

    public static void main(String[] args) {

    int value=2;

    System.out.println(value);

    // TODO 自动生成的方法存根

    }

    }

    他的输出结果为2原因是java中,局部定义的变量能够覆盖全局范围内的变量。在局部使用某个变量的时候JVM会优先找和当前使用位置"近"的变量的的定义!如果在局部定义了和全局变量一样的名字,我们使用的过程中,调用全局变量的话,会使用this关键字辅助。

     

     

     

    4.Java中类型的转换

     

     

    不同的基本类型所占的位数与范围如下:

    Int         32    4         -2,147,483,648 ~ 2,147,483,647
    Short    16    2          -32768 ~ 32678
    long     64     8         -9,223,372,036,854,775,808~+9,223,372,036,854,775,807
    float     32     4        -3,40292347E+38 ~ +3,40292347E+38
    double 64     8        -1.79769313486231576E+308 ~ 1.79769313486231576E+308
    char      16     2         -128~127
    boolean 1     0.125    true/false
    byte      8      1           -128 ~ 127

     

    int转换为float和double是会有精度损失,long类型转化为double类型也会有精度损失的。

     

     

     

    5.为什么double类型的数值进行运算得不到“数学上精确”的结果?

    原因:double类型是双精度浮点数,占用8字节(Byte)即64位(bit),其精度是由32个bit的二进制尾数来确定的,因此准确精度是二进制精度而不是十进制精度,通常可以保证十进制小数点后15位有效精度和第16位的部分精度。double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位),而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。

     

    6.执行以下的代码:

    public class Test {

    public static void main(String[] args) {

    int X=100;

    int Y=200;

    System.out.println("X+Y="+X+Y);

    System.out.println(X+Y+"=X+Y");

       }

    }

    输出的结果为:

     

    原因:第一个式子"X+Y="+X+Y等于两个字符串直接相加;

    第二个式子相当于两个string类型的数值直接相加;

  • 相关阅读:
    沙盒解决方案part1:沙盒解决方案的用途和好处
    session定义使用和丢失问题小结(20120101有更新&&20121026又更)
    普通pc检测维修的一个特例:检测\换板\电源\IDE信道\声卡驱动
    用户sa登录失败,该用户与可信sql server连接无关联
    trycatchfinally(C# 简单学习)
    按钮只能一次提交:ajax页面中调用ascx控件,如何设置ascx中按钮为false
    开始学习:Ajax的全称是:AsynchronousJavaScript+XML
    ajax学习的第一次亲密接触.(虽然还有一点模糊)
    .net2.0 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的
    创建可重复使用的控件ascx-一页只能有一个服务器端 Form 标记?
  • 原文地址:https://www.cnblogs.com/ljysy/p/7623949.html
Copyright © 2011-2022 走看看