Java学习:飘逸的字符串

前言

相信不管我们运用Java语言来开发项目还是进行数据分析处理,都要运用到和字符串相关的处理方法。这个社会处处有着和字符串相关的影子:日志、文档、书籍等。既然我们离不开字符串,那么就来好好认识一下吧。

怎么构造一个字符串?

在Java语言里,有两种方法来创建一个字符串对象:一是用字符串直接量

 String message=new String("Welcome to Java");
String message2="Welcome to Java";

二是通过字符数组。

 char[] array={'G','o','o','d',' ','D','a','y'};
String message3=new String(array);

注意:String变量存储的是对String对象的引用,String对象里存储的才是字符串的值。所以严格的说,术语String变量、String对象和字符串值是不同的,只是平常我们为了简单起见,都统称为字符串而已。

不可变?字符串这么拽!

String对象是不可变的,它的内容是不能改变的。比如下面的两行代码:

 String s="Java";
s="html";

第一条语句创建了内容为“Java”的String对象,并将其引用赋值给s。第二条语句创建了一个内容为“html”的新String对象,并将其赋值给s。所以执行这两条语句之后,两个String的对象都没有改变,并且其中的内容也没有发生变化,只是s变量最后指向了新的String对象。

字符串的比较

一旦看到比较两字,我们想到的是“==”。然而,运算符==只能检测字符串String1和String2是否指向同一个对象,但它不会告诉我们它们的内容是否相同。因此Java里面判断字符串是否相同,我们应该使用equals方法或者compareTo方法。

 String s1=new String("Welcome to Java");
String s2="Welcome to Java";
String s3="Welcome to C++";
String s4="welcome TO java";
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s1.compareTo(s2));

补充:当比较两个字符串是否相等的时候,方法equalsIgnoreCase和compareToIgnoreCase可以先忽略字母大小写然后进行比较。

 System.out.println(s1.equalsIgnoreCase(s4));
System.out.println(s2.compareToIgnoreCase(s4));

字符串长度、字符和组合字符串

length是String类的一个方法,但它是数组对象的一个属性,所以,我们要获取字符串s的字符个数,就要使用s.length()。方法s.charAt(index)可用于提取字符串s的某个特定字符,其中下标index的取值范围在0到s.length()-1之间。

另外,我们可以使用concat方法连接两个字符串。如下代码所示,将字符串s1和s2连接构成了s3。

 String ss="BaiYi";
String ss2="ShaoNian";
String ss3=ss.concat(ss2);
System.out.println(ss3);

当然了,好像平常我们更倾向于更简单的方法,那就是直接使用加号(+)来连接两个或者更多的字符串构成新的字符串。

怎么样获取子串呢?

前面已经提到了我们可以通过charAt方法来获取字符串的任意一个单字符,但是获取它的子串应该怎么办呢?我们就用substring方法。

 System.out.println("Welcome to Java".substring(0,11) + "C++");

字符串的转换、替换和分隔方法,学习ing...

toLowerCase:返回将所有字符都转换为小写之后的新字符串

toUpperCase:返回将所有字符都转换为大写之后的新字符串

trim:返回去掉两端的空白字符之后的新字符串

replace:返回用一个新子串替换这个字符串中所有和它匹配的字符的新字符串

replaceFirst:返回用一个新子串替换这个字符串中第一个和它匹配的子串之后的新字符串

replaceAll:返回用一个新子串替换这个字符串中所有和它匹配的子串之后的新字符串

split:返回用定界符分隔的子串所构成的一个字符串数组

 System.out.println("Welcome TO".toLowerCase());
System.out.println("Welcome to".toUpperCase());
System.out.println(" Welcome to ".trim());
System.out.println("Welcome to".replace('e','A'));
System.out.println("Welcome to".replaceFirst("e","ABC"));
System.out.println("Welcome to".replaceAll("e","AB")); String[] str="Java#HTML#C++".split("#",0);
for (int i=0; i<str.length; i++) {
System.out.println(str[i] + " ");
}
String[] str2="Java#HTML&C++".split("[#&]",0);
for (int i=0; i<str2.length; i++) {
System.out.println(str2[i] + " ");
}

