黑马程序员__String类问题总结

------Java培训期待与您交流! -------

char类型只能表示单个字符,而由多个字符链接而成的称为字符串。一般Java中使用java.long.String来建立字符串对象java


构建字符串对象编程

String str;              //默认为null
public String(char arr[])//建立数组
char a[]={'g','o','o','d'};
String s=new String(a);//=>等同于  String s=new String("good")
String s="good";


------------------------------------------数组

字符串特性:app

1.字符串最大特色:一旦被初始化就不能够改变ide

能够修改地址值的指引,可是内容是不会改变的ui

String s="abc";   s="kk";加密

s的地址指引改变了,内容是不变的spa

---------orm

2.String类复写了Object类的equals方法对象

Object.equals()是比较地址值是否相同

String.equals()复写后,比较内容是否相同

String s1="abc";
String s2=new String("abc");
String s3="abc";
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
System.out.println(s1==s3);


3.  s1和s2有什么区别

s1在内存中有一个对象

s2在内存中含有两个对象


4.s1和s3的地址值是相同的,s1和s2是不一样的

由于首先String会开辟一个Sting常量池,而后若是有相同的值时,会指引同一个地址值

若是new Stirng("abc"),那么会新建一个Stirng的对象,放入abc,地址就不用了



-------------------------------------------------


StringBuilder是一个可动态变量,能够 自适应大小自调节占用的内存数,适用于须要频繁附加字符的时候使用。


StringBuilder builder=new StringBuilder(x);  x为String类型




append()方法,在原有字符后边添加字符

insert(int offset,arg)方法,指定下标,添加内容

delete(int start,int end) 方法。指定指标位置删除,若是不存在位置,那么会从最头或者最尾。

reverse()反转字符串


-----------

public static void main(String[] args){
String str="";
long startTime=System.currentTimeMillis();
for (int i=0;i<10000;i++){
str=str+i;
}
long endTime=System.currentTimeMillis();
long midTime=endTime-startTime;
System.out.println(midTime+"ms");
StringBuilder builder=new StringBuilder("");
startTime=System.currentTimeMillis();
for (int i=0;i<10000;i++){
builder.append(i);
}
endTime=System.currentTimeMillis();
midTime=endTime-startTime;
System.out.println(midTime+"ms");
}

以上是用String和StringBuilder的扩展时间

发现,StringBuilder扩展空间时速度更快,并且不会占用多余的块,而String须要重复新建空间,链接旧的空间,耗时时间更长


------------------

如下是用数组和转型的实例:

1.数组通常是比较固定的,不要修改数组的元素,须要修改的话,能够新建Stirng变量进行存储数组值

2.转型

string-->char[]

char[i]-->string

char[i]-->int

int-->char[i]




/**编程实现对键盘输入的英文名句子进行加密。用加密方法为:当内容为英文字母时,用26字母中的其后三个字母代替该字母,若为其它字符时不变。

*好比245a95n加密后是245bcd95opq。

*/

public static void main(String[] args) {
String str="245a95y";
String tmp1="";
char[] cha1=str.toCharArray();
System.out.println(str);
//System.out.println((int)'a'+"\t"+(int)'z');
for (int i=0;i<cha1.length;i++){
int tmp=(int)cha1[i];
if (97<= tmp && tmp<=119){
tmp1+=(char)(tmp+1);
tmp1+=(char)(tmp+2);
tmp1+=(char)(tmp+3);
}else if (tmp>119 && tmp<=122){
tmp1+=(char)(tmp-32);
tmp1+=(char)(tmp-32-1);
tmp1+=(char)(tmp-32-2);
}else{
tmp1+=cha1[i];
}
}
System.out.println(tmp1);
}

-----------------------------------------

-------------------------------------------------------

String.format(Local local,String format,Object...args)



Date dae =new Date();

String day=String.format("%te",date);


常见的日期时间转换符。(太多写下基本的,其他的查阅吧)

$tY

%tm

%tD

%tH

%tM

$tS




常见组合

%tF2014-01-01

%tD01/01/14

%tc周二 一月 1 00:00:00 CST 2014

%tr00:00:00 下午

%tT00:00:00

%tR00:00



常见日期格式化转换符 

转换符 说  明 示  例 

%te 一个月中的某一天(1~31)

%tb 指定语言环境的月份简称 Feb(英文)、二月(中文) 

%tB 指定语言环境的月份全称 February(英文)、二月(中文) 

%tA 指定语言环境的星期几全称 Monday(英文)、星期一(中文) 

%ta 指定语言环境的星期几简称 Mon(英文)、星期一(中文) 

%tc 包括所有日期和时间信息 星期四 十一月 26 10:26:30 CST 2009 

%tY 4位年份 2009 

%tj 一年中的第几天(001~366) 085 

%tm 月份 03 

%td 一个月中的第几天(01~31) 08 

%ty 2位年份 09 


时间格式化转换符 

转换符 说  明 示  例 

%tH 2位数字的24小时制的小时(00~23) 14 

%tI 2位数字的12小时制的小时(01~12) 05 

%tk 2位数字的24小时制的小时(1~23)

%tl 2位数字的12小时制的小时(1~12) 10 

%tM 2位数字的分钟(00~59) 05 

%tS 2位数字的秒数(00~60) 12 

%tL 3位数字的毫秒数(000~999) 920 

%tN 9位数字的微秒数(000000000~999999999) 062000000000 

%tp 指定语言环境下上午或下午标记 下午(中文)、pm(英文) 

%tz 相对于GMT RFC 82格式的数字时区偏移量 +0800 

%tZ 时区缩写形式的字符串 CST 

%ts 1970-01-01 00:00:00至如今通过的秒数 1206426646 

%tQ 1970-01-01 00:00:00至如今通过的毫秒数 1206426737453 


常见的日期时间组合转换符 

转换符 说  明 示  例 

%tF “年-月-日”格式(4位年份) 2009-01-26 

%tD “月/日/年”格式(2位年份) 03/25/09 

%tr “时:分:秒 PM(AM)”格式(12小时制) 03:22:06 下午 

%tT “时:分:秒”格式(24小时制) 15:23:50 

%tR “时:分”格式(24小时制) 15:23 


----------------------------

相关文章
相关标签/搜索