在Java中混合String和int

时间:2014-09-24 14:27:05

标签: java

我习惯通过打印日志消息进行调试。我跟踪的变量由String和int组成。 例如,我曾经打印过类似的东西:

Log.e(TAG, value1+":"+value2+":"+String3+":"+String4+":"+value5);
Log.e(TAG, String6+":"+value7);

其中value1intString3等是String个变量。

现在我的问题是,我可以编写一个方法,将任意变量集合(int,String或其他基本类型)作为参数,并输出Log? 对于String我可以使用method(String... arg),但我不知道如何使用int。 我尝试(Object...)并将.toString()放在任何地方,但int不属于Object ....

编辑: 我的最终目标:我想要一个只接受我想调试的变量作为参数的方法。 (它们可以是任何类型,不仅仅是String或int ...只能转换为字符串的任何类型)。所以这个方法必须为我转换primitive-> Object。

4 个答案:

答案 0 :(得分:2)

这不是问题,您可以将int投射到作为对象的Integer

java默认情况下正在执行此操作,您可以将int发送到接收Object的方法 它被称为AutoBoxing

自动转换:

enter image description here

public static String toS(Object o1, Object o2){
    return o1 + " " + o2;
}

现在你可以向它发送一个整数,它会自动将它转换为整数:

int i = 8;
String combined = toS(i, "hello");

答案 1 :(得分:1)

使用标准的java记录器,您可以:

logger.log(Level.INFO, "{0}:{1}:{2}:{3}:{4}", new Object[]{1, 2, "StringA", "StringB", 3 });

如果您只想解析字符串,可以使用java.text.Messageformat

MessageFormat.format("{0}:{1}:{2}:{3}:{4}", 1, 2, "StringA", "StringB", 3 );

如果您不想使用varargs语法并拥有普通对象数组,您仍然可以使用MessageFormat并写:

Object[] args = new Object[]{ 1, 2, "StringA", "StringB", 3};
MessageFormat.format("{0}:{1}:{2}:{3}:{4}", args);

答案 2 :(得分:1)

在varargs中使用对象类型。对于前

public static void main(String[] args) {
        display(1, "test", 9.5);
    }

    static void display(Object... values) {
        for (Object object : values) {
            System.out.println(" object value " + object.toString());//Log here
        }
    }

将输出打印为

 object value 1
 object value test
 object value 9.5

它既包含原语和对象。如果是原语,则会发生自动装箱,并允许您这样做。

答案 3 :(得分:0)

对原语使用Wrapper类,然后可以在它们上调用toString()。

e.g:

 Integer myInteger = new Integer(5);
 System.out.println(myInteger.toString());

会打印

 5