Java中字符串和int的混合

Java中字符串和int的混合,java,Java,我习惯于通过打印日志消息进行调试。我跟踪的变量由String和int组成。 例如,我曾经打印过如下内容: Log.e(TAG, value1+":"+value2+":"+String3+":"+String4+":"+value5); Log.e(TAG, String6+":"+value7); 其中value1等为int,String3等为String变量 现在我的问题是,我是否可以编写一个方法,将任意的变量集合(int、String或其他基本类型)作为参数,并输出日志? 对于Strin

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

Log.e(TAG, value1+":"+value2+":"+String3+":"+String4+":"+value5);
Log.e(TAG, String6+":"+value7);
其中
value1
等为
int
String3
等为
String
变量

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

编辑:
我的最终目标是:我想要一个只接受我想要调试的变量作为参数的方法。(它们可以是任何类型,而不仅仅是String或int…也可以是任何可以转换为String的类型)。因此,这个方法必须为我完成原语->对象的转换。

这不是问题,您可以将
int
转换为
Integer
,这是一个对象

默认情况下,java正在这样做,您可以向接收
对象的方法发送int
它叫

自动转换:

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

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

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

这不是问题,您可以将
int
转换为
Integer
这是一个对象

默认情况下,java正在这样做,您可以向接收
对象的方法发送int
它叫

自动转换:

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

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

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

对原语使用包装类,然后可以对它们调用toString()

e、 g:

将打印

 5

对原语使用包装类,然后可以对它们调用toString()

e、 g:

将打印

 5

使用标准java logger,您可以执行以下操作:

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);

使用标准java logger,您可以执行以下操作:

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);

在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

它同时接受基本体和对象。在原语的情况下,会发生自动装箱,它允许您这样做。

在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

它同时接受基本体和对象。在原语的情况下,会发生自动装箱,并允许您这样做。

?问题是,它们可以是任何基元类型,可以是布尔型或字符型。我不希望每次打印日志时都进行转换,我希望有一个方法可以自动为我进行转换,这样我的方法就可以只获取需要的参数debug@Ivan任何基元类型都将自动装箱到相应的包装器类型中。
boolean
将自动转换为
boolean
。我明白了。。。所以我做错的是将.toString()放在。。。我不应该把它放在我的方法里。谢谢问题是,它们可以是任何基元类型,可以是布尔型或字符型。我不希望每次打印日志时都进行转换,我希望有一个方法可以自动为我进行转换,这样我的方法就可以只获取需要的参数debug@Ivan任何基元类型都将自动装箱到相应的包装器类型中。
boolean
将自动转换为
boolean
。我明白了。。。所以我做错的是将.toString()放在。。。我不应该把它放在我的方法里。谢谢
null
检查也不错:)
null
检查也不错:)