java里面byte数组转string和String字符串怎么转换

JAVA-字符串String常用方法 -
- ITeye技术网站
类常用方法
、字符串与字符数组之间的转换:
字符串转为字符数组:
字符数组转为字符串
PublicString(char[] value,int offset,int count)
public static void main(String args[]){
String str1 = "hello" ;
// 定义字符串
char c[] = str1.toCharArray() ;
// 将一个字符串变为字符数组
for(int i=0;i&c.i++)
// 循环输出
{System.out.print(c[i] + "、
System.out.println("") ;
String str2 = new String(c) ;
// 将全部的字符数组变为
String str3 = new String(c,0,3) ;
// 将部分字符数组变为
System.out.println(str2) ;
// 输出字符串
System.out.println(str3) ;
// 输出字符串
、字符串与字节数组之间的转换:
字符串转字节数组:
字符数组转字符串:
public String(byte[] bytes,int offset,int length)
public static void main(String args[]){
String str1 = "hello" ;
// 定义字符串
byte b[] = str1.getBytes() ;
// 将字符串变为数组
System.out.println(new String(b)) ;
// 将全部的数组变为字符串
System.out.println(new String(b,1,3)) ;
// 将部分的数组变为字符串
、字符串与整型数组间的转换:
{//字符串转为整型数组:
String s1="";
int n1[]=new int[s1.length()];
for(int i=0;i&n1.i++)
n1[i]=Integer. parseInt(String.valueOf(s1.charAt(i)));
//整型数组转为字符串:
int n2[]={1,2,3};
String s2="";
for(int i=0;i&n2.i++)
s2+=Integer.toString(n2[i]);
System.out.println(s2);
、获取给定的处的字符:
public static void main(String args[]){
String str1 = "java" ;
// 定义对象
System.out.println(str1.charAt(3)) ;
// 取出字符串中第四个字符
、按字典顺序比较两个字符串。
//区分大小写
//不区分大小写
{String s1="abc";
String s2="aBc";
//A的码为,的码为,所以
pareTo(s2)&0)
System.out.println("s1&s2");
pareTo(s2)==0)
System.out.println("s1==s2");
pareTo(s2)&0)
System.out.println("s1&s2");
、将此字符串与指定的对象比较:
考虑大小写
不考虑大小写
String s1 = "abcd";
String s2 = "Abcd";
System.out.println("s1是否等于//false
System.out.println("s1是否等于//true
、将指定字符串连接到此字符串的结尾:
{String s1="abc";
String s2="def";
System.out.println(s1.concat(s2));
、返回指定数组中表示该字符序列的:
data字符数组;返回:一个,它包含字符数组的字符。
字符数组。子数组的初始偏移量。子数组的长度;返回:一个,它包含字符数组的指定子数组的字符。
char[] c=new char[]{'a','b','c','d'};
System.out.println(String.copyValueOf(c));
/*返回有中所有元素构成的字符串,相当于
结果就是产生一个字符串
System.out.println(String.copyValueOf(c,2,2));
/*返回由中从下标的元素(就是)开始,长度为的元素构成的字符串,
结果就是产生一个字符串。
测试此字符串是否以指定的前缀开始
测试此字符串是否以指定的后缀结束
String str1 = "**HELLO" ;
// 定义字符串
String str2 = "HELLO**" ;
// 定义字符串
if(str1.startsWith("**"))
// 判断是否以“”开头
{System.out.println(str1+"以开头
if(str2.endsWith("**"))
// 判断是否以“”结尾
{System.out.println(str2+"以结尾
、大小写字母间的转换:
将中的所有字符都转换为小写
将中的所有字符都转换为大写
String s1 = "Hello";
System.out.println(s1.toLowerCase());//hello
System.out.println(s1.toUpperCase());//HELLO
、返回指定字符(字符串)索引:
返回指定字符字符串在此字符串中第一次出现处的索引
返回在此字符串中第一次出现指定字符字符串处的索引,从指定的索引开始搜索
返回指定字符字符串在此字符串中最后一次出现处的索引
返回指定字符字符串在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索
String s = "abcbade";
int n1=s.indexOf('a');
int n2=s.lastIndexOf('a');
System.out.println("n1="+n1+",n2="+n2);
int n3=s.indexOf('b',2);
int n4=s.lastIndexOf('b',3);
System.out.println("n3="+n3+",n4="+n4);
int m1=s.indexOf("bc");
int m2=s.lastIndexOf("ab");
System.out.println("m1="+m1+",m2="+m2);
返回参数的字符串表示形式。
返回参数的字符串表示形式。
返回数组参数的字符串表示形式。
返回数组参数的特定子数组的字符串表示形式。
返回参数的字符串表示形式。
返回参数的字符串表示形式。
返回参数的字符串表示形式。
返回参数的字符串表示形式。
返回参数的字符串表示形式。
char c[]={'a','b','c','d','e','f'};
int n=2011;
String s1=String.valueOf(c);
//字符或字符数组均可转换
String s2=String.valueOf(c,2,4);
String s3=String.valueOf(n);
//只有单个整型可转换,整型数组不行
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
、获取字符串长度():
String s="java";
System.out.println(s.length());
、判断字符串是否为空:
如果为,则返回;否则返回
String s1="";
String s2="java";
System.out.println(s1.isEmpty());
System.out.println(s2.isEmpty());
、去除字符串前后空格:
返回字符串的副本,忽略前导空白和尾部空白
String s1="
String s2="
String a="a";
String b="b";
System.out.println(s1.trim());
//返回“word”
System.out.println(a+s2.trim()+b);
//返回“”,为空字符串
、返回字符串的子串
返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。参数:起始索引(包括)。
返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的处开始,直到索引处的字符。因此,该子字符串的长度为。参数:起始索引(包括);结束索引(不包括)。
String s="java word";
System.out.println(s.substring(1));
//返回“”
System.out.println(s.substring(1,6)); //返回“”
、替换字符串:
返回一个新的字符串,它是通过用替换此字符串中出现的所有得到的
返回一个新的字符串,它是通过用替换此字符串中出现的所有得到的
String s="java";
System.out.println(s.replace('a','A'));
//返回“”
System.out.println(s.replace("ja","JA")); //返回“”
、拆分字符串:
根据给定正则表达式的匹配拆分此字符串
String s1="hellobbjavabword";
String[] s2=s1.split("b");
System.out.println(s2.length);
for(int i=0;i&s2.i++)
System.out.println("s["+i+"]="+s2[i]);
/*s[0]=hello ,s[1]= ,s[2]=java ,s[3]=word,
若里的参数重复出现多次去掉一个,剩下的为空字符串
如中出现,所以*/
String a="a";
String b="b";
System.out.println(a+s2[1]+b);//返回
浏览: 23769 次
来自: 深圳Java在多线程IO操作环境下如何高效的将Byte(二进制)数组转换成String以及根据位置获取其字符 - 清雾沁仙 - ITeye技术网站
博客分类:
本博客属原创文章,欢迎转载!转载请务必注明出处:/blog/854730
欢迎加入Heritrix群(QQ):
, Lucene/Solr群(QQ) :
慢慢的得开始考虑些底层的东西,以前微乎其微的一个小功能或许在今天就足已影响你程序的性能、效率等问题.就如现在碰到的,将一个Byte数组,转换成字符串,并且还可以动态的根据位置获取该位置的字符.如果在以往,可能简单的借用String几个方法就行.但换到今天,不得不考虑效率的问题.
这是我总结出来的一个转换类,也参考了开源机器爬虫Heritrix,主要借用Java的NIO来实现.代码和测试类如下:
import java.io.C
import java.io.UnsupportedEncodingE
import java.nio.ByteB
import java.nio.CharB
import java.nio.charset.C
import org.archive.io.CharSubS
* @contributor guoyun
public class ByteArrayToCharBufferAndString implements CharSequence,Closeable{
private CharBuffer charBuffer=
public static final String DEFAULT_ENCODING="ISO8859_1";
* @param buffer
* @param start
* @param size
* @param encoding
public ByteArrayToCharBufferAndString(byte[] buffer,long start,long size,String encoding){
charBuffer=byteArrayToCharBuffer(buffer,start,size,encoding);
private CharBuffer byteArrayToCharBuffer(byte[] buffer,long start,long size,String encoding){
ByteBuffer bb=ByteBuffer.wrap(buffer);
bb.position((int)start);
bb.limit((int)size);
Charset charset=
charset=Charset.forName(encoding);
} catch (RuntimeException e) {
charset=Charset.forName(DEFAULT_ENCODING);
return charset.decode(bb).asReadOnlyBuffer();
public char charAt(int index) {
return this.charBuffer==null?null:this.charBuffer.charAt(index);
public int length() {
return this.charBuffer==null?0:this.charBuffer.limit();
public CharSequence subSequence(int start, int end) {
return new CharSubSequence(this, start, end);
public void close() {
if(this.charBuffer!=null){
this.charBuffer.clear();
this.charBuffer=
public String toString() {
StringBuffer sb = new StringBuffer(length());
sb.append(this);
return sb.toString();
* @param args
* @throws UnsupportedEncodingException
public static void main(String[] args) throws UnsupportedEncodingException {
//String str="abcdefghijklmnopqrstuvwxyz";
String str="我宣布,中华人民共和国,成立了!中华人民共和国,从此站起来了!";
byte[] buffer=str.getBytes("UTF-8");
ByteArrayToCharBufferAndString test=
test=new ByteArrayToCharBufferAndString(buffer,0,buffer.length,"UTF-8");
System.out.println("转换成String:"+test.toString());
System.out.println("长度:"+test.length());
System.out.println("获取字符,位置5:"+test.charAt(5)+",位置15:"+test.charAt(15));
} catch (Exception e) {
e.printStackTrace();
if(test!=null){
test.close();
补充:本类只适用于与多线程IO操作环境下.如获取某个端口数据(传统的Socket请求响应)、IO.对于非以上环境这个类反而如有朋友说的那样,反而是浪费了.之前提到说借用NIO,所以没做这个说明.
这里借用网络爬虫打一个比方.爬虫一般一个URL对应一个线程去获取该URL资源.每个URL都从服务器的响应流里面读取字节到以上的byte数组.如果不采用NIO,则线程会一直等在读取字节流上面,影响性能.同时,每读取完一次byte数组就转换成String,则会产生垃圾,转换的String对象不能循环利用(String是final类型).所以以上这个类的作用就出来了,获取服务器响应字节流的时候,没有了线程等待.同时对获取到了的数据用该类包装后,该类对象还可以循环利用.
我也刚刚见识NIO的作用,对于底层也没多少经验.欢迎大家指教!很感谢!
更多文章、感悟、分享、勾搭,请用微信扫描:
论坛回复 /
(11 / 4822)
不知道LZ能否提供个你的NIO方法与String的性能对比数据,因为你有这样的环境,所以给个对比
public static String substring(int start,int end,String str)
byte[] bs =str.getBytes();
return new String(bs,start,end-start);
真的需要这么复杂吗?上面的不行?
没看懂你的这个类,是用来干啥的。
要是想把byte[]变成字符串,直接用new String(byteArray,charsetName)这样不好吗?
浏览: 502630 次
来自: 上海
浏览量:143127
MyHeritrixController这个类怎么写?
兄台,我导入sqlserver2012数据库时,一导入就报co ...
如果使用StoredMap,关闭之后 数据就没有了?73403人阅读
Android(13)
//string 转 byte[]
String str = &Hello&;
byte[] srtbyte = str.getBytes();
// byte[] 转 string
String res = new String(srtbyte);
System.out.println(res);
//当然还有可以设定
String str = &hello&;
byte[] srtbyte =
srtbyte = str.getBytes(&UTF-8&);
String res = new String(srtbyte,&UTF-8&);
System.out.println(res);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:208638次
积分:1890
积分:1890
排名:第13159名
原创:21篇
转载:89篇
评论:25条
(2)(1)(1)(2)(1)(1)(1)(3)(9)(5)(3)(4)(6)(11)(26)(13)(7)(6)(8)直接拿来用!超实用的Java数组技巧攻略
发表于 10:28|
作者夏梦竹
摘要:本文分享了关于Java数组最顶级的11大方法,帮助你解决工作流程问题,无论是运用在团队环境或是在私人项目中,你都可以直接拿来用。
本文分享了关于Java数组最顶级的11大方法,帮助你解决工作流程问题,无论是运用在团队环境或是在私人项目中,你都可以直接拿来用!&
0. &声明一个数组(Declare an array)
String[] aArray = new String[5];
String[] bArray = {"a","b","c", "d", "e"};
String[] cArray = new String[]{"a","b","c","d","e"};1. &在Java中输出一个数组(Print an array in Java)
int[] intArray = { 1, 2, 3, 4, 5 };
String intArrayString = Arrays.toString(intArray);
// print directly will print reference value
System.out.println(intArray);
// [I@7150bd4d
System.out.println(intArrayString);
// [1, 2, 3, 4, 5]2. 从数组中创建数组列表(Create an ArrayList from an array)
String[] stringArray = { "a", "b", "c", "d", "e" };
ArrayList&String& arrayList = new ArrayList&String&(Arrays.asList(stringArray));
System.out.println(arrayList);
// [a, b, c, d, e]3. 检查数组中是否包含特定值(Check if an array contains a certain value)
String[] stringArray = { "a", "b", "c", "d", "e" };
boolean b = Arrays.asList(stringArray).contains("a");
System.out.println(b);
// true4. 连接两个数组(&Concatenate two arrays)
int[] intArray = { 1, 2, 3, 4, 5 };
int[] intArray2 = { 6, 7, 8, 9, 10 };
// Apache Commons Lang library
int[] combinedIntArray = ArrayUtils.addAll(intArray, intArray2);5. 声明一个数组内链(Declare an array inline&)
method(new String[]{"a", "b", "c", "d", "e"});
6. 将数组元素加入到一个独立的字符串中(Joins the elements of the provided array into a single String)
// containing the provided list of elements
// Apache common lang
String j = StringUtils.join(new String[] { "a", "b", "c" }, ", ");
System.out.println(j);
// a, b, c7. 将数组列表转换成一个数组 (Covnert an ArrayList to an array)
String[] stringArray = { "a", "b", "c", "d", "e" };
ArrayList&String& arrayList = new ArrayList&String&(Arrays.asList(stringArray));
String[] stringArr = new String[arrayList.size()];
arrayList.toArray(stringArr);
for (String s : stringArr)
System.out.println(s);8. 将数组转换成一个集合(Convert an array to a set)
Set&String& set = new HashSet&String&(Arrays.asList(stringArray));
System.out.println(set);
//[d, e, b, c, a]9. 反向数组(Reverse an array)
int[] intArray = { 1, 2, 3, 4, 5 };
ArrayUtils.reverse(intArray);
System.out.println(Arrays.toString(intArray));
//[5, 4, 3, 2, 1]10. 删除数组元素(Remove element of an array)
int[] intArray = { 1, 2, 3, 4, 5 };
int[] removed = ArrayUtils.removeElement(intArray, 3);//create a new array
System.out.println(Arrays.toString(removed));One more – convert int to byte array
byte[] bytes = ByteBuffer.allocate(4).putInt(8).array();
for (byte t : bytes) {
System.out.format("0x%x ", t);
}英文出自:
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章}

我要回帖

更多关于 c byte数组转string 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信