黑马程序员 常用对象API-- String类、Stringbuffer、StringBuilder总结

来源:互联网 发布:淘宝店铺装修包含哪些 编辑:程序博客网 时间:2024/05/16 09:58

-----------android培训java培训、java学习型技术博客、期待与您交流! ------------

 

String类:

字符串是一个特殊的对象。

字符串一旦初始化就不可以被改变。

String str = "abc";//"abc"存储在字符串常量池中。

池中没有就建立,池中有直接用。

String s1 = "abc";//在常量池中创建一个对象

String s2 = new String("abc");//在堆内存中创建两个对象,一个new一个,一个字符串对象。

System.out.println(s==s1);true

System.out.println(s==s2);false

System.out.println(s.equals(s2));true  

String类覆写了Object中的equals方法建立了String类自己的判断对象是否相同的依据。

构造函数:

1.String s = new String();

2.byte[] arr = {97,66,67,68};

  String s = new String(arr);

  System,out.println("s="+S);//打印结果:s=aBC

3.char[] arr = {'w','a','p','q,','x'};

  String s = new String(arr);

  System.out.println("s="s);//打印结果:s=wapqx

4.char[] arr ={w,a,p,q,x};

  String s = new String(arr,1,3);//从1开始取3个。

  System.out.println("s="s);//打印结果:s=apq

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

String类:常见功能

1.获取  

1.1获取字符串中字符的个数(长度)

int length();

1.2根据位置获取字符。

char charAt(int index);

1.3根据字符获取位置,返回第一次出现的位置。(必须会)

int  indexOf(int ch);

int  indexOf(int ch,int fromIndex);从指定位置开始索引,返回第一次出现的位置。

int  indexOf(String str);

int  indexOf(String str,int fromIndex);

int  lastIndexOf(int ch);

int  lastIndexOf(int ch,int fromIndex);

int  lastIndexOf(String str);

int  lastIndexOf(String str,int fromIndex);

1.4获取字符串中一部分字符串。也叫子串。

String substring(int beginIndex,int endIndex);

String substring(int beginIndex);

返回一个新的字符串,从指定的beginIndex开始,直到索引endIndex-1处结束。

包含begin不包含end

2.转换

2.1将字符换变成字符串数组。

String[] split(String regex);涉及到正则表达式。

例: String s = "张三,李四,王五";

  String[] arr = s.split(",");

  

2.2将字符变成字符数组。

char[]  toCharArray();

2.3将字符串变成字节数组。

byte[]  getBytes(); 

2.4将字符串中的字母转成大小写。

String toUpperCase();

String toLowerCase();

2.5将字符串中的内容进行替换。

String replace(char oldChar,char newChar);

String replace(String s1,String s2);

2.6将字符串两端的空格去除。(开发中非常有用)

String trim();

2.7将字符串进行连接。

String  conat(String);

System.out.println("abc".concat("kk"));

System.out.println("abc"+"kk");//等效

2.8

System.out.println(String.valueOf(4)+1);

System.out.println(""+4+1);//等效 

3.判断

3.1两个字符串内容是否相同。

boolean equals(Object obj);

boolean equalsIgnoreCase(string str);//忽略大小写进行比较。

例:String s = "abc";

System.out.println(s.equals("ABC".toLowerCase()));

System.out.println(s.equalsIgnoreCase("ABC"));

3.2字符串中是否包含指定字符串。

boolean contains(string str);

3.3字符串是否以指定字符串开头,是否以指定字符串结尾。

boolean startsWith(string);

boolean endsWith(string);

4.比较: compareTo();

int compareTo(String anotherString)

System.out.println("a".compareTo("b"));//-1

System.out.println("a".compareTo("A"));//32

System.out.println("abc".compareTo("bcd"));//-1

5.intern();对字符串池进行操作的。(开发一般不用。)

String s1 = new String("abc");

String s2 = s1.intern();//池中有就使用,池中没有就建立。

System.out.println(s1==s2);//false

通过new创建不在常量池中。

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

StringBuffer:就是字符串缓冲区。

用于存储数据的容器。

特点:

1.长度可变。

2.可以存储不同类型数据。

3.最终要转成字符串进行使用。

4.可以对字符串进行修改。

既然是一个容器对象。应该具备什么功能呢?

1.添加:

StringBufferappend(data); short和byte不能添加。

StringBufferinsert(index,data);

2.删除:

StringBufferdelete(start,end):包含头不包含尾。

StringBufferdeleteCharAt(int index):删除指定位置的元素。

清空缓冲区。缓冲区还在。

sb.delete(0,sb.length());

3.查找。

charAt(index);

int indexOf(string);

int lastIndexOf(string);

4.修改

StringBufferreplace(start,end,string);

voidsetCharAt(index,char);

增删改查;CURD create update read delete

设置长度:setLength(int);

反转:reverse();

StringBuffer--可变长度数组:

数组是固定长度的。

