• java课堂相关问题


    1、问题:一个java类文件中真的只能有一个公有类吗?

    答:一个Java类文件可以有多个类但只能有一个public类。

    如以下程序有两个public类运行时会出错。

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

    如上截图所示将void改为int后程序将无法运行。

    3问题:什么静态方法?为什么java规定作为程序入口点的main()方法静态的?

    答:Java静态方法是使用公共内存空间的,就是说所有对象都可以引用,而且在没有创建对象时也可以利用类使用该方法。

    静态成员函数在执行前必须先构造并实例化该函数所在的类。如果允许非静态的main,那么main函数所在的类必须先进行实例化

    4、变量的作用域

    如截图所示java变量遵循“同名变量屏蔽原则”

    5、java中类型的转换

    int,short\,byte,long是整数类型,其值是精确的。而double,float是浮点型其值表示的是近似值。所以intfloatdouble会有精度损失,longdouble会有精度损失。在ASCII中都是整数所以charint无精度损失。

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

    double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。
    比如要用4bit来表示小数3.26,从高到低位依次对应2的1,0,-1,-2次幂,根据最上面的分析,应当在二进制数11.01(对应十进制的3.25)和11.10(对应十进制的3.5)之间选择。
    简单来说就是我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位),而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。

     7、在构建BigDecimal对象时应使用字符串而不是double数值,否则,仍有可能引发计算精度问题。(为什么会这样呢?)

    double并不能准确的代表BigDecimal 16位有效数以上的数字在使用BigDecimal时创建对象。而BigDecimal所创建的对象不能使用+-*/等传统的算术运算符直接对其对象进行数学运算,必须调用相对应的(f1.add(f2))等方法。 因为方法中的参数必须是BigDecimal的对象,所以定义时应为字符串。

     8、

    以下代码的输出结果是什么?

    int X=100;

    int Y=200;

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

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

    为什么会有这样的输出结果?

    从运行结果可以看出第一个输出是以字符串的形式处理的,而第二个输出则是以整数相加处理。当X+Y=”在前时,编译器默认的将XY转化为String类型,System.out.println()默认参数是String类型。

  • 相关阅读:
    scala学习笔记1(表达式)
    TDD实践感悟
    Day 21:Docker 入门教程
    人类创造未来的思想先锋:这些 TED 演示深深震撼着我们
    Android开源项目第二篇——工具库篇
    提交表单
    MVC html.beginform & ajax.beginform
    MVC中的传参并在View中获取
    HTTP 教程
    ID和Name
  • 原文地址:https://www.cnblogs.com/xxlya/p/7635473.html
Copyright © 2020-2023  润新知