java 与 c# 那点事

bcsj123 2009-07-14 10:44:47
java 与 c# String类的中一些方法的区别。。

急。。。 求各路豪侠。。教教。。
...全文
331 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxpp688 2010-01-22
  • 打赏
  • 举报
回复
不一样的地方太多了,比如:
——C#中 string name = "joll";
console.writeLine(name[3]);//输出第三个字母"l";

java中 String name ="joll";
System.out.println(name.charAt(3));//输出第三个字母"l";

可见C#是内置转化成char,Java要手动;
——java中==的比较不涉及到对象;equals比较之判断值是否相等,忽略内存地址。
而C#中不是那么泾渭分明。(重载也罢,个人认为java做的比较好)
——String 是从vb 继承过来的,一般都用string
——java 的String不能被重新赋值,C#可以;看似C#好点,但是java 中有
StringBuffer和StringBuilder;
StringBuffer对象代表一个字符序列课变的字符串,(用append,insert···转换成想要的后,如
果你想把它变成final的话只需toString()一下);考虑线程安全的话用StringBuffer好点,其实
StringBuilder和StringBuffer差不多;
如果你查C#帮助的话会发现C#的string 语法很强大像拆分字符串了,模糊查找后缀名了,(ref,out)引用类型了···有些java有,有些Java没有;但我觉的java思想好,c#中有太多现成的东西,为了方便使我们
越学越乱;写Java很锻炼程序员(仅仅个人看法)。
如果细说的话C# 和Java String 的区别太多了,我觉的的重在思想,思想对了语法不会可以查帮助

pywepe 2010-01-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lovesi3344 的回复:]
呵呵 C#是C和C++的混合
C++可以用==和!=判断两个string的关系
C#也可以

没想到Java竟然不能
[/Quote]

因为C#有操作符重载 大家都不怎么喜欢的东西
小灰狼 2010-01-22
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 xxpp688 的回复:]
不一样的地方太多了,比如:
——C#中  string name = "joll";
console.writeLine(name[3]);//输出第三个字母"l";

java中  String name ="joll";
System.out.println(name.charAt(3));//输出第三个字母"l";

可见C#是内置转化成char,Java要手动;
——java中==的比较不涉及到对象;equals比较之判断值是否相等,忽略内存地址。
而C#中不是那么泾渭分明。(重载也罢,个人认为java做的比较好)
——String 是从vb 继承过来的,一般都用string
——java 的String不能被重新赋值,C#可以;看似C#好点,但是java 中有
StringBuffer和StringBuilder;
StringBuffer对象代表一个字符序列课变的字符串,(用append,insert···转换成想要的后,如
果你想把它变成final的话只需toString()一下);考虑线程安全的话用StringBuffer好点,其实
StringBuilder和StringBuffer差不多;
如果你查C#帮助的话会发现C#的string 语法很强大像拆分字符串了,模糊查找后缀名了,(ref,out)引用类型了···有些java有,有些Java没有;但我觉的java思想好,c#中有太多现成的东西,为了方便使我们
越学越乱;写Java很锻炼程序员(仅仅个人看法)。
如果细说的话C# 和Java String 的区别太多了,我觉的的重在思想,思想对了语法不会可以查帮助

[/Quote]


string str = "abc";
str[2] 其实和 java 的 str.charAt(2) 差不多



关于==运算符,其实C#和java一样,在对非基本数据类型的比较时,都是比较两个变量是否指向同一个对象。而在 C# 中,String 类对这个运算符进行了重写。



无论是 java 还是 C#,字符串对象一旦创建,内部的内容就不能被改变,但是字符串变量可以被重新赋值,这一点是相同的。
jayqean 2010-01-20
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 hemowolf 的回复:]
引用 23 楼 rorom 的回复:
针对string 的"=="
c#是核对姓名,java是核对身份证


C# 可以对运算符重载。在C#中,string 类型其实对 == 运算符进行了重载,它其实等同于 Equals
[/Quote]
呵呵,是呀,C#有个重载操作符
小灰狼 2010-01-20
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 rorom 的回复:]
针对string 的"=="
c#是核对姓名,java是核对身份证
[/Quote]

