热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java中的数组和字符串

学Java有一段时间了,疯狂软件教育中心基础班老师说我们现阶段学到的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



推荐阅读
  • 湍流|低频_youcans 的 OpenCV 例程 200 篇106. 退化图像的逆滤波
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了youcans的OpenCV例程200篇106.退化图像的逆滤波相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 求数组中字符串的最长公共前缀(Java)
    求数组中字符串的最长公共前缀(牛客网—牛客题霸算法篇—NC55)题目描述给你一个大小为n的字符串数组strs,其中包含n个字符串,编写一个函数来查找字符串数组中的最长公共前缀,返回 ... [详细]
  • 包含A-Z的字母的消息通过以下规则编码:'A'-1'B'-2'Z'-26给定一个包含数字的编码消息,请确定解 ... [详细]
  • java io换行符_Java IO:为什么从stdin读取时,换行符的数字表示出现在控制台上?...
    只是为了更好地理解我在讲座中听到的内容(关于Java输入和输出流),我自己做了这个小程序:publicstaticvoidmain(String[]args)thro ... [详细]
  • 前一天学习了视图按键事件的监听。首先新建了一个自定义的视图,在自定义视图中,重新编了其构造函数和onDraw()方法。之后将该视图用于应用程序,最后添加该视图的按键监听器,在监听器中对KeyEvent ... [详细]
  • 8.2location对象location对象既是window对象的属性,也是document对象的属性.window.location和document.location引用的是同一个对象. ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 目录4.1.type数据类型检测 ... [详细]
author-avatar
东亚病夫出世_332
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有