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

课程作业2

时间:2017-10-07 23:35:44      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:ring   课程   ati   main   进制   es2017   十进制   转化   否则   

1.文件名必须与公有类名一致

置疑:一个Java类文件中真的只能有一个共有类吗?

源代码:

public class Test{

  public static void main(String[] args){
}
public class InnerClass{}
}
经检验这个代码没有错误,截图如下:
技术分享

 

可得结论:一个java源文件中可以写多个类,但其中只能有一个类是“公有的(public)”,这其中不包含内类函数,且源文件名必须与公有类名一致,否则无法编译
 
 
2.main方法
技术分享

Java中的方法用于完成某个任务并返回结果信息,一个Java应用程序可以包含一个或多个方法Java应用程序(Java Application)从 main 方法开始执行

public static void main( String args[] )

main 方法必须严格象上面那样声明       void 表明 main 方法不返回任何结果

源代码:


public class Test
{
public static int main(String[]args)
{
System.out.println("Hello word!")
}
}

验证结果如下:

技术分享

都不能执行,所以不能通过。

 

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

(1)什么是静态方法?

用static 修饰的方法称为类方法或静态方法。类方法是不依赖特定对象的方法,所以可以通过类名去引用该方法。无须创建对象即可使用的方法。
 由于在加载类时,系统就为类中的方法分配了空间,所以在静态方法中可以直接访问本类的静态变量和静态方法,但在静态方法中不能直接访问实例字段和实例方法,也不能使用this关键字和super关键字。

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

static关键字,告知编译器main函数是一个静态函数。也就是说main函数中的代码是存储在静态存储区的,即当定义了类以后这段代码就已经存在了。如果main()方法没有使用static修饰符,那么编译不会出错,但是如果你试图执行该程序将会报错,提示main()方法不存在。因为包含main()的类并没有实例化(即没有这个类的对象),所以其main()方法也不会存。而使用static修饰符则表示该方法是静态的,不需要实例化即可使用。

 

4.变量的作用域(每个变量都有一个“有效”的区域(称为“作用域”),出了这个区域,变量将不再有效。

源代码:


public class Test
{
private static int value=1;
public static void main(String[]args)
{
int value=2;
System.out.println(value);
}
}

技术分享

技术分享

 

Java变量遵循“同名变量的屏蔽原则”

 

 

5. Java中的类型转换

技术分享

技术分享                               技术分享

 

 看着这个图,再查查Java中每个数据类型所占的位数,和表示数值的范围,你能得出什么结论?

int  short long byte 表示整数,其值是精确的,而float double均为浮点型,表示近似值,所以当整型转换成浮点类型的近似值会有精度损失。而ASCLL都是整数,所以char转换成整型不会有精度损失。

 

 

6. 

技术分享

 

这么意外的输出。

使用double类型的数值进行计算, 其结果是不精确的。

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

因为java中十进制与二进制转化时存在问题,double类型的数值占   用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低   位上一定会与实际数据存在误差,简单来说就是我们给出的数值,在   大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需   要无穷多位),而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。

7.

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

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

技术分享

 

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

当"X+Y="在前时,默认的把int型X,Y转化为String型,"X+Y="使编译器认为X,Y是String型的了,System.out.println()本身的参数默认为String型,遇到这种情况默认了转化,产生了如此结果,而第二个就是简单的输出,没有让计算器产生“误解”。

课程作业2

标签:ring   课程   ati   main   进制   es2017   十进制   转化   否则   

原文地址:http://www.cnblogs.com/liurx/p/7636154.html

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