JAVA语法基础——动手动脑

一、仔细阅读示例: EnumTest.java,运行它,分析运行结果? 你能得到什么结论?

       

       枚举类型是引用类型!

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

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

二、原码、反码和补码

       (一)原码:二进制的定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

       (二)反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

       (三)补码:正数的补码与其原码相同,负数的补码是在其反码末位加1;

      例:  

数字 原码 反码 补码
-1 10000001 11111110 11111111
2 00000010 00000010 00000010

      以2+(-1)=1为例,1的原码为00000001,反码为00000001,补码为00000001。由此得出Java的数是由补码来表示的。

三、java变量遵循“同名变量的屏蔽原则”

       每一个变量都有一个“有效”的区域,区域外变量将不再有效.java遵循同名变量的屏蔽原则。

       

四、Java中的类型转换

       java中有8种基本数据类型:byte、int、short、long、boolean、char、float、double

      对应的类为:Byte、Int、Short、Long、Boolean、Charecter、Float、Double

      逻辑型:boolean
      文本型:char
      整数型:byte、short、int、long
      浮点型:float、double
      byte:    1字节 -128~127
      short:   2字节 -2^15~2^15-1
      int :      4字节 -2^31~2^31-1
      long:    8字节 -2^63~2^63-1
      boolean:1字节 true false(java中不能以0或非0代替)
      float:    4字节 -3.403E38~3.403E38
      double:8字节 -1.798E308~- 4.9E324
      char:    2字节  ’u0000‘~‘ ’uffff ‘(16进制的,换算过来即0~65535)(1字节等于8位)
      java中的基本数据类型转换分为自动类型转换和强制类型转换。自动数据类型转换是由优先级别低的数据赋值给优先级别高的变量。强制类型转换是由优先级别高的数据赋值给优先级别低的变量。强制类型转换通常都会有存储精度的损失。在整数之间进行类型转换时,数值不发生改变;而将整数类型,特别是比较大的整数类型转换成小数类型时,由于存储方式不同,有可能存在精度上的损失。

五、请运行以下代码(TestDouble.java),分析运行结果? 你能得到什么结论?

       

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

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

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

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

       

       JAVA输出语句中的“+”有两种意思:一是运算中的加法,另一是连接符 。其中第一中X与Y中间的+被当作了连接符而二中为加法。

原文地址:https://www.cnblogs.com/zql-42/p/11553661.html