当前位置: 代码迷 >> Java相关 >> JAVA里,String的format和‘+’连接符的区别
  详细解决方案

JAVA里,String的format和‘+’连接符的区别

热度:79   发布时间:2016-04-22 21:04:47.0
求助:JAVA里,String的format和‘+’连接符的区别。

java里,给 String 赋值,代码如下:

方法一:
String ss1="";
ss1.format("abc");

方法二:
String ss2="";
ss2 += "abc";

这两个串里面存的值完全不一样,方法一里,存的不知道什么东西。
我怎么把 ss1 的串,转存成类似于 ss2 的串?


------解决方案--------------------
String.format是一个转换函数,方法一也不能算作赋值,可以理解为作格式化输出。
比如
    String str=null;
    str=String.format("Hi,%s", "飞龙");          // 格式化字符串
    System.out.println(str);                             // 输出字符串变量str的内容
    System.out.printf("字母a的大写是:%c %n", 'A');
    System.out.printf("3>7的结果是:%b %n", 3>7);
你可以去看看API。
------解决方案--------------------
ss1 = ss1.format("abc");
format属于String的静态方法 是有返回值的,并不会直接改变原字符串的值
 public static String format(String format, Object ... args) {
return new Formatter().format(format, args).toString();
    }
------解决方案--------------------
format只是把该字符串按照制定规则进行格式化,不涉及到转码
format内部只是实现了一个国际化的转码对象locale
比如以下
Date date=new Date();                                                                             // 创建日期对象
    String str=String.format(Locale.US,"英文月份简称:%tc",date);      // 格式化日期字符串
    System.out.println(str);  
    str=String.format(Locale.CHINA,"中文月份简称:%tc",date);      // 格式化日期字符串
    System.out.println(str); 

需要转码请用new String(str.getBytes(),"gbk");
------解决方案--------------------
引用:
String.format是一个转换函数,方法一也不能算作赋值,可以理解为作格式化输出。
比如
    String str=null;
    str=String.format("Hi,%s", "飞龙");          // 格式化字符串
    System.out.println(str);                             // 输出字符串变量str的内容
    System.out.printf("字母a的大写是:%c %n", 'A');
    System.out.printf("3>7的结果是:%b %n", 3>7);
你可以去看看API。
 去看一下源码 或者api解释吧~~
------解决方案--------------------
引用:
Quote: 引用:

这个论坛,太让我失望了。

那我只能说:你牛。

典型的伸手党,直接看源码或者api比在这提问快多了。
------解决方案--------------------
String ss1="";
ss1.format("abc");
你这样写那么第二行毫无作用,因为它不会改变ss1的值,而是通过返回值来返回"abc",所以ss1永远就是空字符串。
另外format是一个静态方法,ss1.format这样的用法是不好的,正确的用法是String.format。
所以你要这么写
String ss1 = String.format("abc");

关于String的内部存储方法,我可以告诉你Java只有存储Unicode码这一种方式,所有Java字符都是Unicode字符。

最后说下,你的问题也没讲得太清,所以有些人可能误解了你的问题,但是你问个问题这么急躁,别人没懂你的问题就说这里太失望,我只想说别以为你学了一点C就很牛逼,要牛逼你去C/C++板块牛去,对于Java你连基础知识都不清楚还这个态度,别人回答你的问题就已经很尊重你了。

  相关解决方案