Java 如何定义unix权限常量(读、写、执行)

Java 如何定义unix权限常量(读、写、执行),java,permissions,hex,octal,binary-operators,Java,Permissions,Hex,Octal,Binary Operators,我想定义这些常量,并将它们用于不同的操作,以生成正确的权限 将其定义为: public static final int READ = 4; public static final int WRITE = 2; public static final int EXECUTE = 1; 给我预期的正确结果,如读|写|执行或写|执行 将它们定义为 public static final int READ = 0x4; public static final int WRITE = 0x2; pub

我想定义这些常量,并将它们用于不同的操作,以生成正确的权限

将其定义为:

public static final int READ = 4;
public static final int WRITE = 2;
public static final int EXECUTE = 1;
给我预期的正确结果,如读|写|执行或写|执行

将它们定义为

public static final int READ = 0x4;
public static final int WRITE = 0x2;
public static final int EXECUTE = 0x1;

有什么好处吗?

因为它们在十六进制或十进制中是等价的,这只会增加其他开发人员的可读性。功能上是一样的

尽管如此,如果您是为了可读性而这样做的,考虑到底层系统,octal会更好:

public static final int READ = 04;
public static final int WRITE = 02;
public static final int EXECUTE = 01;
或者更明显的是:

public static final int READ = 1<<2;
public static final int WRITE = 1<<1;
public static final int EXECUTE = 1;

public static final int READ=1An int是一个int是一个int。0x4仍然会给出一个值为4的int,唯一的区别是您用十六进制而不是原始整数指定该值。这可能会使它更明显地是一个位掩码,尽管这肯定是有争议的。事实上,由于它们在底层系统中是八位字节,所以将它们设为八位字节实际上更有意义。选择让你最快乐的东西:)