黑马程序员技术交流社区

标题: 转义字符有疑问。。 [打印本页]

作者: 杨长川    时间: 2013-1-19 20:08
标题: 转义字符有疑问。。
本帖最后由 杨长川 于 2013-1-22 16:00 编辑

在java中,
\0x 表示八进制字符  貌似C里面表示的是十六进制是不??
还有\r 表示回车,\n表示换行的意思,跟C语言应该是一样的吧。

但是,那为什么
System.out.println("beijing\rshanghai");
输出的是:
beijing
shanghai

而System.out.println("beijing\nshanghai");
输出的也是:
beijing
shnaghai

输出结果怎么都是一样的呀。。。
作者: 张洪慊    时间: 2013-1-19 20:41
- -!! \0x(\0x3A)开头表示十六进制,\0(\012)开头表示八进制
\r 光标回到行首 beijing
                      shanghai   shanghai覆盖掉了beijing输出shanghai

\n这里 光标换行并回到行首(也就是下一行行首)
作者: 杨长川    时间: 2013-1-21 11:57
张洪慊 发表于 2013-1-19 20:41
- -!! \0x(\0x3A)开头表示十六进制,\0(\012)开头表示八进制
\r 光标回到行首 beijing
                     ...

请你亲自输入代码 ,试验一下。
作者: 张洪慊    时间: 2013-1-21 12:40
//那个不好意思,前面没有'\',0x3a,072,- - 我又C了..
class TestData
{

public static void main(String[] args)
{
   System.out.println(0x3A);//58十六进制
   System.out.println(072);//58八进制

   System.out.println("abc"+"\r"+"d");//dbc
   
   System.out.println("abc"+"\n"+"d");//abc
                                                   //d
}
}
//在C中
#include<stdio.h>
int main()
{
printf("%d %d %d\n",58,'\x3A','\072');//58 58 58
return 0;
}
作者: 杨浩    时间: 2013-1-21 15:16
张洪慊 发表于 2013-1-21 12:40
//那个不好意思,前面没有'\',0x3a,072,- - 我又C了..
class TestData
{

无论是\r还是\n或者是\r\n
输出的结构都是
abc
d
作者: 高毅    时间: 2013-1-21 15:48
如果不考虑跨平台的话,应该都能实现换行吧~
作者: 张洪慊    时间: 2013-1-21 15:48
杨浩 发表于 2013-1-21 15:16
无论是\r还是\n或者是\r\n
输出的结构都是
abc

....你可以试下\r.
作者: 杨长川    时间: 2013-1-21 17:38
杨浩 发表于 2013-1-21 15:16
无论是\r还是\n或者是\r\n
输出的结构都是
abc

就是啊,这就奇怪了。跟VC的编译器语义上有差别啊,都是输出再换行的意思。
作者: 牛刚    时间: 2013-1-21 18:53
在windows里\n和\r都表示回车或换行,所以一样,而在linux只有\rs是回车键




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2