String_StringBuffer_StringBuilder_其他进制转成十进制_十进制转成其他进制

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------
【String类】
遇到问题先想功能,这功能应该是什么结果,按这结果的类型去查找
api可以查看方法版本
1:字符串是一个对象
2:字符串也是一个常量,不能被改变
3:s1和s2有什么区别?s1在内存中有一个对象。s2在内存中有两个对象
4:字符串有自已独特的equals判断内容是否相同
String s1 = "abc";
s1="kk"; 是s1指向变了,abc对象没变过,引用变了,但字符串内容没有变
String s1 = "abc";
String s3 = "abc";
String s2 = new String("abc");
String s4 = new String("abc");
System.out.println(s1==s2);//false
System.out.println(s1==s3); //true  //因为字符串在内存里面有个常量池,池里面有个数组,数组用来存取abc字符,常量池中已经有与abc相同的就不会创建了,
System.out.println(s1.equals(s2));//true
System.out.println(s2==s4);//false
System.out.println(s2.equals(s4));//true
字符串在内存里面有个常量池,池里面有个数组,数组用来存取abc字符,再次创建池中已经有与abc相同的就不会创建了,所以s1 s3都指向abc
方法区中有:静态区,非静态区(方法区),常量池;分别存放各自的代码
String类适用于描述字符串事物。它就提供了多个方法对字符串进行操作。
【获取】
int length():获取字符串的长度
char charAt(int index):获取指定位置上的字符
int indexOf(int ch):返回的是ch在字符串中第一次出现的位置。
int indexOf(int ch, int fromIndex) :从fromIndex指定位置开始,获取ch在字符串中出现的位置。
int indexOf(String str):返回的是str在字符串中第一次出现的位置。
int indexOf(String str, int fromIndex) :从fromIndex指定位置开始,获取str在字符串中出现的位置。
int lastIndexOf(int ch) :返回指定字符在此字符串中最后一次出现处的索引
String s1 = s1.concat("mm");将指定字符串连接到此字符串的结尾
str.charAt(4);//当访问到字符串中不存在的角标时会发生StringIndexOutOfBoundsException。
str.indexOf('m',3);//如果没有找到,返回-1.
str.lastIndexOf("a");//反向索引一个字符出现位置。从右向左找,但是角标不变
str.codePointAt(int index);//返回指定位置字符的ascii码
【判断】
字符串中是否包含某一个子串。判断字符串是否存在
boolean contains(str):
特殊之处:indexOf(str):可以索引str第一次出现位置,如果返回-1.表示该str不在字符串中存在。
所以,也可以用于对指定判断是否包含。
if(str.indexOf("aa")!=-1)而且该方法即可以判断,又可以获取出现的位置。
字符中是否有内容。boolean isEmpty(): 原理就是判断长度是否为0. ""是个对象 null是指向
字符串是否是以指定内容开头。boolean startsWith(str);
字符串是否是以指定内容结尾。boolean endsWith(str);
判断字符串内容是否相同。复写了Object类中的equals方法。boolean equals(str);
判断内容是否相同,并忽略大小写。boolean equalsIgnoreCase();
【转换】
将字符数组转成字符串。
构造函数:String(char[])
String(char[],offset,count):将字符数组中的一部分转成字符串。offset从第几个开始取count个
静态方法:
static String copyValueOf(char[]);
static String copyValueOf(char[] data, int offset, int count) 
static String valueOf(char[]):
将字符串转成字符数组。**
char[] toCharArray();不需要参数
将字节数组转成字符串。
String(byte[])
String(byte[],offset,count):将字节数组中的一部分转成字符串。
将字符串转成字节数组。
byte[]  getBytes():
将基本数据类型转成字符串。
static String valueOf(int)
static String valueOf(double)
//3+""==//String.valueOf(3);后者专业,前者麻烦
特殊:字符串和字节数组在转换过程中,是可以指定编码表的。
【替换】
String replace(oldchar,newchar);//如果要替换的字符不存在,返回的还是原串。
【切割】
String[] split(regex);
【子串】获取字符串中的一部分。
s.substring(2);//从指定位置开始到结尾。如果角标不存在,会出现字符串角标越界异常。
s.substring(2,4);//包含头,不包含尾。所有字符串s.substring(0,s.length());
【转换】去除空格,比较。
将字符串转成大写或则小写。
String toUpperCase();
String toLowerCase();
将字符串两端的多个空格去除。
String trim();
对两个字符串进行自然顺序的比较。
int compareTo(string);
String s1 = "acc";  abc  a1c
String s2 = "aaa";
s1.compareTo(s2);  //输出2
acc: a和a比相同,c和a比 99-97 = 2 它两比完顺序了后面就不用比了
a1c:  ..... , 1和a比 49-97 =-48
//练习去除字符串两端空格。
模拟一个trim方法,去除字符串两端的空格。
思路:
1,判断字符串第一个位置是否是空格,如果是继续向下判断,直到不是空格为止。
结尾处判断空格也是如此。
2,当开始和结尾都判断到不是空格时,就是要获取的字符串

