Java检查int的第一个数字是否为0

Java检查int的第一个数字是否为0,java,if-statement,integer,Java,If Statement,Integer,所以问题很简单。 如何在java中检查int的第一位是否为0 假设我有: int y = 0123; int n = 123; 现在我需要一个if语句,它将为y返回true,为n返回false。您的问题非常奇怪,原因之一是:int值不能以0开头。但如果将值存储在字符串中,则可以像下面这样轻松地检查: public static void main(String[] args) { String y = "0123"; String n = "123"; System.

所以问题很简单。 如何在java中检查
int
的第一位是否为
0

假设我有:

int y = 0123;
int n = 123;

现在我需要一个if语句,它将为
y
返回true,为
n
返回false。您的问题非常奇怪,原因之一是:int值不能以0开头。但如果将值存储在字符串中,则可以像下面这样轻松地检查:

public static void main(String[] args) {
    String y = "0123";
    String n = "123";

    System.out.println(startByZero(y));
    System.out.println(startByZero(n));
}

public static boolean startByZero(String value) {
    return value.startsWith("0");
}
输出:

true
false
编辑: 与Oleksandr建议一样,您也可以使用:

public static boolean startByZero(String value) {
    return value.charAt(0) == '0';
}
这个解决方案比第一个更有效。(但我个人认为它的可读性也比较差)

y = 0123
将被视为八进制
但是

 n = 123
是一个十进制基数

现在当你这么做的时候

如果(y==n)

数字将始终基于十进制基数进行比较

您必须根据您的要求进行从八进制到十进制的转换,或者从八进制到十进制的转换

您还可以使用@Valentin推荐的
Strings

String.format(“%01d”,number)
用于长度为1的零填充。
比如0123

阅读:

这似乎与主题无关,但基于OP的评论:


我之所以需要它,是因为我在处理自制的约会。如果我有一个日期“2018年4月3日”,我想把它打印成3。4.2018年,开始时没有0。
洛姆姆普


如果您不想重新发明轮子,您应该使用java时间API来解析和格式化日期:

LocalDate date = LocalDate.parse("03.04.2018", DateTimeFormatter.ofPattern("MM.dd.yyyy"));
System.out.println(date.format(DateTimeFormatter.ofPattern("M.d.yyyy")));
2018年4月3日


那是不可能的。0在编译时被删除。在运行时,这些值完全相同,因此无法进行检查。如果您使用
String
s来存储这些值,这是可能的。也许您还可以告诉我们为什么您认为前导的非重要零对您很重要。从数学上讲,这不重要。@f1sh实际上,在这种情况下,在int前面加上“0”会将其转换为八进制值,因此它们在所有情况下都不相同(包括这一种情况,在0前面加上0的那一种会有83的十进制值,所以你可以在一定程度上分辨出来。)但我不确定你要的是这个,除此之外,在运行时不可能检测到这一点。我之所以需要它,是因为我正在处理自制的日期。如果我有一个日期“2018年4月3日”,我想把它打印成3。4.2018年,开始时没有0。但是您如何存储日期?int
0
呢?是否需要返回true或false;)