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");
------解决方案--------------------

------解决方案--------------------
典型的伸手党,直接看源码或者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你连基础知识都不清楚还这个态度,别人回答你的问题就已经很尊重你了。