如何将对象转换为int型

我如何在java中将对象转换为int型?

798583 次浏览

必须将其强制转换为Integer (int的包装类)。然后,您可以使用Integer的intValue()方法来获取内部整型。

假设对象是一个Integer对象,那么你可以这样做:

int i = ((Integer) obj).intValue();

如果对象不是Integer对象,则必须检测类型并根据其类型进行转换。

你不能。int不是Object

Integer是一个Object,但我怀疑这是你的意思。

不可能做到。int不是一个对象,它是一个基本类型。你可以将它转换为Integer,然后获取int。

 Integer i = (Integer) o; // throws ClassCastException if o.getClass() != Integer.class


int num = i; //Java 1.5 or higher

如果你的意思是将String类型转换为int类型,使用Integer.valueOf("123")

你不能将大多数其他对象强制转换为int型,因为它们没有int值。例如,XmlDocument没有int值。

如果你确定这个对象是Integer:

int i = (Integer) object;

或者,从Java 7开始,你可以等价地写:

int i = (int) object;

注意,如果你的对象不是Integer,它会抛出ClassCastException;如果你的对象是null,它会抛出NullPointerException

通过这种方式,您假设您的对象是一个整数(包装的整型),并将其拆箱为整型。

int是一个原语,所以它不能存储为Object,唯一的方法是将int考虑为Integer,然后存储为Object


如果你的对象是String,那么你可以使用Integer.valueOf()方法将它转换成一个简单的int类型:

int i = Integer.valueOf((String) object);

如果你的对象不是一个包含整数的String,它可以抛出一个NumberFormatException


资源:

关于同一话题:

如果Object最初被实例化为Integer,则可以使用强制转换操作符(Subtype)将其向下转换为int

Object object = new Integer(10);
int i = (Integer) object;

注意,这只在你至少使用Java 1.5使用自动装箱功能时有效,否则你必须将i声明为Integer,然后对它调用intValue()

但如果它最初根本不是作为Integer创建的,那么你就不能这样向下转换。它将导致消息中带有原始类名的ClassCastException。如果由String#valueOf()获得的对象的toString()表示表示语法上有效的整数(例如,仅为数字,必要时前面带有负号),则可以使用Integer#valueOf()new Integer()

Object object = "10";
int i = Integer.valueOf(String.valueOf(object));

参见:

答:

int i = ( Integer ) yourObject;

如果你的对象已经是一个整数,它将顺利运行。即:

Object yourObject = 1;
//  cast here

Object yourObject = new Integer(1);
//  cast here

等。

如果你的对象是其他类型的对象,你需要先将它(如果可能的话)转换为int类型:

String s = "1";
Object yourObject = Integer.parseInt(s);
//  cast here

String s = "1";
Object yourObject = Integer.valueOf( s );
//  cast here
int i = (Integer) object; //Type is Integer.


int i = Integer.parseInt((String)object); //Type is String.
@Deprecated
public static int toInt(Object obj)
{
if (obj instanceof String)
{
return Integer.parseInt((String) obj);
} else if (obj instanceof Number)
{
return ((Number) obj).intValue();
} else
{
String toString = obj.toString();
if (toString.matches("-?\d+"))
{
return Integer.parseInt(toString);
}
throw new IllegalArgumentException("This Object doesn't represent an int");
}
}

正如你所看到的,这不是一个非常有效的方法。你只需要确定你所拥有的对象类型。然后以正确的方式将其转换为int型。

我猜你想知道为什么C或c++允许像操作数字一样操作对象指针,但在Java中不能以同样的方式操作对象引用。

Java中的对象引用不像C或c++中的指针……指针基本上是整数,你可以像操作其他int一样操作它们。引用是一种更具体的抽象,不能像指针那样被操作。

首先使用instanceof关键字进行检查。如果为真,则转换它。

我在处理来自GSON的数据时使用一行程序:

