黑马程序员-String与StringBuffer、数值包装类、自动装箱拆箱
2013-10-18 02:30
465 查看
----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流!
----------------------
1、 String类
String 类的最大特点是:一旦初始化就不能改变。例如:
String s = “abc”;这里的s可以改变指向,但是”abc”不能做任何改变。
String类的构造方法:
public String () 创建一个内容为空的字符串对象。
Public String(Stringoriginal)创建一个内容为original的字符串对象。
public String(char[] value)
用字符数组创建字符串对象。
Public String(char[] value,int offset,int count)用字符数组的value[offset]至value[offset+count]创建字符串对象。
注意:
String s = new String(“good”);String s1 = newString(“good”);s!=s1因为s跟s1是两个不同的对象。
String s = “good”;String s2 = “good”; s1= s2;”good”是常量,被放在常量池中,在内存中只为它分配一次空间。
例如下面代码:
String主要方法:
1,获取:
1.1 获取字符串中字符的个数(长度).
Int length();
1.2 根据位置获取字符。
charcharAt(intindex);
1.3 根据字符获取在字符串中的第一次出现的位置.
intindexOf(intch)
intindexOf(intch,intfromIndex):从指定位置进行ch的查找第一次出现位置
intindexOf(Stringstr);
intindexOf(Stringstr,intfromIndex);
根据字符串获取在字符串中的第一次出现的位置.
intlastIndexOf(intch)
intlastIndexOf(intch,intfromIndex):从指定位置进行ch的查找第一次出现位置
intlastIndexOf(String str);
intlastIndexOf(String str,intfromIndex);
1.4 获取字符串中一部分字符串。也叫子串.
Stringsubstring(intbeginIndex, intendIndex)//包含begin不包含end。
Stringsubstring(intbeginIndex);
2,转换。
2.1 将字符串变成字符串数组(字符串的切割)
String[] split(String regex):涉及到正则表达式.
2.2 将字符串变成字符数组。
char[]toCharArray();
2.3 将字符串变成字节数组。
byte[] getBytes();
2.4将字符串中的字母转成大小写。
StringtoUpperCase():大写
StringtoLowerCase():小写
2.5 将字符串中的内容进行替换
String replace(char oldch,char newch);
Stringreplace(String s1,String s2);
2.6 将字符串两端的空格去除。
String trim();
2.7 将字符串进行连接。
Stringconcat(string);
3,判断
3.1 两个字符串内容是否相同啊?
booleanequals(Object obj);
booleanequalsIgnoreCase(string str);忽略大写比较字符串内容。
3.2 字符串中是否包含指定字符串?
booleancontains(string str);
3.3 字符串是否以指定字符串开头。是否以指定字符串结尾。
booleanstartsWith(string);
*boolean endsWith(string);
4,替换
String replace(oldchar,newchar);
5,切割
String[] split(regex);
6,子串。获取字符串中的一部分。
String substring(begin);
String substring(begin,end);
7,转换,去除空格,比较。
7.1 将字符串转成大写或则小写。
String toUpperCase();
String toLowerCase();
7.2 将字符串两端的多个空格去除。
String trim();
7.3 对两个字符串进行自然顺序的比较。
int compareTo(string);
String类练习题:
1、给定一个字符串数组,按照字典顺序进行从小到大的排序。
思路:(1)用选择或者冒泡都行。
(2)比较字符串直接用compareTo(Stringstr)方法。
代码如下:
2,一个子串在整串中出现的次数。
思路:
1,要找的子串是否存在,如果存在获取其出现的位置。这个可以使用indexOf完成。
2,如果找到了,那么就记录出现的位置并在剩余的字符串中继续查找该子串,
而剩余字符串的起始位是出现位置+子串的长度.
3,以此类推,通过循环完成查找,如果找不到就是-1,并对每次找到用计数器记录。
代码如下:
3,两个字符串中最大相同的子串。
思路:
1,既然取得是最大子串,先看短的那个字符串是否在长的那个字符串中。
如果存在,短的那个字符串就是最大子串。
2,如果不是呢,那么就将短的那个子串进行长度递减的方式去子串,去长串中判断是否存在。
如果存在就已找到,就不用在找了。
代码如下:
StringBuffer
StringBuffer:就是字符串缓冲区。
用于存储数据的容器。
特点:
1,长度的可变的。
2,可以存储不同类型数据。
3,最终要转成String进行使用。
4,可以对字符串进行修改。
既然是一个容器对象。应该具备什么功能呢?
1,添加:
StringBufferappend(data);
StringBufferinsert(index,data);
2,删除:
StringBufferdelete(start,end):包含头,不包含尾。
StringBufferdeleteCharAt(int index):删除指定位置的元素
3,查找:
char charAt(index);
intindexOf(string);
intlastIndexOf(string);
4,修改:
StringBufferreplace(start,end,string);
voidsetCharAt(index,char);
5、 反转:
StringBuffer reverse();
StringBuilder
jdk1.5以后出现了功能和StringBuffer一模一样的对象。就是StringBuilder
不同的是:
StringBuffer是线程同步的。通常用于多线程。
StringBuilder是线程不同步的。通常用于单线程。它的出现提高效率。
jdk升级的三要素:
1,简化书写。
2,提高效率。
3,增加安全性。
基本数据对象包装类
为了方便操作基本数据类型值,将其封装成了对象,是基本数据类型有了类的特性。
基本数据类型的包装类有:
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
Boolean Boolean
该包装对象主要用基本类型和字符串之间的转换。
基本类型--->字符串
1,基本类型数值+""
2,用String类中的静态方法valueOf(基本类型数值);
3,用Integer的静态方法valueO(基本类型数值);
字符串--->基本类型
1,使用包装类中的静态方法xxxparseXxx("xxx类型的字符串");*****
intparseInt("intstring");
long parseLong("longstring");
booleanparseBoolean("booleanstring");
只有Character没有parse方法
2,如果字符串被Integer进行对象的封装。
可使用另一个非静态的方法,intValue();
将一个Integer对象转成基本数据类型值。
自动拆箱与装箱
Jdk1.5之后java提供了对基本数据类型的自动装箱与拆箱功能。
例如:Integeri = 5;没有错误,java对基本数据int进行了自动的装箱,将其封装为Integer类型。
System.out.println(i);也不会出错,java会将Integer自动拆箱为int型。
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net
----------------------
1、 String类
String 类的最大特点是:一旦初始化就不能改变。例如:
String s = “abc”;这里的s可以改变指向,但是”abc”不能做任何改变。
String类的构造方法:
public String () 创建一个内容为空的字符串对象。
Public String(Stringoriginal)创建一个内容为original的字符串对象。
public String(char[] value)
用字符数组创建字符串对象。
Public String(char[] value,int offset,int count)用字符数组的value[offset]至value[offset+count]创建字符串对象。
注意:
String s = new String(“good”);String s1 = newString(“good”);s!=s1因为s跟s1是两个不同的对象。
String s = “good”;String s2 = “good”; s1= s2;”good”是常量,被放在常量池中,在内存中只为它分配一次空间。
例如下面代码:
package HeimaLerning; public class StringConDemo { /** * @param args */ public static void main(String[] args) { stringConsDemo(); } public static void stringConsDemo() { String s1= new String("good"); String s2= new String("good"); System.out.println(s1==s2);//false s1和s2是两个不同的对象 System.out.println(s1.equals(s2));//String 类重写了Object中的equals()方法,改为比较两个 //字符串的内容是否相同。 char[] arr = {'w','i','u','l'}; String s3 = new String(arr);//用字符数组建立字符串对象 String s4 = new String(arr,1,3);//将arr[1}到arr[3]作为字符串内容。 System.out.println(s3); System.out.println(s4); String s5= new String(); String s6 = ""; System.out.println(s5==s6); System.out.println(s5); System.out.println(s6);//内容相同。 byte[] brr = {97,95,56,12,34}; String s7 = new String(brr); System.out.println(s7); } }
String主要方法:
1,获取:
1.1 获取字符串中字符的个数(长度).
Int length();
1.2 根据位置获取字符。
charcharAt(intindex);
1.3 根据字符获取在字符串中的第一次出现的位置.
intindexOf(intch)
intindexOf(intch,intfromIndex):从指定位置进行ch的查找第一次出现位置
intindexOf(Stringstr);
intindexOf(Stringstr,intfromIndex);
根据字符串获取在字符串中的第一次出现的位置.
intlastIndexOf(intch)
intlastIndexOf(intch,intfromIndex):从指定位置进行ch的查找第一次出现位置
intlastIndexOf(String str);
intlastIndexOf(String str,intfromIndex);
1.4 获取字符串中一部分字符串。也叫子串.
Stringsubstring(intbeginIndex, intendIndex)//包含begin不包含end。
Stringsubstring(intbeginIndex);
2,转换。
2.1 将字符串变成字符串数组(字符串的切割)
String[] split(String regex):涉及到正则表达式.
2.2 将字符串变成字符数组。
char[]toCharArray();
2.3 将字符串变成字节数组。
byte[] getBytes();
2.4将字符串中的字母转成大小写。
StringtoUpperCase():大写
StringtoLowerCase():小写
2.5 将字符串中的内容进行替换
String replace(char oldch,char newch);
Stringreplace(String s1,String s2);
2.6 将字符串两端的空格去除。
String trim();
2.7 将字符串进行连接。
Stringconcat(string);
3,判断
3.1 两个字符串内容是否相同啊?
booleanequals(Object obj);
booleanequalsIgnoreCase(string str);忽略大写比较字符串内容。
3.2 字符串中是否包含指定字符串?
booleancontains(string str);
3.3 字符串是否以指定字符串开头。是否以指定字符串结尾。
booleanstartsWith(string);
*boolean endsWith(string);
4,替换
String replace(oldchar,newchar);
5,切割
String[] split(regex);
6,子串。获取字符串中的一部分。
String substring(begin);
String substring(begin,end);
7,转换,去除空格,比较。
7.1 将字符串转成大写或则小写。
String toUpperCase();
String toLowerCase();
7.2 将字符串两端的多个空格去除。
String trim();
7.3 对两个字符串进行自然顺序的比较。
int compareTo(string);
String类练习题:
1、给定一个字符串数组,按照字典顺序进行从小到大的排序。
思路:(1)用选择或者冒泡都行。
(2)比较字符串直接用compareTo(Stringstr)方法。
代码如下:
public static String[] sortString (String[] s) { String temp = null; for(int i = 0;i<s.length;i++) { for(int j= i+1;j<s.length;j++) { if(s[i].compareTo(s[j])>0) { temp = s[i]; s[i]= s[j]; s[j]= temp; } } } return s; }
2,一个子串在整串中出现的次数。
思路:
1,要找的子串是否存在,如果存在获取其出现的位置。这个可以使用indexOf完成。
2,如果找到了,那么就记录出现的位置并在剩余的字符串中继续查找该子串,
而剩余字符串的起始位是出现位置+子串的长度.
3,以此类推,通过循环完成查找,如果找不到就是-1,并对每次找到用计数器记录。
代码如下:
public static int countString (String str,String keyStr) { int num = 0; int index = -1; while((index = str.indexOf(keyStr))!= -1) { num++; str = str.substring(index+keyStr.length()); } return num; }
3,两个字符串中最大相同的子串。
思路:
1,既然取得是最大子串,先看短的那个字符串是否在长的那个字符串中。
如果存在,短的那个字符串就是最大子串。
2,如果不是呢,那么就将短的那个子串进行长度递减的方式去子串,去长串中判断是否存在。
如果存在就已找到,就不用在找了。
代码如下:
public static String maxSubString(String s1,String s2) { String max = (s1.length()>s2.length())?s1:s2; String min = (s1.length()>s2.length())?s2:s1; for(int i = 0;i<min.length();i++) { for(int prefix= 0, last= min.length()-i;last!=min.length()+1;prefix++,last++) { String sub = min.substring(prefix, last); if(max.contains(sub)) return sub; } } return null; }
StringBuffer
StringBuffer:就是字符串缓冲区。
用于存储数据的容器。
特点:
1,长度的可变的。
2,可以存储不同类型数据。
3,最终要转成String进行使用。
4,可以对字符串进行修改。
既然是一个容器对象。应该具备什么功能呢?
1,添加:
StringBufferappend(data);
StringBufferinsert(index,data);
2,删除:
StringBufferdelete(start,end):包含头,不包含尾。
StringBufferdeleteCharAt(int index):删除指定位置的元素
3,查找:
char charAt(index);
intindexOf(string);
intlastIndexOf(string);
4,修改:
StringBufferreplace(start,end,string);
voidsetCharAt(index,char);
5、 反转:
StringBuffer reverse();
StringBuilder
jdk1.5以后出现了功能和StringBuffer一模一样的对象。就是StringBuilder
不同的是:
StringBuffer是线程同步的。通常用于多线程。
StringBuilder是线程不同步的。通常用于单线程。它的出现提高效率。
jdk升级的三要素:
1,简化书写。
2,提高效率。
3,增加安全性。
基本数据对象包装类
为了方便操作基本数据类型值,将其封装成了对象,是基本数据类型有了类的特性。
基本数据类型的包装类有:
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
Boolean Boolean
该包装对象主要用基本类型和字符串之间的转换。
基本类型--->字符串
1,基本类型数值+""
2,用String类中的静态方法valueOf(基本类型数值);
3,用Integer的静态方法valueO(基本类型数值);
字符串--->基本类型
1,使用包装类中的静态方法xxxparseXxx("xxx类型的字符串");*****
intparseInt("intstring");
long parseLong("longstring");
booleanparseBoolean("booleanstring");
只有Character没有parse方法
2,如果字符串被Integer进行对象的封装。
可使用另一个非静态的方法,intValue();
将一个Integer对象转成基本数据类型值。
自动拆箱与装箱
Jdk1.5之后java提供了对基本数据类型的自动装箱与拆箱功能。
例如:Integeri = 5;没有错误,java对基本数据int进行了自动的装箱,将其封装为Integer类型。
System.out.println(i);也不会出错,java会将Integer自动拆箱为int型。
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net
相关文章推荐
- day7 常用类字符串处理类--String、StringBuffer、StringBuilder 自动装箱、拆箱 Object类 Java 的异常处理机制
- Java常用类包装类之自动装箱自动拆箱
- 黑马程序员:关于JAVA中的自动装箱拆箱
- 基本数据类型对象包装类和自动装箱自动拆箱技术
- Java中的基本类型与封装类型以及自动装箱、拆箱、String类型的解释
- Java包装类、自动装箱与拆箱知识总结
- Java基础之包装类的自动装箱和拆箱详解
- 【Java】Java包装类,Java的自动打包(装箱)与解包(拆箱)
- 黑马程序员_高新技术1(高级for,静态导入,可变参数,自动装箱拆箱,枚举)
- 黑马程序员——Java String、StringBuffer、StringBuilder、基本数据类型对象包装类
- 黑马程序员——String、StringBuffer、StringBuilder和基本数据类型包装类
- 黑马程序员_温习 高新技术一 (个人笔记)摘要(静态导入---可变参数----高级FOR循环---自动装箱(拆箱)----枚举----反射)
- 黑马程序员-java1.5自动装箱与拆箱
- 包装类、自动装箱、自动拆箱
- 黑马程序员__ 基本数据类型的自动拆箱和装箱
- 黑马程序员-自动装箱与拆箱
- 黑马程序员__静态导入 重载 重写 增强for循环 自动拆箱 自动装箱
- 黑马程序员——包装类,String,StringBuffer
- 黑马程序员_ java高新之自动装箱与拆箱(引入设计模式:享元模式)
- 黑马程序员----论String,StringBuffer,StringBuilder,基本数据类型对象包装类