在调用构造函数时声明并初始化int,错误

时间:2013-07-31 06:10:00

标签: java int

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

int g= new int(); 
netbeans告诉我:

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

我想简单地创建新的int。

6 个答案:

答案 0 :(得分:5)

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

int g = 5;

或者只是说

int g; //declaration

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

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

例如,您可以使用函数从字符串中创建整数:

Integer.parseInt("5");

但声明部分并没有太多需要它们。

答案 1 :(得分:4)

原语没有构造函数,因为它们不是对象。简单地声明和初始化它们是这样的:

int x = num;

如果您想/需要使用对象,可以使用包装器Integer

Integer x = new Integer(num);

auto-unboxing and unboxing上考虑以下示例:

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

Integer x_boxed = 5;  // autoboxing

取消装箱IntegerWrapper升级到intprimitive自动装箱intprimitive升级到IntegerWrapper

基本上Wrapper是一个不可变对象,围绕primitive包裹。在这种情况下,Integer包含private final int

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

答案 2 :(得分:1)

Java中有两种类型的内容。

<强>基元

int g = 1;

对象

Integer gObject = new Integer(1);

Java中还有一个重要的事情叫做 autoboxing 。它是基元和对象之间的隐式转换。

<强>自动装箱

gObject = g; // equivalent to Integer.valueOf(g)
g = gObject; // equivalent to gObject.intValue()

答案 3 :(得分:0)

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

int g;

g = 10;

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

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

如果您想要创建一个包含十个整数的数组,那么您将拥有

int[] g = new int[10];

这就是为什么你会收到你看到的令人困惑的错误信息。

祝你好运!

答案 4 :(得分:0)

您正在尝试通过键入

来创建整数对象
    int g=new int()

这在Java中是错误的,因为您无法使用基本类型创建对象。 Java是99%面向对象的语言。因为它没有摆脱诸如int,float等原始类型,所以你不能调用纯粹的面向对象。

你可以做的只是:

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

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

祝你好运!

答案 5 :(得分:-1)

在Java中,这是一个不幸的设计决策,原始类型(int就是其中之一)与对象的处理方式不同。您无法使用new创建int;你就像在C中那样对待它们 - 例如 - 只需赋值,不需要构造任何东西:

int foo = 0;

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

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