String 类,我可以不负责的说在 Java 中这个类应该是使用最频繁的类了。然而关于它的常用的操作,我却不甚了解。整理这个东西很反人性的,这些方法,你看到他的时候感觉很简单,但是真正用的时候还是不太会,还是会借助网络,今天我就来强行整理一波,不求全,但求精。

先说说 String 对象的构造器,创建一个字符创可以使用如下方法

String s = "123";

String s1 = new String("123");

char[] value = {'1','2','3'};
String s2 = new String(value);
System.out.println(s2); // char[] value1 = {'0','1','2','3','4'};
String s3 = new String(value1,1,3); // 从哪里开始,取几位
System.out.println(s3); // StringBuilder sb = new StringBuilder("123");
String s4 = new String(sb);
System.out.println(s4); //

我就提一下,为什么人家类创建对象都用 new ,而 String 可以直接赋值呢?s 和 s1 的区别到底在哪呢?这样设计的思路还是因为 String 的超高使用频率,为了节省空间,s 的创建过程为在内存中创建一个 “123” 这个 String,然后将引用赋给 s ,如果这个时候还有一条语句 String s5 = “123”,那么 JVM 将不再创建 “123”,而是直接将第一个 “123” 的引用赋给 s5,也就是说 s 和 s5 使用同一块内存,但是使用 new 创建就不一样,不论之前有没有,照样在堆中开辟新的空间 。

下面就看看常用的方法有那些吧!

基础篇

String s = "I don't like JAVA !";

// 返回字符串的长度,注意和数组的length属性的区别呦 !
int length = s.length();
System.out.println(length); // 19 // 返回某个字符在字符串中的位置,即数组下标
int position = s.indexOf('!');
System.out.println(position); // 18 // 返回指定下标的字符
char charAt = s.charAt(0);
System.out.println(charAt); // I // 求子串 参数为下标的起止位置,含前不含后。尾下标可以默认不写
String substring = s.substring(13, 19);
System.out.println(substring); // JAVA ! // 将字符串转换为 大写,相应的还有转换为小写 toLowerCase()
String s1 = s.toUpperCase();
System.out.println(s1); // I DON'T LIKE JAVA !

提高篇

// 字符串的替换,前为旧串,后为新串。
String s2 = s.replace("don't", "do");
System.out.println(s2); // I do like JAVA ! // 去除前后空格
String trim =s.trim();
System.out.println(trim); // I don't like JAVA ! // 使用指定的语言环境、格式字符串和参数返回一个格式化字符串。
String format = String.format("请说出真心话: %s", s);
System.out.println(format); // 请说出真心话: I don't like JAVA ! // 以指定字符串进行分割字符串,得到字符串数组。
String[] split = s.split(" ");
for (int i = 0; i < split.length; i++) {
System.out.print(split[i]); // Idon'tlikeJAVA!
} // 将一个字符串转换成字节数组,得到一个系统默认的编码格式的字节数组。
byte[] bytes = s.getBytes(); // 将一个字符串转换成字符数组 ,返回的数组中是一个个的字符。
char[] array = s.toCharArray();

郁闷篇

不知道你们是怎么样的,我在写代码的时候总是会不自觉地使用 “==” 来比较两个字符串是否相等。虽然我明确的知道这是不对的,我想还是因为我代码写的少… ,所以你们记住了啊,要使用 equals 方法的!给个例子,自己感受感受区别。

String s3 = "123";
String s4 = new String("123");
String s5 = "123";
System.out.println(s3 == s4); // false
System.out.println(s3 == s5); // true
System.out.println(s3.equals(s4)); // true

最后来看一看基本类型和字符串之间的相互转化。

String s3 = "123";

int num = Integer.parseInt(s3);
System.out.println(num); // String string = String.valueOf(num);
System.out.println(string); //

套路就是想得到基本数据类型,就使用对应包装类调用包装类的 praseXXX() 方法。想得到字符串就使用 String 调用 String 类的静态重载方法 valueOf() 。