C# 可以对运算符重载。在C#中,string 类型其实对 == 运算符进行了重载,它其实等同于 Equals
小灰狼 2010-01-20
  • 打赏
  • 举报
回复
1、在字符串上,C#中的 string 其实是 String 的一个别名,本质上 string 就是 String
C# 可以直接用 == 判断两个字符串是否相同,这其实是编译器把它们进行了 Equals 转换,通过下面代码可以得出这样的结论:
char[] c = new char[]{'a', 'b', 'c'};
string str1 = new string(c);
string str2 = new string(c);

object obj1 = str1;
object obj2 = str2;
Console.WriteLine(str1 == str2);
Console.WriteLine(obj1 == obj2);

同样的,object 也是 Object 的一个别名


2、从语言功能上看,C#比java的功能要强得多。比如在进行方法调用时,参数可以是 ref、out 类型的,有点象C++中的引用传递,而 java 中就没有这个功能。

楼上有人说C#是抄袭了java。最初时C#是吸取了java语言中的优秀部分,这是事实,但是在近十年的发展中,C#在语言上进一步扩展了它的功能,反而到后来 java 开始吸取 C# 中的优秀成果,比如泛型,基本数据的装箱和拆箱操作等。


psyuhen 2010-01-20
  • 打赏
  • 举报
回复
LS说得蛮有意思的嘛。

呵呵

java的String为final类,C#的string不是。
rorom 2010-01-20
  • 打赏
  • 举报
回复
针对string 的"=="
c#是核对姓名,java是核对身份证
cobra009 2010-01-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yuyeyi 的回复:]
Java和C#是同一批人写的
思路估计差不多
[/Quote]
莫非SUN公司和微软是一家人?
bcsj123 2010-01-01
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 spiniper 的回复:]
引用 6 楼 lovesi3344 的回复:
呵呵 C#是C和C++的混合
C++可以用==和!=判断两个string的关系
C#也可以

没想到Java竟然不能


不可以这么说的,从语言性质上来说,C是结构化语言,C++是支持面向对象语言,而C#是纯面向对象语言(虽然里面有结构化的一些特性).
C#有C和C++中没有的东西,而C与C++也有C#中没有的东西。
[/Quote]



大侠,跑题了。。
树成 2010-01-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lovesi3344 的回复:]
呵呵 C#是C和C++的混合
C++可以用==和!=判断两个string的关系
C#也可以

没想到Java竟然不能
[/Quote]

不可以这么说的,从语言性质上来说,C是结构化语言,C++是支持面向对象语言,而C#是纯面向对象语言(虽然里面有结构化的一些特性).
C#有C和C++中没有的东西,而C与C++也有C#中没有的东西。
bcsj123 2010-01-01
  • 打赏
  • 举报
回复
顶#4楼。。

但,我觉还不只这些吧,

看来我要好好的总结一下 java 与 c# String类中的一些区别。


谢谢大家的帮助
lodachi 2009-12-16
  • 打赏
  • 举报
回复
C#抄袭java,支持java。

上学的时候老师说学不会java可以去学c#,去做傻瓜式编程
ahhh90h 2009-12-15
  • 打赏
  • 举报
回复
学习
Archer1341 2009-12-15
  • 打赏
  • 举报
回复
新手学习·········
shadow55 2009-12-15
  • 打赏
  • 举报
回复
Equals(String,StringComparison.OrdinalIgnoreCase)
c#不区分大小写的Equals
fyp2010 2009-12-15
  • 打赏
  • 举报
回复
菜鸟正在努力飞
woshayawo 2009-12-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 woshayawo 的回复:]
引用 8 楼 yuyeyi 的回复:
Java和C#是同一批人写的
思路估计差不多



第一次听这么说,有待考证
[/Quote]

是不是这么说啊!
lovetysx 2009-12-13
  • 打赏
  • 举报
回复
C#有属性,java没有
C#可以用指针,java没有
c#传递参数可以是ref,java不能
jiang5495 2009-12-13
  • 打赏
  • 举报
回复
学习了
加载更多回复(10)

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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