【问题标题】:Java Integer class [Using eclipse to view source code]Java Integer类【使用eclipse查看源码】
【发布时间】:2014-05-29 03:42:49
【问题描述】:

我只是在查看 Integer 类的源代码,我遇到了以下几行:

public static final int MAX_VALUE = Integer.MAX_VALUE;
public static final int MIN_VALUE = Integer.MIN_VALUE;

这些是在 Integer 类中声明 MAX_VALUE 或 MIN_VALUE 的唯一地方,因此似乎这些值是分配给自己的......

但是当我尝试打印这些值时,我得到:

2147483647 -> 0x7fffffff
-2147483648 -> 0x80000000

所以它仍然会产生正确的值,但它分配在哪里?我在eclipse上使用最新的java(8)

我在网上找不到代码,所以我将相关代码粘贴在这里:

package java.lang;

import sun.misc.VM;

public final class Integer
  extends Number
  implements Comparable<Integer>
{
  public static final int MIN_VALUE = Integer.MIN_VALUE;
  public static final int MAX_VALUE = Integer.MAX_VALUE;
  ...
}

解决这个问题后,eclipse好像修改了一些jar文件的源代码。最佳观看方式

【问题讨论】:

  • 这不是我看到的。我在安装 Java 8 时下载了源代码,我正在编辑器中查看它(而不是在 Eclipse 中).... 更新:我在 Eclipse 中也看不到它。
  • Eclipse 是否可能无法访问实际源代码,因此试图从其他信息“重建”源代码?这或许可以解释为什么您发布的“相关代码”sn-p 中没有任何 cmets。
  • 也许可以,但我现在正在使用文本编辑器查看实际源代码。我会发布我发现的内容
  • @ajb,你是对的,我现在在文本编辑器上查看它,它实际上显示了值。我想知道为什么日食不显示这一点。使用文本编辑器查看时,源代码中也没有import sun.misc.VM;。我想知道日食实际上在做什么......这很奇怪
  • 也许stackoverflow.com/questions/426084/… 的一些答案可能会有所帮助。

标签: java integer max min


【解决方案1】:

您确定您正在查看正确的源代码,而不仅仅是 IDE 中的已编译类。我有以下内容:

/**
 * A constant holding the minimum value an {@code int} can
 * have, -2<sup>31</sup>.
 */
public static final int   MIN_VALUE = 0x80000000;

/**
 * A constant holding the maximum value an {@code int} can
 * have, 2<sup>31</sup>-1.
 */
public static final int   MAX_VALUE = 0x7fffffff;

Grep 代码同意: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Integer.java

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-18
  • 2018-10-02
  • 2019-04-07
  • 2011-10-13
  • 2016-09-18
  • 1970-01-01
  • 2019-06-16
相关资源
最近更新 更多