Java中字符串和int的混合
我习惯于通过打印日志消息进行调试。我跟踪的变量由String和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
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
检查也不错:)