Java学习总结:飘逸的字符串的更多相关文章

  1. java学习,从一个字符串中统计同一类型出现的次数

    1.从字符串“AS345asdzf*())sddsWE”中统计大写字母.小写字母.其他类型的出现的次数 String s="AS345asdzf*())sddsWE"; int l ...

  2. java学习之—栈匹配字符串符号

    /** * 栈 * Create by Administrator * 2018/6/11 0011 * 上午 10:20 **/ public class StackR { private int ...

  3. [ Java学习基础 ] String字符串的基本操作

    字符串的拼接 String字符串虽然是不可变的字符串,但也同样可以进行拼接,只是会产生一个新的对象.String字符串拼接的时候可以使用"+"运算符或String的concat(S ...

  4. 【原】Java学习笔记022 - 字符串

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 字符串 // 定义 ...

  5. 我的Java开发学习之旅------>工具类:Java使用正则表达式分离出字符串中的中文和英文

    今天看到一个工具类使用正则表达式将一大段字符串中的中文和英文都分离出来了,在此记录一下,读者可以收藏! import java.util.ArrayList; import java.util.Col ...

  6. Java学习:字符串概述与特点

    字符串概述与特点 java.lang.String类 代表字符串 API当中说:Java程序中的所有字符串字面值(如“abc“)都作为此类的实例实现.其实就是说:程序当中所用的双引号字符串,都是Str ...

  7. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

  8. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

  9. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

随机推荐

  1. IOS高级编程之二:IOS的数据存储与IO

    一.应用程序沙盒 IOS应用程序职能在系统为该应用所分配的文件区域下读写文件,这个文件区域就是应用程序沙盒.所有的非代码文件如:图片.声音.映象等等都存放在此. 在mac中command+shift+ ...

  2. P6 EPPM 16.1 安装和配置指南 1

    安装和配置指南下一topiccontents这些指南解释如何安装和配置数据库服务器,和P6 EPPM,模块:他们还提供在P6 EPPM能够解决所有模块的概述.标准指南帮助您配置和部署应用程序向导P6 ...

  3. 狂屌的Windows下的定时任务工具xStarter

    xStarter是一款将某些常规计算机操作自动化进行为目的的程序. 它不能为你生成word文件,但是它可以周期性地为你备份文件以保持完整性. 程序的特点有:加强的任务计划工具;在系统事件上执行任务;用 ...

  4. Delphi的几个跨平台小游戏例子。

    Embarcadero开源了几个FireMonkey的小游戏,支持Windows, Android,Ios, MacOS等. 源码地址: https://github.com/EmbarcaderoP ...

  5. ahjesus约束方法或属性的调用方

    class Program { static void Main(string[] args) { test(); run(); Console.ReadKey(); } static void ru ...

  6. CentOS6.5 FTP配置

    一:安装vsftpd 查看是否已经安装vsftpd rpm -qa | grep vsftpd 如果没有,就安装,并设置开机启动 yum -y install vsftpd chkconfig vsf ...

  7. SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法

    最近angularjs post到后台 400一头雾水 没有任何错误. 最后发现好文,感谢作者 SpringMVC中出现" 400 Bad Request "错误(用@Respon ...

  8. DirectShow程序运行过程简析

    这段时间一直在学习陆其明老师的<DirectShow开发指南>一书,书中对DirectShow的很多细节讲解清晰,但是却容易让人缺少对全局的把握.在学习过程中,整理了关于DirectSho ...

  9. 【GOF23设计模式】组合模式

    来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_组合模式.树状结构.杀毒软件架构.JUnite底层架构.常见开发场景 package com.test.composite ...

  10. javascript --- 只继承于原型

    正如上次所述,,出于效率考虑,我们应该尽可能的将一些可重用的属性和方法添加到原型中去. 如果养成了这个好习惯,我们仅仅依靠原型就能顺利的完成继承关系的构建了. 毕竟采用new her()方法将her的 ...