【JAVA零基础入门系列】(已完结)导航目录

  字符串,是我们最常用的类型,每个用双引号来表示的串都是一个字符串。Java中的字符串是一个预定义的类,跟C++ 一样叫String,而不是Char数组。至于什么叫做类,暂时不做过多介绍,在之后的篇章中会有关于类的详细介绍,在这里,只需要将类理解为一个模具,就像做月饼那样,想要什么外观的月饼,就选用相应的模具一压,再往烤箱里一放,便能得到我们想要的月饼。用同一个模具所做出来的月饼基本是一样的。当然,这个比喻并不十分恰当,不过就目前而已,它是有效的。声明一个String类型的变量之后,这个变量便是String类型的一个实例,就好比模具做出来的月饼,而且能使用String类型的所有方法,也具有了String的所有属性。

  String这个类有一些基本的方法,如取子串,拼接,检测是否相等 等一些常用的API。字符串处理将是我们经常用到的,所以String的熟练使用将是不可或缺的。话不多说,我们直接上代码实操。

  新建项目的方法,我就不再多说了。代码如下:

 package pers.frank.test;

 public class Test {
public static void main(String[] args){
String str = "我爱Java!!!";
String str1 = str.substring(0,4);
System.out.println("str1:"+str1); String str2 = str + "但我也爱C++。";
System.out.println("str2:"+str2); String str3 = "我爱Java!!!";
System.out.println(str3.equals(str));
System.out.println(str == str3);
System.out.println(str.length());
System.out.println(str.charAt(0));
System.out.println(str.charAt(2));
System.out.println(str.charAt(4)); String str4 = "我爱JavaScript!!!";
System.out.println(str4.substring(0,4) == str1);
}
}

  第5行定义了一个字符串变量str,并给它初始化赋值。第六行,调用了String的substring方法,取了前四个字符,这个方法一共两个参数,第一个参数代表想要取的第一个字符的位置,从0开始,第二个字符代表第一个不想取的字符的位置。所以str.substring(0,4)即取字符串str的前四个字符。

  第9行定义了str2,初始化的时候将str与字符串“但我也爱C++。”用“+”号拼接了起来,组成了新的字符串。

  第12行定义了str3,同样初始化赋值为“我爱Java!!!”,String的equals方法用于判断两个字符串的内容是否相同,因为调用str3.equals(str)时,会返回true,注意,判断两个字符串是否相同时不要使用“==”,虽然在某些情况下,使用等号判断可以顺利执行,但并非所有情况都如此。使用“==”号判断时,判断的是两个字符串变量是否同时指向同一个字符串常量,而不是比较它们的内容。String在这里更像是char*,字符串变量并没有真正存储字符串的内容,而是存储它们在内存中的位置,就像户口登记簿上写的是你家的地址,而不是把你家搬到登记簿里面去。用等号判断的时候,比较的是登记薄上记载的内容是否相同,而用equals方法比较的是两个地址指向的房子是否相同(可以不是同一栋房子)。在Java中,字符串常量都是被单独存放在内存空间的,在声明str和str2的时候,会新建两个字符串常量并存储在内存空间,然后把它们在内存空间的地址赋值给这两个变量。在声明str3的时候,并没有新建新的字符串常量,因为Java编译器会让字符串常量共享,所以实际上str3跟str指向的是同一个地址。这时使用等号来判断两者是否相等时可以得到正确的结果。但并不适用所有情况,如果再声明一个字符串变量str4,赋值为“我爱JavaScript!!!”,再调用substring方法跟str1用等号进行比较时,就不能得到正确的结果了。

  第15行调用的是length方法,返回字符串的长度。

  第16-18行调用charAt方法,返回的是第几个位置上的字符。以下是运行结果:

  

  因为java中的字符串都是Unicode字符,所以这里的字符概念跟某语言中的字符概念不太一样,既然说到了这里,那就顺便再详细的说明一下相关的概念。

  字符是抽象的最小文本单位。它没有固定的形状(可能是一个字形),而且没有值。“A”是一个字符,“€”(德国、法国和许多其他欧洲国家通用货币的标志)也是一个字符。

  字符集是字符的集合。例如,汉字字符是中国人最先发明的字符,在中文、日文、韩文和越南文的书写中使用。

  编码字符集是一个字符集,它为每一个字符分配一个唯一数字。Unicode 标准的核心是一个编码字符集,字母“A”的编码为 004116 和字符“€”的编码为20AC16.Unicode 标准始终使用十六进制数字,而且在书写时在前面加上前缀“U+”,所以“A”的编码书写为“U+0041”。

  代码点是指可用于编码字符集的数字。编码字符集定义一个有效的代码点范围,但是并不一定将字符分配给所有这些代码点。有效的 Unicode 代码点范围是 U+0000 至 U+10FFFF.Unicode 4.0 将字符分配给一百多万个代码点中的 96382 代码点。

  再细说可能就要说到具体的编码上来了,由于不是本篇重点,所以还是不做过多介绍了,之后会有文章专门介绍。

  关于String的方法很多,但常用的并不多,这里不全部介绍,想要了解的话可以在这里查看:http://www.runoob.com/java/java-string.html

  暂时不需要全部记住,只要知道有那么个函数,就可以实现那样的功能就好了,以后的多码代码自然能够记住了。

  最后,再介绍一个叫做StringBuilder的类。这个类是干嘛用的呢?主要用于多字符串的拼接和处理。那你可能会问了,既然用“+”会把两个字符串拼接起来,为啥还要这个类呢?事实上,每次声明一个新字符串变量并赋上初值的时候,如果该字符串常量不存在,则会新建一个字符串常量并存储,就像上面声明str2的时候,会新建一个字符串对象“我爱Java!!!但我也爱C++。”而不是简单的将“但我也爱C++。”加在str后面,而且如果有多次拼接,特别是在循环中使用的时候,这种方式无疑会浪费很多空间,我们需要的只是最后的字符串,而不是过程中间的产生的字符串,所以过程中生成的字符串对象并没有存储的必要,对程序而言便是存储上的浪费,这个时候StringBuilder就产生了,可以调用它的append方法来拼接字符串,这样可以节省很多不必要浪费的空间。

  事实上,如果你有了解过C或者C++的话,对char[]应该比较熟悉,StringBuilder内部便是有一个自己维护的char数组,通过动态申请内存方式进行拼接和处理。

  StringBuilder常用的方法如下:

  同样不需要全部死记硬背,在之后的练习中多加使用便能熟练掌握。

  至此,字符串的讲解告一段落,欢迎大家继续关注!

