当我将这些int var链接为字符串时,为什么会添加int var?

时间:2015-10-27 08:21:48

标签: java android

我希望生成基于文件名的日期,我认为字符串名称将返回20151027_161053.mp4。

实际上它返回2051_161053.mp4,似乎年,月,日都加了2051 = 2015 + 10 + 27-1,但似乎没有添加161053。

我的代码有什么问题?谢谢!

    Calendar c = Calendar.getInstance();

    int year=c.get(Calendar.YEAR);
    int month=c.get(Calendar.MONTH);
    int day=c.get(Calendar.DAY_OF_MONTH);
    int hour = c.get(Calendar.HOUR_OF_DAY);
    int minute = c.get(Calendar.MINUTE);
    int sencond=c.get(Calendar.SECOND);

    String name;
    name=year+month+day+"_"+hour+minute+sencond+".mp4";

6 个答案:

答案 0 :(得分:5)

使用SimpleDateFormat以您需要的格式检索名称。

SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd_hhmmss", Locale.US)
String name = f.format(c.getTime());

您还可以阅读有关java的运算符优先级的here

答案 1 :(得分:2)

首先,您添加年,月和日,然后通过附加"_"将其强制转换为String,然后追加小时,分钟和秒将导致将它们转换为String。

答案 2 :(得分:2)

它被添加因为int + int = int;所以你需要使它成为int + String + int,即= String 试试这个:

Calendar c = Calendar.getInstance();

    int year=c.get(Calendar.YEAR);
    int month=c.get(Calendar.MONTH);
    int day=c.get(Calendar.DAY_OF_MONTH);
    int hour = c.get(Calendar.HOUR_OF_DAY);
    int minute = c.get(Calendar.MINUTE);
    int sencond=c.get(Calendar.SECOND);

    String name;
    name=year+""+month+""+day+"_"+hour+""+minute+""+sencond+".mp4";

答案 3 :(得分:1)

您正在使用+上的int操作,并带有以下声明:

year+month+day+"_"+hour+minute+sencond+".mp4";

它等同于此,因为您首先添加整数,然后仅在" _" Java将其转换为String

((int) (year+month+day)) + "_" + hour + minute + sencond + ".mp4";

首先将您的int投放到String或使用String.append()。有很多方法可以写这个:)

编辑:或者如上所述,使用DateFormat更清洁。

答案 4 :(得分:1)

尝试

"a"

从左到右评估Java表达式。因此,对于您的旧陈述,它将添加((年+月)+日)。之后,它会将总和转换为字符串广告附加name = "" + year+month+day+"_"+hour+minute+sencond+".mp4"; 。现在你为所有这些整数(小时,分钟和秒)添加一个字符串,因此它们将被隐含地转换为字符串!

如果在此语句的开头添加"_",则添加到其中的每个整数都将转换为字符串并附加!

答案 5 :(得分:0)

您必须使用{ "user_id": "masha@meeshka.com", "password": "mashakawa", "user_profile": { "name": "Masha", "city": "New York", "email": "maasha@kawa.com", "age": 20 }, "user_settings": { "phone_number": "+91898342123" } } 代替String。根据{{​​3}}

  

+ Additive运算符(也用于字符串连接)

int用于连接+。否则用于添加。因此,将String转换为ìnt将解决问题

String

修改

您还可以使用String year=c.get(Calendar.YEAR) + ""; String month=c.get(Calendar.MONTH) + ""; String day=c.get(Calendar.DAY_OF_MONTH) + ""; String hour = c.get(Calendar.HOUR_OF_DAY) + ""; String minute = c.get(Calendar.MINUTE) + ""; String sencond=c.get(Calendar.SECOND) + ""; String name = year + month + day + "_" + hour + minute + sencond + ".mp4";

StringBuilder