码迷,mamicode.com
首页 > 编程语言 > 详细

02-JAVA语法基础

时间:2016-10-08 01:43:10      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

【动手动脑】

仔细阅读示例:

public class EnumTest {

public static void main(String[] args) {
Size s=Size.SMALL;
Size t=Size.LARGE;
//s和t引用同一个对象?
System.out.println(s==t); //
//是原始数据类型吗?
System.out.println(s.getClass().isPrimitive());
//从字符串中转换
Size u=Size.valueOf("SMALL");//给u赋值
System.out.println(s==u); //true
//列出它的所有值
for(Size value:Size.values()){
System.out.println(value);
}
}

}
enum Size{SMALL,MEDIUM,LARGE};运行它,分析运行结果。你能得到什么结论?你掌握了枚举类型的基本用法了吗?

答:结果为false  false  true SMALL MEDIUM LARGE。

1、s和t引用的不是同一个对象,返回的为fasle。     

2、原始数据类型有8种,byte(字节) short(短整型) int(整形) long(长整型) float(浮点型) double(双精度) 64 char(字符串) boolean(布尔型)所s.getClass().isPrimitive()会返回fasle;因为这个是enum type,s和u的值都为SMALL,所以返回true。

3、enum Size{SMALL,MEDIUM,LARGE}是使用一个名为Size的enum类,其中元素有SMALL,MEDIUM,LARGE可看成其中类的对象。

结论:

1、枚举类型是引用类型

2、枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。

3、可以使用“==”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,“==”和equals()方法执行的结果是等价的。

枚举的基本用法:

1、for(Size value:Size.values()){
            System.out.println(value);

     }对枚举进行遍历,并且找出最大的。

2、Size s=Size.SMALL 从字串转换为枚举

3、System.out.println(s==u)判断s与u是否相同

4、System.out.println()

System.out.println(s); //运行结果:SMALL(枚举直接提供了toString的方法)

System.out.println(s.name());//运行结果:SMALL(打印名字)

System.out.println(s.ordinal());///得到枚举在序列中的位置

System.out.println(s.getClass());//得到枚举类

System.out.println(s.getDeclaringClass());//返回本类的申明处

【动手实验】

请运行以下代码(TestDouble.java)

技术分享

你看到了什么样的输出,意外吗?为什么double类型的数值进行运算得不到“数学上精确”的结果?

请通过互联网查找资料,或者是阅读相关计算机教材,解决这个问题。 提示: 这个问题,与浮点数在计算机内部的表示方法有关系。可以使用这个知识在搜索引擎中查找相关资料

答:输出结果为

0.05 + 0.01 = 0.060000000000000005
1.0 - 0.42 = 0.5800000000000001
4.015 * 100 = 401.49999999999994
123.3 / 100 = 1.2329999999999999

使用double类型的数值进行运算,是不准确的。原因涉及到二进制与十进制的转换问题。N进制可以理解为:数值×基数的幂,例如我们熟悉的十进制数123.4=1×10²+2×10+3×(10的0次幂)+4×(10的-1次幂);其它进制的也是同理,例如二进制数11.01=1×2+1×(2的0次幂)+0+1×(2的-2次幂)=十进制的3.25。double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。

【动手动脑】

 

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

int X=100;

int Y=200;

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

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

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

答:结果为

X+Y=100200
300=X+Y

原因:如果string字符串后面是+和变量,会自动把变量转换成string类型,则加号起连接作用,然后把两个字符串连接成一个新的字符串输出;如果先有变量的加减运算再有字符串,那么会从左到右先计算变量的加减,然后再与后面的string结合成一个新的字符串。第一个是拼接,而第二个是加法。

 

 

 

02-JAVA语法基础

标签:

原文地址:http://www.cnblogs.com/610553824lyx/p/5936979.html

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