可变长度原理:会创建新数组,复制原数组内容到新数组。

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

StringBulider:JDK1.5之后出现,线程不同步,效率更高。

功能用法和StringBuffer一样。

Stringbuffferx线程是同步的。通常用于多线程。

StringBulider线程不同步。通常用于单线程,他的出现提高效率。

 

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

System类:

常见方法:

longcurrentTimeMillis();获取当前时间的毫秒值。

返回当前时间与协调世界时1970年1月1日午夜之间的时间差。

voidexit(int status);终止正在运行的Java虚拟机。

PropertiesgetProperty();确定当前的系统属性。

存储的键和值都是字符串类型,所以没有指定泛型。

给系统设置一些属性,这些属性是全局的。

setProperties(String key,String value);调用Hashtable的方法put。

重点:获取系统中的回车符。

private static final String LINE_SEPARATOR = System.getProperty("line.separator");

public class SystemDemo {Privatestatic final String LINE_SEPARATOR = System.getProperty("line.separator");public static void main(String[] args) {long l1 = 1355364853755l;System.out.println(l1);//1355364853755long l2 = System.currentTimeMillis();//获取当前时刻。System.out.println(l2-l1);Properties prop = System.getProperties();Set<String> nameSet = prop.stringPropertyNames();for(String name : nameSet){String value = prop.getProperty(name);System.out.println(name+":::"+value);}System.out.println("hello"+LINE_SEPARATOR+"world");}}


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

Runtime:没有构造方法摘要,说明该类不可以创建对象,

又发现还有非静态的方法。说明该类应该提供静态的返回该类对象的方法。

而且只有一个,说明Runtime类使用了单例设计模式的完成。

如果一个类没有提供构造函数,并且这个类具备着一般非静态方法,这个类至少有一个静态方法,返回本类对象。

public class RunTimeDemo {public static void main(String[] args) throws IOException {Runtime r = Runtime.getRuntime();//execute:执行Process p = r.exec("notepad.exe c:\\javaheima.txt");//使用指定程序,解析指定文件。p.destroy();//杀掉进程}}


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

Math类提供了操作数学运算的方法,都是静态的。

celi();返回大于参数的最小整数。double d1 = Math.ceil(12.56);

floor();返回小于参数的最大整数。double d2 = Math.floor(12.56);

round();返回四舍五入的整数。double d3 = Math.round(12.56);

max(int a,int b);返回int值中较大的一个。

pow(double a,double b);返回a的b次方。

random();返回介于0.0和1.0之间的double值。

double d = Math.ceil(Math.random()*10);

Random r = new Random();

for(int i = 0 ; i < 10; i++){

int d = r.nextInt(6)+1;

System.out.println(d);

}

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


long time = System.currentTimeMillis();

System.out.println(time);//1355392030148

Date date = new Date();//将当前日期和时间封装成Date对象

System.out.println(date);//Thu Dec 13 17:44:05 CST 2012

Date date2 = new Date(1355370753558l);//将指定毫秒值封装成Date对象。

System.out.println(date2);//Thu Dec 13 11:52:33 CST 2012

日期对象和毫秒值之间的转换:

毫秒值-->日期对象:

1.通过Date对象的构造方法new Date(time);

2.通过setTime设置。

可以通过Date对象的方法对该日期中的各个字段进行操作。

日期对象-->毫秒值:

1.getTime方法。

可以通过具体的数值进行运算。

boolean after(Date when);

boolean before(Date when);

compareTo(Date anotherDate);

对日期对象进行格式化。

将日期对象-->日期格式的字符串。

使用的是DateFormat类中的format方法。

例:

Date date = new Date();

//获取日期格式对象。具备着默认的风格。FULL LONG MEDIUM SHORT等可以指定风格。

DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG);//不包含时间

dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);

//自定义风格。

dateFormat = new SimpleDateFormat("yyyy--MM--dd");

//使用DateFormat的format方法格式化日期对象,返回String类型

String str_date = dateFormat.format(date);

System.out.println(str_date);//2012--12--13

将日期格式的字符串-->日期对象。

使用的是DateFormat类中的

例:

String str_date = "2012---12---13";

DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG);

dateFormat = new SimpleDateFormat("yyyy---MM---dd");

Date date = dateFormat.parse(str_date);

System.out.println(date);

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

Calendar:示例

public class CalendarDemo {public static void main(String[] args) {Calendar c = Calendar.getInstance();c.set(2012,3,15);c.add(Calendar.YEAR, 2);//在年字段上偏移两年。int year = c.get(Calendar.YEAR);int month = c.get(Calendar.MONTH)+1;//月份从0开始int day = c.get(Calendar.DAY_OF_MONTH);String week =getweek(c.get(Calendar.DAY_OF_WEEK));System.out.println(year+"年"+month+"月"+day+"日 "+week);}private static String getweek(int i) {String[] week = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};return week[i];}}



-----------android培训java培训、java学习型技术博客、期待与您交流! ------------