码迷,mamicode.com
首页 > 其他好文 > 详细

建民课后作业2

时间:2017-10-08 00:14:48      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:pre   width   form   family   main函数   转化   indent   它的   body   

以下代码的输出结果是什么?
  int X=100;
  int Y=200;
  System.out.println("X+Y="+X+Y);
  System.out.println(X+Y+"=X+Y");
 为什么会有这样的输出结果?

自己实验了一下网上也没相关的例子 这是自动类型转化不管是int+String,还是String+int都自动转化为String类型

效率有点低,第一个输出结果就是前面的字符串+100的整数转化为字符串形式的X+Y=100,然后这个字符串又加上int型的自动转化为字符串类型的输出结果为X+Y=100200;

第二个 先计算x+y的值算出得数为300然后加上字符串的类型,最后为字符串类型的300=X+Y;你懂得哈哈!

 

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

比如下边的例子:

package test;

 

public class Test1 {

 

public static int main(String[] args) {

}

 

}

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

4.Java中类型的转换

 

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

Int         32    4         -2,147,483,648 ~ 2,147,483,647Short    16    2          -32768 ~ 32678long     64     8         -9,223,372,036,854,775,808~+9,223,372,036,854,775,807float     32     4        -3,40292347E+38 ~ +3,40292347E+38double 64     8        -1.79769313486231576E+308 ~ 1.79769313486231576E+308char      16     2         -128~127boolean 1     0.125    true/falsebyte      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 类名 出现第二个就会报错 ,但是如果写到两个文件里面必须写public 否则无法访问

7 一个java文件里面能有俩个主函数吗?

答案是肯定的可以的, 一个java文件中只能有一个public修饰的类,每个类中只能有一个main方法,所以一个java文件中可以有多个main方法。

 

class MainDemo {         public static void main(String[] args)//new String[]         {                 String[] arr = {"hah","hhe","heihei","xixi","hiahia"};

 

                MainTest.main(arr);         } }

 

class MainTest {         public static void main(String[] args)         {                 for(int x=0; x<args.length; x++)                         System.out.println(args[x]);         } }

这段代码可以运行

的确是两个主函数,原因是当你对源文件进行编译之后就会按这两个类产生两个class文件,且这两个class文件因为都有各自的main函数所以都可以独立运行。在此程序中当你运行MainDemo类时,它的主函数会调用MainTest类的主函数

我觉得也没人蛋疼的写两个主函数。

 

 

 

建民课后作业2

标签:pre   width   form   family   main函数   转化   indent   它的   body   

原文地址:http://www.cnblogs.com/memeda21/p/7636243.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!