10个有关String的知识

1. 如何比较两个字符串?使用“==”还是equals()方法?

简单来讲,“==”测试的是两个对象的引用是否相同,而equals()比较的是两个字符串的值是否相等。除非你想检查的是两个字符串是否是同一个对象,否则你应该使用equals()来比较字符串。

如果你知道interning的概念的话,那就更好了。

2. 为什么针对安全保密高的信息,char[]比String更好?

因为String是不可变的,就是说它一旦创建,就不能更改了,直到垃圾收集器将它回收走。而字符数组中的元素是可以更改的(译者注:这就意味着你就可以在使用完之后将其更改,而不会保留原始的数据)。所以使用字符数组的话,安全保密性高的信息(如密码之类的)将不会存在于系统中被他人看到。

3. 我们可以针对字符串使用switch条件语句吗?

对于JDK 7,回答是肯定的。从JDK 7开始, 我们可以针对字符串使用switch条件语句了;在JDK 6或者之前的版本,我们则不能使用switch条件语句。


1

2

3

4

5

6

7

8

9

// Java 7或者以后的版本

switch (str.toLowerCase()) {

      case "a":

           value = 1;

           break;

      case "b":

           value = 2;

           break;

}

4. 如何将字符串转化成int?


1

int n = Integer.parseInt("10");

很简单,也经常使用,但经常被忽略。

5. 如何将字符串用空白字符分割开?

我们可以使用正则表达式来做到分割字符。“\s”代表空白字符” “, “\t”, “\r”, “\n”.


1

String[] strArray =aString.split("\\s+");

6. substring()方法到底做了什么?

在JDK 6中, substring()的做法是,用一个字符数组来表示现存的字符串,然后给这个字符数组提供一个“窗口”,但实际并没有创建一个新的字符数组。要创建一个新的字符串对象由新的字符串数组表示的话,你需要加上一个空字符串,如下所示:


1

str.substring(m, n) + ""

这会创建一个新的字符数组,用来表示新的字符串。这种方法会让你的代码更快,因为垃圾收集器会收集不用的长字符串,而仅保存要使用的子字符串。

在Oracle JDK 7中,substring()会创建新的字符数组,而不是使用现存的字符数组。点击查看JDK 6和JDK 7中substring()的分别

7. String vs StringBuilder vs StringBuffer

String vs StringBuilder: StringBuilder是可变的,这意味着它创建之后仍旧可以更改它的值。
StringBuilder vs StringBuffer: StringBuffer是synchronized的,它是线程安全的的,但是比StringBuilder要慢。

8. 如何重复一个字符串

在Python中,我们可以乘一个数值来重复一个字符串。在Java中,我们可以使用Apache Commons Lang包中的StringUtils.repeat()方法来重复一个字符串。


1

2

3

String str = "abcd";

String repeated = StringUtils.repeat(str,3);

//abcdabcdabcd

9. 如何将字符串转换成时间


1

2

3

4

String str = "Sep 17, 2013";

Date date = new SimpleDateFormat("MMMM d, yy", Locale.ENGLISH).parse(str);

System.out.println(date);

//Tue Sep 17 00:00:00 EDT 2013

10. 如何计算一个字符串某个字符的出现次数?

请使用apache commons lang包中的StringUtils:


1

2

int n = StringUtils.countMatches("11112222", "1");

System.out.println(n);

时间: 2024-08-25 17:57:44

10个有关String的知识的相关文章

初学Direct X(10)—— D3D基础预备知识

初学Direct X(10) -- D3D基础预备知识 1. 像素格式 D3DFMT_X8R8G8B8(F) X:未加使用 8:8位用于显示 B:用于显示蓝色 F:浮点像素类型 以下三个较为常用,使用其他之前务必验证显卡是否支持 D3DFMT_R8G8B8 D3DFMT_X8R8G8B8 D3DFMT_A8R8G8B8 2. 内存池 定义资源缓存的存储位置 可默认宏为:D3DPOOL_DEFAULT 3. 深度缓存 是只含有特定像素的深度信息而不含图像数据的表面,可用于判断物体的前后显示 D3D

免费送10本《你的知识需要管理》签名版书籍,速来!

11月27日,感恩节! 个人知识管理的经典书籍<你的知识需要管理>自2010年出版以来,已经重印9次,为感谢各位的支持和关注,知名知识管理专家.<你的知识需要管理>作者田志刚老师特免费送出签名版10本. 获取方法: 1.关注田志刚老师微信(kmctian),发送你想获取<你的知识需要管理>书的理由(当然越感人越好): 2.11月27日,我们将随机抽取10名用户,并通过快递方式将<你的知识需要管理>书籍发送给您. 链接: <你的知识需要管理>书籍介

HDU 5414(2015多校10)-CRB and String(字符串处理)

题目地址:HDU 5414 题意:要求判断字符串s能否通过添加若干个字符得到字符串t 思路:这个题看起来复杂,其实仔细一分析,成功转化只包含两种情况.第一种因为要求插入的新字符和它前面的字符c不同,如果t中有x个连续的c,那么在s中也必须有x个连续的c:第二种是s必须是t的一个不连续子串. #include <stdio.h> #include <math.h> #include <string.h> #include <stdlib.h> #include

65)STL中string的知识

1)代码展示: string是一个类,只不过封装了 char*  而且还封装了  很多的字符串操作函数 2)string类的初始化: string的构造函数 2  默认构造函数: string();       //构造一个空的字符串string s1. 2  拷贝构造函数: string(const string &str);         //构造一个与str一样的string.如string s1(s2). 2  带参数的构造函数   string(const char *s);   

String相关知识(2)——StringBuffer

StringBuffer StirngBuffer是字符串缓冲区,当new的时候是在堆内存创建了一个对象,底层是一个长度为16的字符数组当调用添加方法时,会在原来的缓冲区添加字符 构造方法:StringBuffer sb = new StringBuffer(); sb.length() ==0; sb.capacity() == 16默认大小 StringBuffer sb = new StringBuffer(10); StringBuffer sb = new stringBuffer("

【LeetCode】10.Array and String —Reverse String 字符数组逆置

Write a function that reverses a string. The input string is given as an array of characters char[]. Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory. You may assume all the

Jan 10 - Isomorphic Strings; String; Data Type: char; digit and letter

创建两个数组 分别记录两个字符串 各个位置字符出现的上一个位置 通过比较当前字符的上一个位置是否相同 判断是否同构 比较坑爹的是 一开始以为只有字母 所以纠结于怎么找出字母来... 代码如下: public class IsomorphicStrings { public static boolean isIsomorphic(String s, String t) { int[] alpha1 = new int[1000]; int[] alpha2 = new int[1000]; for

11月10日上午ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库

1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处理页面的,处理页面只是操作数据库并且返回值,页面都是ajax处理的. ajax的写法: test.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR

关于C++中用两个迭代器方式初始化string的知识

string(iter1, iter2); 第一点:两个迭代器必须指向同一个容器. 第二点:iter2必须>=iter1. 第三点:如果iter1等于iter2,那么结果为空[] 另外一个比较特殊的关于反向迭代器的非常有用知识点,用如下程序来说明: int main() { string str1 = "abc"; cout << "str1.rend() - str1.rbegin() is " << str1.rend() - st