String小记

String类重点知识:

final

构造方法参数,可以是byte数组,char数组 int数组 String StringBuffer,StringBuilder

String类包括的方法可用于检查序列的单个字符,比较字符串,提取子字符串,创建字符串副本并将所有字符转换成大小写

charAt(index i)返回指定索引处的char

compareTo()按照字典顺序比较两个字符串

ConcatString s)将指定字符串连接到此字符串的结尾

Contains(s)当且晋档此字符串包含指定的char值 返回true

Endswith(s)测试此字符串是否是以指定的后缀结束

Equals()

indexOf()

isEmpty()

Length()

Matches()

toCharArray()

valueOf()

第二次

String str1=new String(“abc”);

String str2=”abc”;

虽然两个语句都是返回一个S听对象的引用,但是java对两者的处理方式不是一样的,对于第一种,java会马上在heap中创建一个String对象,然后将对该对象的引用返回给用户;对于第二种,java首先会在内部维护的String pool中通过Stringequals方法查找对象池中是否存放有该String对象,如果有,则返回已有的String对象给用户;使用第一种方法创建对象时,jvm是不会主动把改对象放到String pool里面的,除非程序调用SStringintern方法;

String类是字符串常量,是不可更改的常量,StringBuffer是字符串变量,对象是可以扩充和修改的StringBUilder一个可变的字符序列,但是不保证同步,该类被设计成StringBuffer的一个简易替换,用在字符串缓冲区,建议先采用该类,比StringBuffer要快

关于字符串的长度:等于字符串中unicode代码单元的数量

需要计算的是字节的长度:utf-8一个汉字是三个字节 GBK,GB2312的汉字占两个字节,ISO8859-1无法表示汉字,转向为问号;

计算一个字符是占用几个字节

先将该字符转换成String类型

String s=Character.toString(char c);

s.getBytes.length;

S.getBytes(“utf-8”).length


面试题:通过字节长度截取字符串;例如:我的Abc  取前三个字节,因为汉字占用两个字节,希望取出来是我的 而不是一个半汉字;

package test;


import java.io.UnsupportedEncodingException;
import java.util.ArrayList;


public class StringTest {
public static void main(String[] args) throws UnsupportedEncodingException{
String str="我的Abc中国";
System.out.println(mySubString(str,6));
}

public static String mySubString(String s,int byteLen) throws UnsupportedEncodingException {
StringBuilder sb=new StringBuilder();
char[] charStr=s.toCharArray();//转换为char数组
for(int i=0,j=0;i<charStr.length&&j<byteLen;i++) {
//将char字符转成string然后计算计算字符所占用的字节数
String  temp=Character.toString(charStr[i]);  
int len= temp.getBytes("GBK").length;
System.out.println(len);
if(len<2) {
j++;
}else {
j=j+2;
}
System.out.println(j);
sb.append(temp);
}
return sb.toString();
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值