【JAVA零基础入门系列】Day6 Java字符串的更多相关文章

  1. 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA

    开发环境搭建好之后,还需要一个集成开发环境也就是IDE来进行编程.这里推荐的IDE是IDEA,那个老掉牙的Eclipse还是先放一边吧,(手动滑稽). IDEA的下载地址:http://www.jet ...

  2. 【JAVA零基础入门系列】Day4 变量与常量

    这一篇主要讲解Java中的变量,什么是变量,变量的作用以及如何声明,使用变量. 那么什么是变量?对于初学者而言,可以将变量理解为盒子,这些盒子可以用来存放数据,不同类型的数据需要放在对应类型的盒子里. ...

  3. 【JAVA零基础入门系列】Day5 Java中的运算符

    运算符,顾名思义就是用于运算的符号,比如最简单的+-*/,这些运算符可以用来进行数学运算,举个最简单的栗子: 已知长方形的长为3cm,高为4cm,求长方形的面积. 好,我们先新建一个项目,命名为Rec ...

  4. 【JAVA零基础入门系列】Day8 Java的控制流程

    什么是控制流程?简单来说就是控制程序运行逻辑的,因为程序一般而言不会直接一步运行到底,而是需要加上一些判断,一些循环等等.举个栗子,就好比你准备出门买个苹果,把这个过程当成程序的话,可能需要先判断一下 ...

  5. 【JAVA零基础入门系列】Day9 Java中的那个大数值

    什么是大数值?用脚趾头想也知道,当然是"大"的数值(233).Java中有两个用于表示大数值的类,BigInteger和BigDecimal,那到底能表示多大的数值呢?理论上,可以 ...

  6. 【JAVA零基础入门系列】Day10 Java中的数组

    什么是数组?顾名思义,就是数据的组合,把一些相同类型的数放到一组里去. 那为什么要用数组呢?比如需要统计全班同学的成绩的时候,如果给班上50个同学的成绩信息都命名一个变量进行存储,显然不方便,而且在做 ...

  7. 【JAVA零基础入门系列】Day11 Java中的类和对象

    今天要说的是Java中两个非常重要的概念--类和对象. 什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外观特征上,有名字,有年龄,能说话,能吃饭等等,这是我们作为人类的相同特征 ...

  8. 【JAVA零基础入门系列】Day12 Java类的简单应用

    俗话说的好,实践出真知,所以除了理论知识掌握扎实以外,更重要的是要多加操练,这样才能掌握核心科技. 今天我们就用刚学会的类来实践一下,目标便是完成上一篇中的剁手任务. 我们的商品类已经准备好了,代码重 ...

  9. 【JAVA零基础入门系列】Day13 Java类的继承与多态

    继承是类的一个很重要的特性,什么?你连继承都不知道?你是想气死爸爸好继承爸爸的遗产吗?(滑稽) 开个玩笑,这里的继承跟我们现实生活的中继承还是有很大区别的,一个类可以继承另一个类,继承的内容包括属性跟 ...

