求助:JAVA里,String的format和‘+’连接符的区别。

maxos 2014-06-11 06:27:53

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

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

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

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

...全文
793 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
maxos 2014-06-30
  • 打赏
  • 举报
回复
引用 14 楼 vnvlyp 的回复:
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你连基础知识都不清楚还这个态度,别人回答你的问题就已经很尊重你了。
///________________________________________________________ 这个回答正解,应按你的写法。
vnvlyp 2014-06-13
  • 打赏
  • 举报
回复
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你连基础知识都不清楚还这个态度,别人回答你的问题就已经很尊重你了。
azhqiang 2014-06-13
  • 打赏
  • 举报
回复
引用 7 楼 maxos 的回复:
这个论坛,太让我失望了。
那我只能说:你牛。
gaofuqi 2014-06-13
  • 打赏
  • 举报
回复
引用 11 楼 azhqiang 的回复:
[quote=引用 7 楼 maxos 的回复:] 这个论坛,太让我失望了。
那我只能说:你牛。[/quote] 典型的伸手党,直接看源码或者api比在这提问快多了。
Mr-稻帅 2014-06-13
  • 打赏
  • 举报
回复
引用 5 楼 azhqiang 的回复:
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解释吧~~
tony4geek 2014-06-12
  • 打赏
  • 举报
回复
System.out.println(String.format("abc")); 是 abc
maxos 2014-06-12
  • 打赏
  • 举报
回复
回复一楼: 我可能没说清,我是说 String.format("abc") 调用之后, 在调试时,“监视”窗里看到的字符串,并不是"abc",而是一串数字。 而且,我把这串数字传入C++代码,也不知道怎么转换成可用的字符串。 但如果我按”方法二“写(用'+'连接符),在监视窗里,就能看到明码 ”abc" 串, 传入C++后,也能转换成宽字符。 我现在想用String.format("abc"),因为方便,但我不知道传入C++后如何转换。
剑神一笑 2014-06-12
  • 打赏
  • 举报
回复
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");
maxos 2014-06-12
  • 打赏
  • 举报
回复
引用 8 楼 cbxjj 的回复:
ss1 = ss1.format("abc"); format属于String的静态方法 是有返回值的,并不会直接改变原字符串的值 public static String format(String format, Object ... args) { return new Formatter().format(format, args).toString(); }
//__________________________________________________________ 建议你 JAVA 下断点,在监控窗口看一下format()调用之后的串值。 不是要你 printf() 出来,我当然知道它能 printf() 出来。 我只是想知道他内部存的什么格式?如何转换成utf8格式或其它格式字符串。 //__________________________________________________________
剑神一笑 2014-06-12
  • 打赏
  • 举报
回复
ss1 = ss1.format("abc"); format属于String的静态方法 是有返回值的,并不会直接改变原字符串的值 public static String format(String format, Object ... args) { return new Formatter().format(format, args).toString(); }
maxos 2014-06-12
  • 打赏
  • 举报
回复
这个论坛,太让我失望了。
maxos 2014-06-12
  • 打赏
  • 举报
回复
引用 5 楼 azhqiang 的回复:
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。
//—————————————————————————————————————————— 怎么都没听明白?如果连 String.format() 我都不会用,那还混个鸟啊, C语言第一课就讲这个吧,你们都怎么了? 我是说两种方式对于串的存储格式不同, format() 调用之后,串内存储的不知道是什么东西,数据不可见,不能看到“明码”。 而用 ‘+’ 连接符拼起的串,就是明码可见的(调试窗口-监视窗)。 我现在想让String.format() 调用之后的串,转换成用'+'连接符拼起的串, 不知你们有没有调试过 JAVA,String 存储格式,没有人懂吗?
azhqiang 2014-06-12
  • 打赏
  • 举报
回复
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。
maxos 2014-06-12
  • 打赏
  • 举报
回复
引用 3 楼 rui888 的回复:
System.out.println(String.format("abc")); 是 abc
这谁不知道呀。
2.wa 2014-06-11
  • 打赏
  • 举报
回复
String类增加了一个非常有用的静态函数format(String format, Objece... argues),可以将各类数据格式化为字符串并输出。其中format参数指定了输出的格式,是最复杂也是最难掌握的一点,而argues则是一系列等待被格式化的对象。该函数对c语言中printf函数的用法进行了一定的模仿,因此有c语言基础的人学起来会轻松许多。
 public static String format(String format, Object... args) {
        return new Formatter().format(format, args).toString();
    }

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