int i = object != null ? Double.valueOf(object.toString()).intValue() : 0;
int[] getAdminIDList(String tableName, String attributeName, int value) throws SQLException {
ArrayList list = null;
Statement statement = conn.createStatement();
ResultSet result = statement.executeQuery("SELECT admin_id FROM " + tableName + " WHERE " + attributeName + "='" + value + "'");
while (result.next()) {
list.add(result.getInt(1));
}
statement.close();
int id[] = new int[list.size()];
for (int i = 0; i < id.length; i++) {
try {
id[i] = ((Integer) list.get(i)).intValue();
} catch(NullPointerException ne) {
} catch(ClassCastException ch) {}
}
return id;
}
// enter code here

这段代码说明了为什么ArrayList很重要,以及为什么要使用它。简单地从Object转换int。可能会有帮助。

参考代码:

public class sample
{
public static void main(String[] args)
{
Object obj=new Object();
int a=10,b=0;
obj=a;
b=(int)obj;


System.out.println("Object="+obj+"\nB="+b);
}
}

对象变量;hastaId

Object hastaId = session.getAttribute("hastaID");

将对象强制转换为int类型hastaID

int hastaID=Integer.parseInt(String.valueOf(hastaId));

场景一:简单案例

如果它保证你的对象是Integer,这是一个简单的方法:

int x = (Integer)yourObject;

场景2:任何数字对象

在Java中,IntegerLongBigInteger等都实现了Number接口,该接口有一个名为intValue的方法。任何其他具有数值方面的自定义类型也应该实现Number(例如:Age implements Number)。所以你可以:

int x = ((Number)yourObject).intValue();

场景3:解析数值文本

当你从命令行(或文本字段等)接受用户输入时,你会得到一个String。在这种情况下,你可以使用Integer.parseInt(String string):

String input = someBuffer.readLine();
int x = Integer.parseInt(input);

如果你得到的输入是Object,你可以使用(String)input,或者,如果它可以有其他文本类型,input.toString():

int x = Integer.parseInt(input.toString());

场景4:身份哈希

在Java中没有指针。然而,ObjecthashCode()有一个类似指针的默认实现,可以通过System.identityHashCode(Object o)直接获得。所以你可以:

int x = System.identityHashCode(yourObject);

注意,这是一个真正的指针值。对象的内存地址可以由JVM更改,同时保留它们的标识散列。另外,两个活动对象可以具有相同的标识哈希。

你也可以使用object.hashCode(),但它可以是特定于类型的。

场景5:唯一索引

在同样的情况下,每个对象都需要一个唯一的索引,比如在数据库表中自动递增ID值(不像标识哈希是不唯一的)。一个简单的示例实现:

class ObjectIndexer {
    

private int index = 0;
    

private Map<Object, Integer> map = new WeakHashMap<>();
//                               or:
//                                 new WeakIdentityHashMap<>();
    

public int indexFor(Object object) {
if (map.containsKey(object)) {
return map.get(object);
} else {
index++;
map.put(object, index);
return index;
}
}
    

}

用法:

ObjectIndexer indexer = new ObjectIndexer();
int x = indexer.indexFor(yourObject);    // 1
int y = indexer.indexFor(new Object());  // 2
int z = indexer.indexFor(yourObject);    // 1

场景6:enum成员

在Java中,enum成员不是整数,而是全功能对象(例如,与C/ c++不同)。可能永远不需要将枚举对象转换为int,但是Java会自动将索引号关联到每个枚举成员。这个索引可以通过Enum.ordinal()访问,例如:

enum Foo { BAR, BAZ, QUX }


// ...


Object baz = Foo.BAZ;
int index = ((Enum)baz).ordinal(); // 1

enter image description here

so divide1=me.getValue()/2;


int divide1 = (Integer) me.getValue()/2;

最后,找到了适合您的规范的最佳实现。

public int tellMyNumber(Object any) {
return 42;
}

我们可以使用下面的代码在Java中转换一个对象为Integer。

int value = Integer.parseInt(object.toString());

如果你想把字符串对象转换成整数… 你可以简单地传递为:

 int id = Integer.valueOf((String) object_name);

希望这对你有帮助:-)