String类
String类的功能:用来操作字符串,一般的字符串的功能都在这里面,
1, 可以把任意对象和数组转化成字符串
字符串比较的区别?
1, == 对于两个对象的地址值作比较是否相等
2, Equals 判断两个对象的内容是否相等
字符串赋值的内存原理?
String s = “3434” 这种类型的是简化的,右边都是常量,不能改变的,如果再次赋值的也是再创建了一个,在内存中是不会消失的,在堆内存中因为。
String s = “3434”+”4”当这样的时候,前面的3434也是指的上面一个创建过的字符。如果常量在内存中有的话不会再创建只会引用这个常量,但如果是变量的话,就不同了,会在内存中再new一个新的变量出来,因为不是常量,所以是会变化的,不确定性。
String的方法:
1, 获取:
1, 获取字符串的长度:length();
2, 指定位置的字符。Char charAt(int index);
3, 获取指定字符的位置。索引不存在返回-1,所以通过返回值-1来判断一个字符不在在的情况。
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);
4,获取子串。
String substring(int start);//从start位开始,到length()-1为止。
String substring(int start,int end);//从start开始到end为止。//包含start不包含end
获取整串 substring(0,str.length());
2,判断
1, 字符串中包含指定的字符串吗?
Boolean contains(String substring);
2, 字符串是否以指定字符串开头?
Boolean startsWith(string);
3,字符串是否以指定字符串结尾啊?
boolean endsWith(string);
4,判断字符串是否相同
boolean equals(string);覆盖了Object中的方法,判断字符串内容是否相同。
5,判断字符串内容是否相同,忽略大小写。
boolean equalsIgnoreCase(string):
3 转换:
1,通过构造函数可以将字符数组或者字节数组转成字符串。
2,可以通过字符串中的静态方法,将字符数组转成字符串。
static String copyValueOf(char[] );
static String copyValueOf(char[],int offset,int count);
static String valueOf(char[]);
static String valueOf(char[],int offset,int count);
3,将基本数据类型或者对象转成字符串。
static String valueOf(char);
static String valueOf(boolean);
static String valueOf(double);
static String valueOf(float);
static String valueOf(int);
static String valueOf(long);
static String valueOf(Object);
4,将字符串转成大小写。
String toLowerCase();
String toUpperCase();
5,将字符串转成数组。
转成字符数组。
char[] toCharArray();
转成字节数组。
byte[] getBytes();//可以加入编码表。
6,将字符串转成字符串数组。切割方法。
String[] split(分割的规则-字符串);
7,将字符串进行内容替换。变成新字符串。
String replace(oldChar,newChar);
String replace(oldstring,newstring);
8,对字符串进行追加。
String concat(string);
StringBuffer和StringBuilder的区别?
StringBuffer安全是1.5以前的,StringBuilder高效,是升级以后的。里面的方法都一样两个都是容器,是缓冲区用来放相同类型的数据的,容器的长度可以改变。
1,添加。
StringBuffer append(data):在缓冲区中追加数据。追加到尾部。
StringBuffer insert(index,data):在指定位置插入数据。
2,删除。
StringBuffer delete(start,end);
StringBuffer deleteCharAt(index);
3,修改。
StringBuffer replace(start,end,string);
void setCharAt(index,char);
void setLength(len);
4,查找。
int indexOf(string);
int indexOf(string,int fromIndex);
int lastIndexOf(string);
int lastIndexOf(string,int fromIndex);
5,获取子串
string substring(start);
string substring(start,end);
6,反转。
StringBuffer reverse()
基本数据类型对象?
所以基本数据类型为了方便使用全部封装成了对象,对象有很多功能可以全用,而且类类型的对象可以当基本数据一样来用,有自动装箱和拆箱的功能,系统都自动完成了。如果使用基本数据类型除了跟变量一样的使用,还多了用对象调用方法的功能,方便很多了就。如果操作数据对象时超出了数值的范围,那么这个对象运算的结果不会是跟变量一样了,一但超出就会是字符串的运算模式去运行了。
public static void main(String[] args) {
byte by = (byte)234;//如果是小于-128~127之间的数不用强转;101 1011 1010 0000>>010 0100 0101 1111+1>>010 0100 0110 0000
Byte b = new Byte(by);//1110 1010>>0001 0101+1>>0001 0110溢出,在有效位之间的都置为1
System.out.println(b);//-22产生溢出,但是不会报错,也不会跑异常。
Byte bb = new Byte("234");
System.out.println(bb);
}
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
1,以上是所有基本数据类型和与之对应的对象,这些对象之间都可以与字符串相互转化。
可以用paserXXX(numstring)方法来转化。
3, 进制之间也可以转化十进制转成别的,或者别的进制转成十进制,用Integer里在的方法。
4, 将一个十进制整数转成其他进制。
转成二进制:toBinaryString
转成八进制:toOctalString
转成十六进制:toHexString》》System.out.println(Integer.toHexString(23));
8,toString(int num,int radix);将十进制转为任意进制。System.out.println(Integer.toString(28,8));//结果为34
9, 将其他进制转换十进制。
parseInt(string,radix);
System.out.println(Integer.parseInt("12", 8));//将八进制中的12转为十进制,结果为10