2013-10-25 3 views
0

прекрасно работает при создании так:Создание строки из байт []

byte [] d = {1,2}; 
String ss = new String(d); 

Но терпит неудачу, если создать так:

String ss = new String({1,2}); 

или даже это:

String ss = new String({(byte)1,(byte)2}); 

Что проблема?

+2

Что компилятор говорит? – Ingo

ответ

3

String ss = new String(new byte[]{1,2});

String ss = new String({1,2}); не работает, потому что массивы не могут быть инициализированы просто делает {} блок. Для этого требуется new someThing[].

+1

Имейте в виду, что это хорошая практика для идентификации используемой кодировки, например. new String (новый байт [] {1, 2}, «UTF-8») - в противном случае эта команда является специфичной для платформы, используя стандартную кодировку платформы – rec

+0

@Rene Ну, это правильно, потому что она работает. Но вопрос был в том, почему код OP не работает. И причина этого - неправильный синтаксис. Вы, возможно, упомянули об этом. – Fildor

0
String ss = new String (array of bytes); 
we can pass here array of bytes but in 
String ss = new String({1,2}); {1 , 2} this is not an array and 
String ss = new String({(byte)1,(byte)2}); {(byte)1,(byte)2} this is also not an array 

So we can simply use 
String ss = new String(new byte[]{1,2}); 
Смежные вопросы