java面试必备之String类 博客分类: java基础 javaString
String类
一、基础知识
在Java中将字符串作为对象来处理,有两种创建形式:String str=”abc”;String str=new String(“abc”). String是不可变对象。
空串("")是长度为0的字符串,可以用if(str.length()==0)或者if(str.equal(""))来判断是否为空串。String变量还可以存放一个特殊的值(null),表示目前没有任何对象与该变量关联。检查一个字符串是否为null可以用if(str==null)判断。
二、常用API
int indexOf(char ch):用来检查给定的一个字符在当前字符串中第一次出现的下标位置。
String substring(int begin,int end):用来截取当前字符串的部分内容以获取这个子字符串。
String trim():将字符串两边的空白(空白有很多种,空格是其中之一)去除掉
char charAt(int index):用于给定一个下标位置,来获取该字符串中这个位置的字符。
boolean startsWith(String suffix):用来判断当前字符串是否是以给定的字符串开始的。这里要注意大小写是敏感的。
boolean endsWith(String suffix):用来判断当前字符串是否是以给定的字符串结尾的。
String toUpperCase():用来将当前字符串中的英文部分的字符全部变为大写后再将新的字符串返回
String toLowerCase():用来将当前字符串中的英文部分的字符全部变为小写后再将新的字符串返回
字符串提供了很多重载的valueOf()方法,可以将其他基本类型的值以字符串的形式描述。
三、StringBuilder和StringBuffer
有些时候需要由较短的字符串构建字符串,采用字符串连接的方式效率比较低,每次连接字符串都会构建一个新的String对象,既耗时又浪费空间。使用StringBuilder类就可以避免这个问题。
1.StringBuilder是可变字符串。StringBuilder的很多方法的返回值均为StringBuilder类型。
2.StringBuilder类的常用方法有:
append(String str):追加字符串;
insert (int dstOffset,String s):插入字符串;
delete(int start,int end):删除字符串;
replace(int start,int end,String str): 替换字符串;
reverse():字符串反转。
3.StringBuffer 和StringBuilder的区别:
StringBuffer是线程安全的,同步处理的,性能稍慢;
StringBuilder是非线程安全的,并发处理的,性能稍快。
四、正则表达式
正则表达式就是使用一系列预定义的特殊字符来描述一个字符串的格式规则,然后使用该格式规则匹配某个字符串是否符合格式要求。
(1)相关表示
"."点儿,在正则表达式中表示任意一个字符。
\d:表示任意一个数字
\w:表示任意一个单词字符(只能是 数字,字母,下划线)
\s:表示任意一个空白字符(\t \r \n \f \x0B)
\D:表示任意一个非数字字符
\W:表示任意一个非单词字符
\S:表示任意一个非空白字符
"[]"用来描述单一字符,方括号内部可以定义这个字符的内容,也可以描述一个范围
"+":表示内容可以连续出现至少1次以上
"*":表示内容出现0-若干次
"?":表示内容出现0-1次
{n}:表示内容必须出现n次
{n,m}:表示内容出现n-m次
{n,}:表示内容出现至少n次
通过在正则表达式的开始添加"^"以及末尾添加"$"来表示一个整体。若不使用它们,那么正则表达式只匹配某个字符串的部分内容是否符合格式规则,但使用它们,则要求字符串必须从头到尾都满足该格式规则。
(2)相关API
matches()方法的参数要求我们传入一个用字符串描述的正则表达式,然后使用该正则表达式描述的字符串格式规则来匹配当前字符串,若满足那么该方法返回true。否则返回false。
String[] split(String regex):参数要求传入一个用字符串描述的正则表达式,然后使用该正则表达式描述的字符串规则来匹配当前字符串,并按照满足的部分将字符串拆分。
String replaceAll(String regex,String replacement):参数要求传入一个用字符串描述的正则表达式和一个需要替换的字符串,然后使用该正则表达式描述的字符串规则来匹配当前字符串,并将满足的部分替换为需要替换的这个字符串。
四、日期时间相关
1、Date:
Java中的时间使用标准类库的Date类表示,是用距离一个固定时间点(1970年 1月 1日 00:00:00)的毫秒数(可正可负,long类型)表达一个特定的时间点。因为Date的设计具有"千年虫"以及"时区"的问题,所以Date中的大部分方法已经不建议使用了,它们都被java.util.Calendar类所取代。
void setTime(long time):该方法用于为一个Date对象设置其需要表示的时间,
long getTime():该方法用于获取一个Date对象所表示的时间点,该返回值为一个long值
实际上Date的toString()方法返回的字符串虽然很清晰的描述了时间,但是对于非英语地区来讲不友好,可使用SimpleDateFormat来格式化。
2、SimpleDateFormat:
SimpleDateFormat 是一个用来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。简单的说,SimpleDateFormat就是根据一个特定的日期格式在字符串与Date之间相互转换。
String format(Date d):将Date格式化为String
Date parse(String s) :将String解析为Date
3、Calendar:
(1)java.util.Calendar 类用于封装日历信息,其主要作用在于其方法可以对时间分量进行运算。
(2)Calendar是抽象类,其具体子类针对不同国家的日历系统,其中应用最广泛的是GregorianCalendar(格里高里历,即通用的阳历),对应世界上绝大多数国家/地区使用的标准日历系统。
(3)Calendar是抽象类,其提供了一个工厂方法:Calendar getInstance()。该方法可以根据当前系统所在地区获取一个适当的Calendar的子类实现。
(4)Calendar的void setTime(Date date),允许我们为Calendar设置Date对象所表示的时间。
Calendar的 Date getTime(),允许我们获取一个使用Date对象描述的Calendar所表示的时间。
<!--EndFragment-->
推荐阅读
-
java面试必备之类和对象 博客分类: java基础 java类和对象
-
java面试必备之String类 博客分类: java基础 javaString
-
java面试必备之语言基础 博客分类: java基础
-
java面试必备之数组 博客分类: java基础 java数组
-
java图形界面基础之画图(使用Graphics类从画图形到图片到gif) 博客分类: java图形界面基础java图形界面基础,事件机制 javaGraphicsJFramegif
-
不可变类String--阅读源码从jdk开始 博客分类: java基础 java String不可变类
-
Java中String类的方法详解 博客分类: JAVA面试题 JavaCC++C#Solaris