1,String类概述
①
String s1="abc"; s1是一个类类型变量,”abc”是一个对象,只要被“”都是对象。
s1=”kk”; s1指向另一个String类型变量。
字符串最大的特点就是一旦被初始化就不可以被改变。
② Strings1="abc";
String s2=new String(“abc”);
System.out.println(s1==s2); //false;-->比较的是地址
System.out.println(s1.equals(s2)); //true-->比较的是字符串
③
Strings1="abc"; à在内存中有一个对象
String s2=new String(“abc”); à在内存中有两个对象。
s1和s2的区别:
s1有一个对象
s2有两个对象
2,String类中常见的方法
①
Strings1=”abc”;
String s2=”abc”;
System.out.println(s1==s2);//true
“abc”存在于常量池中s2发现”abc”已经在内存空间后就不会再开辟空间所以s1 s2有相同的地址。
② 常见的操作:
“abcd”
1, 获取
1.1 字符串的长度 int length() 数组中是没有括号的,是数组的属性
1.2 根据位置,获取位置上的某个字符 char charAt(int index)
1.3 根据字符获取位置
int indexOf (int ch)接收的是ASCII码,返回ch第一次出现的位置
int indexOf (int ch,intfromIndex)从指定位置开始获取ch在字符串中出现的位置
int indexOf (String str)接收的是ASCII码,返回ch第一次出现的位置
int indexOf (Stringstr,int fromIndex)从指定位置开始获取ch在字符串中出现的位置
如果没有找到就会返回-1
lastInsexOf()……..同理但是角标是不会改变的
2, 判断
2.1 字符串中是否包含某一个子串。boolean contains()
特殊之处:indexOf(Str) 有:第一次位置, 无:-1 à可以用于判断包含关系。而且该方法既可以判断,也可以获取位置。
2.2字符串中是否有内容 boolean isEmpty ()
2.3字符串是否以指定内容开头 boolean startsWith()
2.4字符串是否以指定内容结尾 boolean endsWith()
2.5判断字符串内容是否相同 boolean equals()
2.6判断内容是否相同并忽略大小写boolean equalsIgnoreCase()
3,转换
3.1 将字符数组转成字符串。
构造函数:String(char[] chs) String(char[] , int offset, intcount)
静态方法:static String copyValueOf(char[] arr);
static String copyValueOf(char[] arr, intoffset, int count);
3.2 将字符串转成字符数组
char[] toCharArray()
3.3 将字节数组转成字符串
String(byte[]chs) String(byte[] , int offset, intcount)
3.4 将字符串转成字节数组
3.5将基本数据类型转成字符串
StringvalueOf(int)
StringvalueOf(double)
3+”abc”
4,替换
4.1替换 String replace(char oldChar,char newChar)
5,切割
String[] split(regex) 例:String[] arr=s.split(",");
6,子串
Stringsubstring(int beginIndex);
Stringsubstring(int beginIndex,int endIndex);à包含头不包含尾
7,转换,去除空格,比较
7.1将字符串转换成大写或者小写。
StringtoUpperCase()
StringtoLowerCase()
7.2将字符串两端的空格去除。
Stringtrim()只能去除头尾的空格
7.3对两个字符串进行自然顺序的比较。
intcompareTo(String)
3,StringBuffer
String对象一旦初始化不能被改变,而StringBuffer可以用于对字符串的修改。
StringBuffer是字符串缓冲区,是一个容器。
特点:
1, 长度可以改变
2, 可以字节操作多种数据类型
3, 最终通过toString()方法变成字符串
1,增
① StringBuffer append():
将指定数据作为参数存储到已有数据结尾处。à返回的都是同一个容器
② StringBuffer insert(index,数据)
可以将数据插入到指定index位置
StringBuffer sb=new StringBuffer();
StringBuffer sb1=sb.append(34);
sop(sb.toString());
sop(sb1.toString());
sop(sb==sb1); //true
2,删
StringBufferdelete(int start,int end); 包含头不包含尾
sb.delete(0,sb.length());//清空缓冲区
StringBuffer deleteCharAt(int index);
3,改
StringBuffer replace
(int start, int end, String str)
void setCharAt(int index,char ch);
4,查
char charAt(int index)
int indexOf(String str)
int lastIndexOf(String str)
int length()
String substring(int start,int end)
5, 反转
StringBufferreverse()
6, 将缓冲区中的数据存入到指定数组中指定的位置
voidgetChars(int start,int end,char[] chs,int start)
基本数据类型对象包装类
1,
byte Byte
short short
int Integer
long Long
Boolean Boolean
float Float
double Double
char Character
2,基本数据类型对象包装类最常见作用
用于基本数据类型和字符串类型之间的转换。
① 基本数据类型转成字符串
基本数据类型+” ”
基本数据类型.toString(基本数据类型值)
如:Integer.toString(34); 将整数34变成字符串”34”
② 字符串转成基本数据类型
基本数据类型包装类.parse基本数据类型(”数值”)
int num1=Integer.parseInt("123727");
long num2=Long.parseLong("123727872872878");
③ 进制之间的转换
toBinaryString()
toHexString()
toOctalString()
parseInt(“123”,10) 后面那个10是说明“”里的数字是什么进制的。
3,JDK1.5后的新特性
Integer x=new Integer(4);
Integer x=4;//新特性 4是对象à自动装箱
x=x+2; //直接进行运算à自动拆箱
Integer x=null;
Integer m=128;
Integer n=128;
sop(m==n);//false
Integer p=127;
Integer q=127;
sop(p==q);//true
当数值在byte范围内时,对于新特性,不会再开辟新的空间所以为127
而128时为false
---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! ----------------------