黑马程序员_字符串、字符串缓冲区和基本类型包装类
来源:互联网 发布:pc蛋蛋大小算法 编辑:程序博客网 时间:2024/05/16 05:39
---------------------- android培训、java培训、期待与您交流! ----------------------
1、String(概述)
1、字符串是一个特殊的对象。字符串是一个常量,一旦初始化就不可以被改变。
例如:String s1 =“abc”; s1是一个类类型变量,“abc”是一个对象。
2、创建字符串:
1:使用String类的构造方法。
如:String s = new String(“abc”);
2:用已创建的字符串创建另一个字符串。
如:String s = new String(“abc”); String tom = new String(s);
3:String(chara[])用一个字符数组a创建一个字符串对象。
如:char a[] = {‘a’,’b’,’c’}; String s = new String(a);
4:String(chara[], int startIndex, int count)提取字符串数组a中的一部分字符创建一个字符串对象,参数startIndex和count分别指定在a中提取字符的起始位置和从该位置开始截取的字符个数。
如:char a[] = {‘s’,’t’,’b’,’u’,’s’,’n’}; String s = new String(a,2,3); s的字符串是”bus”
3、判断地址值问题:
1:用new关键字:JVM会马上在堆中开辟新的空间,所以地址值一定不同。
2:赋值形式:JVM会默认的把新生成的String对象放到缓冲区(即String池:在JVM的工作过程中,会创建一片的内存空间专门存入String对象,这片内存空间叫做String池。)中,然后每次判断String池中是否已经有了这个对象,如果有了,那么后建立的同样字符值的String对象也会指向最初建立是该字符值对象的地址。否则创建新的String对象,放到String池里面。
4、在字符串中:==判断地址 .equals() 判断内容是否相同
以前equals都是判断地址值,为何在字符串这儿判断内容了呢?
因为String类覆写了Object类中equals方法,该方法用于判断内容是否相同。
5、String s1 = “abc”;和String s2 = new String(“abc”);有什么区别?
s1在内存中有一个对象。s2在内存中有两个对象。
2、String(常见功能-获取、判断、转换、替换、切割、比较和去除空格)
方法区中有方法区,静态区,常量池(字符串就存放这儿)。
1、获取
1:获取字符串的长度,即:字符串中包含的字符数。注:数组的长度是属性:.length
int length()
2:根据位置获取位置上某个字符。
char charAt(int index)
3:根据字符获取该字符在字符串中的位置。
注:int ch是字符的ASCII码形式。没有检索到返回-1。
int indexOf(int ch):返回字符ch在字符串中第一次出现的位置。
int indexOf(int ch, int fromIndex):返回字符ch在字符串中第一次出现的位置,从指定位置开始。
int indexOf(String str):返回字符串str在字符串中第一次出现的位置。
int indexOf(String str, int fromIndex):返回字符串str在字符串中第一次出现的位置,从指定位置开始。
int lastIndexOf(int ch):返回字符ch在字符串中最后一次出现的位置。
注:其他三个的last方法同理。
2、判断
1:字符串中是否包含某一个子串。
boolean contains(str);
特殊之处:indexOf(str):如果返回-1,表示该str不在字符串中存在。所以,也可以用于对指定字符串判断是否包含。既可以判断包含,也可以获取位置。
2:字符串中是否有内容。
boolean isEmpty():当且仅当length()为0时返回true。
3:字符串是否是以指定内容开头。
boolean startsWith(Stringprefix);
4:字符串是否是以指定内容结尾。
boolean endsWith(String prefix)
5:判断字符串内容是否相同。覆写了Object类中的equals方法。
boolean equals(str);
6:判断内容是否相同,并忽略大小写。
boolean equalsIgnoreCase(str);
3、转换
1:将字符数组转成字符串。
构造函数:String(char[])
String(char[], offset,count):将字符数组中的一部分转成字符串。
静态方法:staticString copyValueOf(char[]);
static String copyValueOf(char[],offset, count):同理一部分。
static StringvalueOf(char[]):同理
2:将字符串转成字符数组。**
char[] toCharArray();
3:将字节数组转成字符串。
构造函数:String(byte[])
String(byte[], offset,count):将字节数组中的一部分转成字符串。
4:将字符串转成字节数组。**
byte[] getBytes();
5:将基本数据类型转成字符串。
static String valueOf(int i);当然,括号里还可以换很多种。
示例:3+””; //String.valueOf(3);
6:将字符串转成大写或则小写。
String toUpperCase();大
String toLowerCase();小
注:字符串和字节数组在转换过程中,是可以指定编码表的。
4、替换
String replace(oldChar, newChar);
注:如果要替换的字符不存在,返回的还是原串。
当然还可以直接替换字符串。
5、切割
String[] split(regex);
示例:String s = ”zhangsan,lisi,wangwu”;
String[] arr = s.split(”,”);
for(int x = 0; x<arr.length;x++)
{ System.out.println(arr[x]);}
6、子串
获取字符串中的一部分。
String substring(beginIndex);从指定位置开始到结尾。
String substring(beginIndex, endIndex);注:不包括endIndex处所对应的字符。
7、比较
对两个字符串进行自然顺序的比较。
int compareTo(string);
int compareToIgnoreCase(string);忽略大小写。
注:该比较基于字符串中各个字符的 Unicode 值。
如果参数字符串等于此字符串,则返回值 0;
如果此字符串按字典顺序小于字符串参数,则返回一个小于 0的值;
如果此字符串按字典顺序大于字符串参数,则返回一个大于 0的值。
示例:String s1 =“adc”;
String s2 = “aba”;
System.out.println(s1.compareTo(s2));
d的Unicode值比b的大,后面就不比了,s1>s2。返回差值。
8、去除空格
将字符串两端的多个空格去除。
String trim();
3、StringBuffer(常见功能-存储、删除和修改)
字符串的组成原理就是通过该类实现的。
StringBuffer可以对字符串内容进行增删。
StringBuffer是一个容器。 buffer就是缓冲区的意思。
很多方法与String相同。
StringBuffer是可变长度的。
缓冲区的特点:
1:长度是可变的。
2:可以直接操作多个数据类型。
3:最终会通过toString方法变成字符串。
注:数组也是容器,但是长度是不可变的,而且一次只能操作一种数据类型。
1、存储
StringBuffer append():将指定数据作为参数添加到已有数据结尾处。
StringBuffer insert(index,数据):可以将数据插入到指定index位置。
2、删除
StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。
StringBuffer deleteCharAt(index):删除指定位置的字符。
3、获取
有一个特殊的地方:substring方法返回的是一个String类型。
4、修改
StringBuffer replace(start,end,string);不包含end。
void setCharAt(int index,char ch);替换一个字符。
5、反转
StringBuffer reverse();
6、将缓冲区中指定数据存储到指定字符数组中。
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin);不包含尾。
另:java升级无外乎三点:提高效率、简化书写、提高安全性。
JDK1.5版本之后出现了StringBuilder。
StringBuffer是线程同步。安全。
StringBuilder是线程不同步。效率高。建议单线程用。
其实他俩就是有锁没锁的问题。
以后开发建议使用StringBuilder。
4、基本数据类型对象包装类
1、基本数据类型包装类(引用数据类型):Byte、Short、Integer、Long、Float、Double和Character类。
2、Integer
1:整数类型的最大值
Integer.MAX_VALUE
3、基本数据类型对象包装类的最常见作用:
就是用于基本数据类型和字符串之间做转换。
1:基本数据类型转成字符串。
基本数据类型+””
static String toString(基本数据类型值);
2:字符串转成基本数据类型。
静态方法:如:static int parseInt(String);
非静态方法:如:Double.valueOf(String).doubleValue();
进制之间转换。
1:十进制转成其他进制。
static String toBinaryString(基本数据类型值); 二进制
static String toHexString(基本数据类型值); 十六进制
static StringtoOctalString(基本数据类型值); 八进制
2:其他进制转成十进制。
如:static int parseInt(string,radix);
4、JDK1.5版本以后出现的新特性。
1:Integer x = new Integer(4);
可以直接这样写:Integer x = 4; //自动装箱。
这样可以直接运算:x = x + 2;
注:x进行自动拆箱(原理:x.intValue())。变成int类型,和2进行加法运算。
再将和进行封箱赋给x。
得确保x不为空的前提下运算。因为有这样的情况x = null;
2:如:Integer a = 127;
Integer b = 127;
则,a==b的结果为true。因为a和b指向了同一个Integer对象。
因为:当数值在byte范围内时,对于新特性,如果该数值已经存在,则不会再开辟新的空间。
本节知识点:
1、字符串的特殊点以及常见功能。
2、字符串缓冲区的特点以及常见功能。
3、基本数据类型对象包装类以及它的作用。
4、JDK1.5版本以后出现的一些新特性。
---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net
- 黑马程序员_字符串、字符串缓冲区和基本类型包装类
- 黑马程序员_字符串和包装类
- 黑马程序员_字符串缓冲区
- 黑马程序员---字符串和基本数据类型对象包装类
- 黑马程序员_基本类型与包装类
- 黑马程序员——Java之字符串与基本类型包装类
- 黑马程序员——java基础(字符串、基本类型包装类)
- String、字符串缓冲区、基本数据类型包装类
- 黑马程序员——字符串,基本数据类型对象包装类
- 黑马程序员--06.基本数据类型的包装类--【Integer类】【字符串和基本数据类型的包装类】
- 黑马程序员--字符串缓冲区
- 黑马程序员_基本数据类型包装类
- 黑马程序员_基本数据类型包装类
- 黑马程序员_基本数据类型包装类
- 黑马程序员_基本数据类型包装类
- 黑马程序员_String和基本类型对象包装类总结
- 黑马程序员--字符串缓冲区StringBuffer 和 StringBuiler
- 包装类、基本类型和字符串之间转换1
- 公斑马跨界爱上母驴 产下“斑驴”
- 修改JQuery中 和 ExtJS 中Ajax的响应时间
- hdu 2190 悼念512汶川大地震遇难同胞——重建希望小学
- 编译器及IDE原理初探
- Openfire插件开发(1)
- 黑马程序员_字符串、字符串缓冲区和基本类型包装类
- HDU2084 数塔
- Android反射机制实现与原理
- Wikioi-1217-借教室
- HDU1003 Max Sum
- iOS 使用 Core Plot 绘制统计图表入门
- VLAN原理详解
- Android 4.3 发布,支持 OpenGL ES 3.0
- HDU1087 Super Jumping! Jumping! Jumping!