标签: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类的主函数 我觉得也没人蛋疼的写两个主函数。 |
标签:pre width form family main函数 转化 indent 它的 body
原文地址:http://www.cnblogs.com/memeda21/p/7636243.html