相关疑难解决方法(0)

在Java中使用String.format而不是字符串连接是更好的做法吗?

String.format在Java中使用和字符串连接之间是否存在明显的差异?

我倾向于使用,String.format但偶尔会滑倒并使用concat.我想知道一个人是否比另一个好.

我看到它的方式,String.format给你"格式化"字符串更多的权力; 和连接意味着您不必担心意外地添加额外的%s或丢失一个%s.

String.format 也更短.

哪一个更具可读性取决于你的头部如何工作.

java string string.format concatenation

252
推荐指数
9
解决办法
13万
查看次数

如果性能很重要,我应该使用Java的String.format()吗?

我们必须一直为日志输出构建字符串等等.在JDK版本中,我们学会了何时使用StringBuffer(许多追加,线程安全)和StringBuilder(许多追加,非线程安全).

有什么建议使用String.format()?它是否有效,或者我们是否被迫坚持连接性能很重要的单线?

例如丑陋的旧式,

String s = "What do you get if you multiply " + varSix + " by " + varNine + "?";
Run Code Online (Sandbox Code Playgroud)

与整洁的新风格(可能很慢),

String s = String.format("What do you get if you multiply %d by %d?", varSix, varNine);
Run Code Online (Sandbox Code Playgroud)

注意:我的具体用例是我的代码中的数百个"单行"日志字符串.它们不涉及循环,所以StringBuilder太重量级了.我String.format()特别感兴趣.

java string performance string-formatting micro-optimization

207
推荐指数
8
解决办法
15万
查看次数

理解Java中的$格式字符串

 StringBuilder sb = new StringBuilder();
 // Send all output to the Appendable object sb
 Formatter formatter = new Formatter(sb, Locale.US);

 // Explicit argument indices may be used to re-order output.
 formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")
 // -> " d  c  b  a"
Run Code Online (Sandbox Code Playgroud)

在这种情况下,为什么2附加到$?

java formatter

76
推荐指数
2
解决办法
4万
查看次数

java decimal字符串格式

我需要将十进制值格式化为一个字符串,其中我总是显示至少2位小数,最多4位.

所以例如

"34.49596" would be "34.4959" 
"49.3" would be "49.30"
Run Code Online (Sandbox Code Playgroud)

可以使用String.format命令完成吗?或者在java中有更简单/更好的方法来做到这一点.

java string-formatting

65
推荐指数
3
解决办法
17万
查看次数

为什么String的格式(Object ... args)被定义为静态方法?

我想知道为什么Java 5及以上版本在String类中使用静态方法提供了printf样式的格式化程序,如下所示:

public static String format(String format, Object... args)
Run Code Online (Sandbox Code Playgroud)

代替

public String format(Object... args)
Run Code Online (Sandbox Code Playgroud)

这样我们就可以写出"%02d".format(5)05代替String.format("%02d", 5).

我想如果我可以修改String类,我可以添加:

public String format(Object... args) {
    return format(this, args)
}
Run Code Online (Sandbox Code Playgroud)

得到相同的结果.

我发现在C#中,还使用静态方法而不是实例方法.

我想知道为什么他们决定这样做,但我没有得到解释.实例方法trimsubstring返回一个新的string实例,所以他们应该做同样的事情format.

此外,该DateFormat课程还使用了这个:

public final String format(Date date)
Run Code Online (Sandbox Code Playgroud)

用于格式化日期.因此,如果我们将DateFormat的实例视为格式化程序,则String的实例也可以用作格式化程序.

有任何想法吗?

java string format printf

24
推荐指数
3
解决办法
1万
查看次数

转义java String.format中的格式化字符

这个问题几乎与java的.Net问题相同.

你如何逃避java string.format中的%1 $字符?

我需要这样做的原因是我正在构建一个字符串,以后会有更多信息插入其中.我曾经想过让其中一个args只是"%1 $",但这似乎不是很优雅?

对不起,如果这很明显我的java有点生疏了.

java string string.format

23
推荐指数
1
解决办法
2万
查看次数

System.out.printf和String.format之间的区别

我可以知道java中两者有什么区别?我正在读一本书,它可以使用它来显示字符串.

java

16
推荐指数
2
解决办法
1万
查看次数

你用什么类来制作字符串模板?

您使用哪些类来使字符串占位符起作用?

 String template = "You have %1 tickets for %d",
 Brr object = new Brr(template, {new Integer(1), new Date()});
 object.print();
Run Code Online (Sandbox Code Playgroud)

java string

6
推荐指数
2
解决办法
326
查看次数

缓冲读取器readLine()与空行

我正在使用缓冲读取器从文本文件中一次抓取一行.我也试图使用跟踪整数从文本文件中获取行号.不幸的是BufferedReader正在跳过空行(只有/ n或回车).

有没有更好的方法来解决这个问题?会使用扫描仪吗?

示例代码:

int lineNumber = 0;
while ((s = br.readLine()) != null) {
    this.charSequence.add(s, ++lineNumber);
}
Run Code Online (Sandbox Code Playgroud)

java text file buffered

6
推荐指数
2
解决办法
5万
查看次数

String.format()填充字符串?

我需要用破折号将String填充到一定长度,例如:

cow-----8
cow-----9
cow----10
...
cow---100
Run Code Online (Sandbox Code Playgroud)

字符串的总长度需要为9.前缀"cow"是常量.我正在迭代输入数字.我可以用丑陋的方式做到这一点:

String str = "cow";
for (int i = 0; i < 1000; i++) {
    if (i < 10) {
        str += "-----";
    } 
    else if (i < 100) {
        str += "----";
    }
    else if (i < 1000) {
        str += "---";
    }
    else if (i < 10000) {
        str += "--";
    }
    str += i;
}
Run Code Online (Sandbox Code Playgroud)

我可以用字符串格式更干净地做同样的事吗?

谢谢

java

4
推荐指数
1
解决办法
1万
查看次数

以hh:mm格式显示时间选择器

我必须以hh:mm格式显示时间选择器点击编辑文本.所以我使用了下面的代码.

MainActivity.java:

  e6.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                    // TODO Auto-generated method stub
                    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm");
                    Calendar mcurrentTime = Calendar.getInstance();
                    int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
                    int minute = mcurrentTime.get(Calendar.MINUTE);
                    TimePickerDialog mTimePicker;
                    mTimePicker = new TimePickerDialog(AddFlight.this, new TimePickerDialog.OnTimeSetListener() {
                        @Override
                        public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {
                            e6.setText(selectedHour + ":" + selectedMinute);

                        }
                    }, hour, minute, true);//Yes 24 hour time
                    mTimePicker.setTitle("Select Time");
                    mTimePicker.show();

            }
        });
Run Code Online (Sandbox Code Playgroud)

它运行良好并显示时间选择器.但我的问题是,当我选择时间戳中的04:15时,它显示4:15.它之前不包括0.我需要在hh中显示时间选择器:mm格式.

任何人都可以帮助我.谢谢.

android date timepicker

3
推荐指数
2
解决办法
5662
查看次数