9.13

发布时间 2023-09-13 16:12:50作者: 徐星凯

enum 标识名

{枚举项};

例:

enum weekday

{mon,tues,wed,thur,fri,sat,sun};

enum weekday day;day=mon;实质上与int day;day=0;相同。

 1 package test;
 2 
 3 public class EnumTest {
 4 
 5     public static void main(String[] args) {
 6         Size s=Size.SMALL;
 7         Size t=Size.LARGE;
 8         //s和t引用同一个对象?
 9         System.out.println(s==t);  //
10         //是原始数据类型吗?
11         System.out.println(s.getClass().isPrimitive());
12         //从字符串中转换
13         Size u=Size.valueOf("SMALL");
14         System.out.println(s==u);  //true
15         //列出它的所有值
16         for(Size value:Size.values()){
17             System.out.println(value);
18         }
19     }
20 
21 }
22  enum Size{SMALL,MEDIUM,LARGE};

 isPrimitive()用来判断是否为Java中最基本的数据类型;

枚举类型的本质还是int,将相应的字符串转换成枚举类型后可以相等

枚举类型不是Java的基本类型

最后的for循环时增强佛如循环,可以输出枚举类中的所有成员值

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

原码:在数值前直接加一符号位的表示法,对于8位二进制来说:

[+7]原= 0 0000111 [-7]原= 1 0000111

反码:正数的反码与原码相同;负数的反码,符号位为“1”,数值部分按位取反。

[+7]反= 0 0000111 [-7]反= 1 1111000

补码:正数的补码和原码相同;负数的补码则是符号位为“1”,数值部分按位取反后再在末位(最低位)加1,也就是“反码+1”。

[+7]补= 0 0000111 [-7]补= 1 1111001

package daily0;

public class daily1 {
    public static void main(String[] args){
        int a=1;
        int b=-1;
        int sum=a+b;
        System.out.println(sum);
    }
}

 若是原码:a:000001,b:100001结果为-2;不对

若是反码:a:000001,b:111110结果为-0;不对

若是补码:a:000001,b:111111结果为0;java用的是补码

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

同名变量的屏蔽原则:

package daily0;

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

 同名变量屏蔽遵循就近原则

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 一个字节是8位;

int转double没有精度损失;

位数小的类型转为位数大的类型没有精度损失,位数大的类型转为位数小的类型会产生精度损失;

int类型有32位有效,float类型有1个符号位,8个指数位,23位是有效的,

double类型有1个符号位,11个指数位,53位有效,long类型是64位有效;