码迷,mamicode.com
首页 > 其他好文 > 详细

黑马程序员__String类问题总结

时间:2015-04-01 07:07:32      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:java


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


构建字符串对象

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";


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

字符串特性:

1.字符串最大特点:一旦被初始化就不可以改变

可以修改地址值的指引,但是内容是不会改变的

String s="abc";   s="kk";

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

---------

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




常见组合

%tF 2014-01-01

%tD 01/01/14

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

%tr 00:00:00 下午

%tT 00:00:00

%tR 00: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 


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


黑马程序员__String类问题总结

标签:java

原文地址:http://superwaterfox.blog.51cto.com/9565348/1627124

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!