0

当我尝试创建新的 int 对象时:

int g= new int(); 

netbeans 告诉我:

Incompatible types
required: int
found: int[]
'[' expected
illegal start of expresion.

我想简单地创建新的 int。

4

6 回答 6

5

对于原始数据类型,您没有构造函数:

int g = 5;

或者只是说

int g; //declaration

但请记住,还有一些类包含每个原始数据类型的更多功能。它的数据类型名称用第一个大写字母写成:

Integer g = new Integer(5); //but it needs the parameter

例如,您有一个从字符串创建整数的函数:

Integer.parseInt("5");

但是声明部分对它们的需求并不大。

于 2013-07-31T06:10:54.057 回答
4

原语没有构造函数,因为它们不是对象。它们被简单地声明和初始化,如下所示:

int x = num;

如果你想/需要使用一个对象,你可以使用包装Integer

Integer x = new Integer(num);

考虑以下关于自动拆箱和拆箱的示例:

int x_unboxed = new Integer(num); // unboxing

Integer x_boxed = 5;  // autoboxing

拆箱是从IntegerWrapperintprimitive
自动装箱是从intprimitiveIntegerWrapper

基本上 a是一个围绕aWrapper的不可变对象。在这种情况下,包含一个.primitiveIntegerprivate final int

您可能需要使用包装器,例如,如果您想使用不能保存原语的List 。

于 2013-07-31T06:14:05.920 回答
1

Java中有两种类型的整数。

原语

int g = 1;

对象

Integer gObject = new Integer(1);

Java 中还有一个重要的东西叫做自动装箱。这是原语和对象之间的隐式转换。

自动装箱

gObject = g; // equivalent to Integer.valueOf(g)
g = gObject; // equivalent to gObject.intValue()
于 2013-07-31T06:13:12.677 回答
0

您只需要“新建”一个类或数组即可创建类 /array 的特定实例。'int' 是一种原始数据类型,因此您可以直接使用它:

int g;

g = 10;

System.out.println("g is: " + g);

您需要查阅一些介绍性的 Java 教程或书籍,了解基本数据类型并更详细地了解类/对象。

相反,如果您想创建一个由十个整数组成的数组,您将拥有

int[] g = new int[10];

这就是为什么您会收到令人困惑的错误消息。

祝你好运!

于 2013-07-31T06:13:15.300 回答
0

您正在尝试通过键入来创建一个整数对象

    int g=new int()

这在 Java 中是错误的,因为您不能从原始类型创建对象。Java 是 99% 的面向对象语言。由于它没有摆脱诸如 int、float 等原始类型,因此您不能称之为纯粹的面向对象。

你可以做的很简单:

    int g;
    Integer g1=new Integer(g);

这将满足您对整数对象的需求。Integer 是一个包装器类,它包装 int g,并从中创建一个对象。请记住,只有在创建类的对象时才能使用new,并且 Integer 是类, int 不是类。

祝你好运!

于 2013-07-31T06:41:18.550 回答
-1

这是 Java 中一个不幸的设计决定,原始类型(int是其中之一)与对象的处理方式不同。您不能用于new创建int; 例如,您可以像在 C 中一样对待它们 - 只需分配一个值,无需构造任何东西:

int foo = 0;

请注意,您不能使用之前未显式初始化的局部变量。

有包装类,例如Integer,简单地包装原始类型以允许它们在需要实际对象或类(例如泛型)的上下文中使用,但在您的情况下似乎没有必要。

于 2013-07-31T06:11:44.367 回答