String 的常用操作的更多相关文章

  1. Kotlin——初级篇(八):关于字符串(String)常用操作汇总

    在前面讲解Kotlin数据类型的时候,提到了字符串类型,当然关于其定义在前面的章节中已经讲解过了.对Kotlin中的数据类型不清楚的同学.请参考Kotlin--初级篇(三):数据类型详解这篇文章. 在 ...

  2. Redis string类型常用操作

      Redis 有 string.list.set.zset.hash数据类型.string类型是最基础的,其他类型都是在string类型上去建立的,所以了解熟悉string类型的常用操作对于学习re ...

  3. Kotlin——关于字符串(String)常用操作汇总

    在前面讲解Kotlin数据类型的时候,提到了字符串类型,当然关于其定义在前面的章节中已经讲解过了.对Kotlin中的数据类型不清楚的同学.请参考Kotlin——初级篇(三):数据类型详解这篇文章. 在 ...

  4. Java String 函数常用操作 & format() 格式化输出,代码详解

    package _String_; import java.util.*; import java.math.*; import java.lang.*; public class _Strings ...

  5. string的常用操作

    操作符 1.+:可以把两个字符串加起来 插入 iterator insert(iterator i, const char &ch); basic_string &insert(siz ...

  6. C++字符串string类常用操作详解(一)【初始化、遍历、连接】

    代码示例: #include <iostream> #include "string" using namespace std; //字符串初始化 void strIn ...

  7. C# String类常用操作

    1.string.Compare(s1,s2) 比较  按字母顺序后边的大于前边的 s1<s2 retrun -1 ;s1=s2 return 0; s1>s2 return1. Cons ...

  8. redis入门:介绍、特点、安装、各类型常用操作

    一.redis介绍 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. Redis支持多种类型的数据结构,如 字符串(strings), 散列(ha ...

  9. String 类上的常用操作

    java 中String 类上的常用操作: 首先创建对象  String line = new String("String demo"); String line2 = new ...

随机推荐

  1. soj1011. Lenny's Lucky Lotto

    1011. Lenny's Lucky Lotto Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description Lenny like ...

  2. 在windows的IDEA运行Presto

    After building Presto for the first time, you can load the project into your IDE and run the server. ...

  3. bzoj1190 [HNOI2007]梦幻岛宝珠

    传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=1190 [题解] 首先,我们把所有物品都分解成$a\times 2^b$的形式,然后把物品按 ...

  4. Elasticsearch6.3 使用jdbc连接

    Elasticsearch6.3开始执行sql,可以和使用数据库一样的CRUD进行操作elasticsearch,连接过程如下(安装下载Elasticsearch略): 一:项目中添加maven依赖 ...

  5. 多进程+协程 处理IO问题

    from multiprocessing import Pool import gevent,os import time def recursion(n): if n == 1 or n ==2: ...

  6. 【codeforces】【比赛题解】#862 CF Round #435 (Div.2)

    这次比赛打得很舒服,莫名得了个Rank41,涨了219的Rating,就比较优秀.不过还是没有闫神厉害啊.题目链接::P. [A]MEX 题意: Evil博士把Mahmoud和Ehab绑架到了邪恶之地 ...

  7. 读sru代码

    1. def read_corpus(path, eos="</s>"): data = [ ] with open(path) as fin: for line in ...

  8. Git 管理本地代码【转】

    转自:http://www.cnblogs.com/JessonChan/archive/2011/03/16/1986570.html 以前用SVN,不过没有用出感情来:倒是用出不少怨恨:由于没有很 ...

  9. 八、springboot整合redis

    整合Redis 一. 注解方式实现添加缓存 1.在pom.xml加入依赖 <!-- 配置使用redis启动器 --> <dependency> <groupId>o ...

  10. maven学习--生命周期

    clean --清理项目 default --构建项目(最核心)  ===========compile , test , package , install site --生成项目站点