如何将一个对象转换为一个int在java中?
我怎样才能把一个对象在Java中的int?
如果你确定这个对象是一个Integer
:
int i = (Integer) object;
或者,从Java 7开始,您可以等效地编写:
int i = (int) object;
要小心,如果你的对象不是一个Integer
,它可以抛出一个ClassCastException
如果你的对象为null
,它可以抛出一个NullPointerException
ClassCastException
。
这样你就可以假定你的Object是一个Integer(包装的int),你可以将它解包到一个int中。
int
是一个基元,所以它不能被存储为一个Object
,唯一的方法是将int
视为一个Integer
然后将其作为Object
存储起来。
如果你的对象是一个String
,那么你可以使用Integer.valueOf()
方法将它转换成一个简单的int:
int i = Integer.valueOf((String) object);
如果你的对象实际上不是一个带整数的String
作为内容,它可以抛出一个NumberFormatException
。
资源:
- Oracle.com – 自动装箱
- Oracle.com – 基本数据types
在同一主题上:
- Java:自动装箱和铸造有什么区别?
- 自动装箱:所以我可以写:Integer i = 0; 而不是:Integer i = new Integer(0);
- 将对象转换为原始的int
假设对象是一个Integer
对象,那么你可以这样做:
int i =((Integer)obj).intValue();
如果对象不是Integer
对象,则必须检测该types并根据其types进行转换。
@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"); } }
正如你所看到的,这不是一个非常有效的方法。 你只需要确定你有什么样的对象。 然后将其转换为正确的方式。
情况1:简单情况
如果保证你的对象是一个Integer
,这是简单的方法:
int x = (Integer)yourObject;
情景2:任何数字对象
在Java Integer
, Long
, BigInteger
等中都实现了Number
接口,它有一个名为intValue
的方法。 任何其他具有数字方面的自定义types也应实现Number
(例如: Age implements Number
)。 所以你可以:
int x = ((Number)yourObject).intValue();
场景3:parsing数字文本
当你接受来自命令行(或文本字段等)的用户input时,你会得到它作为一个String
。 在这种情况下,你可以使用Integer.parseInt(String string)
:
String input = someBuffer.readLine(); int x = Integer.parseInt(input);
如果以Object
获得input,则可以使用(String)input
,或者如果可以使用其他文本types,则使用input.toString()
:
int x = Integer.parseInt(input.toString());
场景4:身份哈希
在Java中没有指针。 但是Object
有一个hashCode()
的类似指针的默认实现,它可以通过System.identityHashCode(Object o)
直接获得。 所以你可以:
int x = System.identityHashCode(yourObject);
请注意,这不是一个真正的指针值。 对象的内存地址可以由JVM在其身份散列保持不变的情况下进行更改。 另外,两个活动对象可以具有相同的身份散列。
你也可以使用object.hashCode()
,但它可以是types特定的。
情景5:唯一索引
在相同的情况下,每个对象都需要一个唯一的索引,例如在数据库表中自动增加ID值(与不唯一的身份哈希不同)。 这是一个简单的示例实现:
class ObjectIndexer { private int index = 0; private Map<Object, Integer> map = new WeakHashMap<>(); 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
你必须将其转换为Integer(int的包装类)。 然后可以使用Integer的intValue()方法来获取内部int。
回答:
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
从GSON处理数据时,我使用一行代码:
int i = object != null ? Double.valueOf(object.toString()).intValue() : 0;
如果Object
最初被实例化为Integer
,则可以使用cast操作符(Subtype)
将其向下转换为int
。
Object object = new Integer(10); int i = (Integer) object;
请注意,这只适用于至less使用具有自动装箱function的 Java 1.5的情况,否则您必须声明为Integer
,然后调用intValue()
。
但是,如果它最初不是作为一个Integer
创build的,那么你不能像这样低调。 这将导致ClassCastException
与消息中的原始类名称。 如果通过String#valueOf()
获得的对象的toString()
表示forms表示一个语法上有效的整数(例如数字,如果必要的话前面带有减号),那么可以使用Integer#valueOf()
或new Integer()
为了这。
Object object = "10"; int i = Integer.valueOf(String.valueOf(object));
也可以看看:
- inheritance和铸造教程
int i = (Integer) object; //Type is Integer. int i = Integer.parseInt((String)object); //Type is String.
无法完成。 int
不是一个对象,它是一个原始types。 你可以把它转换成Integer,然后得到int。
Integer i = (Integer) o; // throws ClassCastException if o.getClass() != Integer.class int num = i; //Java 1.5 or higher
你不能。 一个int
不是一个Object
。
Integer
是一个Object
,但我怀疑这就是你的意思。
如果你的意思是将一个string转换为int,使用Integer.valueOf("123")
。
你不能把大多数其他对象转换为int,因为它们不会有一个int值。 例如一个XmlDocument没有int值。
我想你想知道为什么C或C ++可以让你像对待一个数字一样操作一个对象指针,但是你不能用同样的方法操作Java中的对象引用。
Java中的对象引用不像C或C ++中的指针…指针基本上是整数,您可以像处理其他任何int一样操纵它们。 引用是故意更具体的抽象,不能用指针的方式操纵。
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); } }
对于示例对象variables; hastaId
Object hastaId = session.getAttribute(“hastaID”);
示例将一个对象转换为int, hastaID
int hastaID = Integer.parseInt(String.valueOf(hastaId));
首先检查instanceof关键字。 如果是真的,那就施放它。