java相关问题_java课堂相关问题

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

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

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

1b44fd56a35b79658999fc88c4dab07a.png

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

19a3983bccc29b83236e5ed8e26e5c7a.png

f6b040866a405bb5a47fa89c96371d87.png

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

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

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

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

4、变量的作用域

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

821479f7a0ddb95a267b3b32f0467dd2.png

5、java中类型的转换

00e1a17c4622a4b33dbfcac2013b428d.png

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

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");

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

e0a6affd00e41a57d7764dd55d7c9b88.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值