public static String myTrim(String str)
{
int start = 0,end = str.length()-1;

while(start<=end && str.charAt(start)==' ')
start++;

while(start<=end && str.charAt(end)==' ')
end--;

return str.substring(start,end+1);
}
【StringBuffer】
StringBuffer是字符串缓冲区。是一个容器。
缓冲区特点:
1,长度是可变化的。
2,可以字节操作多个数据类型。除了byte short
3,最终会通过toString方法变成字符串。
StringBuffer的append有两种数据类型没有byte short
1,存储。
StringBuffer append():将指定数据作为参数添加到已有数据结尾处。
StringBuffer insert(index,数据):可以将数据插入到指定index位置。
sb.insert(1,"qq");
2,删除。
StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。
sb.delete(1,3);
清空缓冲区。//sb.delete(0,sb.length());
StringBuffer deleteCharAt(index):删除指定位置的字符。
3,获取。
char charAt(int index) 
int indexOf(String str) 
int lastIndexOf(String str) 
int length() 
【String substring(int start, int end) 】返回String
4,修改。
StringBuffer replace(start,end,string);
void setCharAt(int index, char ch) ;
替换:
StringBuffer sb  = new StringBuffer("abcde");
//sb.replace(1,4,"java");把1到4替换成java,结尾不替换
//sb.setCharAt(2,'k');替换完不返回
5,反转。
StringBuffer reverse();
 
6、将缓冲区中指定数据存储到指定字符数组中。
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 
从字符串srcBegin开始到srcEnd存到dst中,从dst的dstBegin开始
JDK1.5 版本之后出现了StringBuilder.
StringBuffer是线程同步。
StringBuilder是线程不同步。效率高
升级三个因素:
1,提高效率。
2,简化书写。
3,提高安全性。
多线程用StringBuffer,单线程用StringBuilder(多线程的话自已加锁,建议用)
【基本数据类型对象包装类】
基本数据类型对象包装类。
byte Byte
short short
int Integer
long Long
boolean Boolean
float Float
double Double
char Character
基本数据类型对象包装类的最常见作用,
就是用于基本数据类型和字符串类型之间做转换
基本数据类型转成字符串。
基本数据类型+""
基本数据类型.toString(基本数据类型值);
如: Integer.toString(34);//将34整数变成"34";
十进制转成其他进制。
toBinaryString();
toHexString();
toOctalString();
其他进制转成十进制。
parseInt(string,radix);
int x= Integer.parseInt("110",2);
int x= Integer.parseInt("3c",16);
JDK1.5版本以后出现的新特性
Integer x = 4;//自动装箱。//new Integer(4)
x=x+2;//x 进行自动拆箱。变成成了int类型。和2进行加法运算。//再将和进行装箱赋给x。
原理:x = x/* x.intValue() */ + 2;
Integer x = null;//1.5之后多了个值null,键状性差一点,记住要判断
Integer m = 128;
Integer n = 128;
sop("m==n:"+(m==n));
Integer a = 127;
Integer b = 127;
sop("a==b:"+(a==b));//结果为true。因为a和b指向了同一个Integer对象。
//因为当数值在byte范围内容,对于新特性,如果该数值已经存在,则不会在开辟新的空间。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值