随机推荐

  1. windows系统,优化C盘空间的方法

    C盘在使用过程中,内容会越来越多,剩余空间越来越小.如何清理出更多空间呢?以windows7为例 转载请保留 http://www.cnblogs.com/lion-zheng/ cleanmgr w ...

  2. Navicat连接oracle数据出现的oci问题

    为了用navicat操作数据库,我安装了navicat,安装完后可以连接oracle,mysql,sql service,sqlite,所以这个工具非常好用. 但是在连接数据库的时候报错了:" ...

  3. CCNA基础知识摘录

    cisco设备的启动要点: 1.检测硬件(保存在rom) 2.载入软件(IOS)(保存在Flash) 3.调入配置文件(密码,IP地址,路由协议都保存在此)(此文件保存在NVRAM) 0x2102:正 ...

  4. Mac Intellij Debug 模式

    前言:本文的核心是记录debug的使用,与具体的操作系统无关. 1.什么是Debug Debug是程序的一种运行模式.用来发掘程序的走向,以及程序在运行过程中参数的变化. 2.Debug的作用 deb ...

  5. 团队作业8——Beta 阶段冲刺6th day

    一.当天站立式会议 二.每个人的工作 (1)昨天已完成的工作(具体在表格中) 完善订单功能 (2)今天计划完成的工作(具体如下) 完善支付功能 (3) 工作中遇到的困难(在表格中) 成员 昨天已完成的 ...

  6. 团队作业8——第二次项目冲刺(Beta阶段)5.22

    1.当天站立式会议照片 会议内容: ①:检查总结上次任务完成情况 ②:安排本次任务的分工 ③:反思前三次自己的不足 ④:协商解决代码进度.成员投入时间等问题 2.每个人的工作 工作中遇到的困难: 代码 ...

  7. 201521123036 《Java程序设计》第6周学习总结

    本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 1.2 可选:使用常规方法总结其他上课内容. 对象克隆:Clon ...

  8. 201521123070 《JAVA程序设计》第1周学习总结

    本周学习总结 1.认识了三大平台Java SE.Java EE.Java ME. 2.认识了解了JDK,JVM与JRE,且熟悉JDK的操作并下载安装. 3.学会用博客写作业了. 书面作业 Q1.为什么 ...

  9. Java 第九周总结

    1. 本周学习总结 2. 书面作业 1.常用异常 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避免? 以前的代码经常出现空指针的,需 ...

  10. 201521123011 《Java程序设计》第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 协议.IP.域名.端口: 常用应用层协议:http, ftp 域名(通过域名可以找到IP)用ping测试 ...