Java中的数组和字符串

  学Java有一段时间了,疯狂软件教育中心基础班老师说我们现阶段学到的Java都是最最基础的,是冰山一角,只有你更加深入的学习才能体会到它的强大。这次用到了eclipse平台编程,它会自动出现很多函数,原来Java有这么多函数提供给用户,大大减少了编程量,我也更加明白了Java与面向结构语言的不同,它更方便、容错性更强。

  学习了数组和字符串,老师说数组int[] a = new int[20],此时的int[]是类的名称;同理String s = "Hello";中的String都是Java自带的类,我们直接拿来用就可以了。那么a和s就是类的一个对象,它们本质是指针,存放的是数组或字符串首元素的地址。那么Java不支持指针但处处用到指针的思想。

  这里举一个例子,若在主函数中有下列一段程序:

  int[] a1 = new int[10];//a1是数组名,此数组可以存放10个int型数据,此时数组值默认为0;

  int[] a2 = a1.clone();//clone()函数功能是复制一份a1,赋值给a2。当然a1和a2不同空间;

  System.out.println(a1.equals(a2));//输出a1和a2的比较结果,函数equals()返回值为boolean类型;

  以上程序结果为FALSE。讨论一下函数equals()的功能,说明此函数比较的不是数组内元素的值,而是比较a1和a2的值,a1和a2存储的是两个不同数组的首地址,则返回值为FALSE。

  再举一个简单例子,在主函数中有下列一段程序:

  String s1 = "abc";

  String s2 = "abc";

  System.out.println(s1.equals(s2));

  上述例子的结果为TRUE。因为在Java中,若两个字符串的值完全相同,那么这两个字符串对象(也就是上述例子中的s1和s2)指向同一个字符串空间(更早定义的那一个)。此例中s2指向s1的空间,说明s1和s2值相同,则返回值为TRUE。

  在Java中字符串的值不会被更改,例如下段程序:

  String s3 = "abc";

  String s4 = "abc";

  s4.replace('a','x');//函数replace('A','B')将字符串中字符A换为字符B;

  System.out.println(s4);

  上述例子输出的结果为"abc",而不是我们期望的"xbc"。说明字符串s4根本没被更改。

  若将上面的程序s4.replace('a','x');改为s4 = s4.replace('a','x');那么结果为"xbc";将替换后的字符串重新复制给s4,s4指向新申请的空间,原来旧的s4被丢弃。那么这里我有一个疑问,如果有人蓄意破坏程序,申请了一个特别大的空间然后丢弃或者经常丢弃一些空间,那么对内存伤害是很大的。老师解释说Java有一套自己的垃圾数据处理机制,这正是它和C的不同之处,也是它的强大之处。

  在字符串类中还提供了很多函数,例如substring(),compareTo(),split(),X.valueof()等,如果凭记忆去记那将是一个浩大的工程,我的学习方法是经常去用,每次练习编程时学习几个函数,需要用到的时候去学。

  疯狂软件教育中心依托开发团队的强大技术实力,把企业最新技术融入实训课程,打造金牌的品质,才能给予学员黄金的未来,疯狂软件凭借过硬的技术实力与丰富的项目开发经验,赢得了社会的肯定。疯狂软件Java培训师资力量强大,课程内容深入,为学员高薪就业做了很好的铺垫,拥有丰富就业指导经验的就业团队也成为了学员高薪就业的先天优势。地址:广州天河区车陂沣宏大厦3楼。

原文地址:https://www.cnblogs.com/gojava/p/3691746.html