2015-06-10 5 views
-1

В Java, почему невозможно преобразовать String в массив Char и наоборот?Строки - это не последовательность символов в java?

Почему они не сопоставимы?

char matrixC[][] = {{'s', 't','a', 'c','k'}, 
     {'o','v','e','r'}, 
     {'f','l','o','w'}}; 
String [] matrixS = {"stack", "over","flow"}; 

// matrixS=matrixC  //Not allowed...    

if (matrixS.equals(matrixC) || matrixC.equals(matrixS) ) 
{ 
    System.out.print("true"); 
} 
else 
    System.out.print("false");  //Output 

Отредактировано:

После некоторых исследований и копания, я нашел ответ на мой первый вопрос (почему это не представляется возможным преобразовать строку в массив Char и наоборот?) В ниже ссылка, как объясняется roger_that. Спасибо за подсказку Джеймс. Неизменное

String is immutable. What exactly is the meaning?

Итак, у нас есть отдельный бассейн Струнный в Java кучу, которая хранит и создает новые строковые литералы каждый раз, и направить их на строковые объекты соответственно.

Тем не менее, у меня есть некоторые сомнения по поводу их сравнения (я говорю о простой строки и последовательности Чар здесь, а не 2d массивы)

Почему не существует какой-либо стандартный и простой способ сравнить строку и Char SEQ? Один из способов может быть, char data [] = {'a', 'b', 'c'}; Строка str = "abc";

 if (str.length()==data.length && str.length()>0) 
     { 
     for (int i=0;i<str.length();i++) 
     { 
      if (str.charAt(i)!=data[i]) 
       System.out.println("not equal"); 
     } 
     } 
     else 
      System.out.println("not equal"); 

Есть ли другой простой/прямой способ сделать это, за исключением того,

char data[] = {'a', 'b', 'c'}; 
    String str="abc"; 
    String str1= new String(data); 
    if (str1.equals(str)) 
    System.out.println("equal"); 

Вывод:

Строки не последовательность символов в Java.

Они должны удалить эту строку отсюда https://docs.oracle.com/javase/tutorial/java/data/strings.html

Струны

Строки, которые широко используются в программировании Java, представляют собой последовательность символов . На языке программирования Java строки являются объектами.

Это линия, из которой началось мое замешательство. : |

Пожалуйста, исправьте мое понимание.

+4

Поскольку java.lang.String - это реальный объект, который не является эквивалентом char [], поэтому непосредственная проверка равенства была бы глупо. Посмотрите на https://docs.oracle.com/javase/8/docs/api/java/lang/String.html и потратите еще немного времени на книгу основ. – lscoughlin

+1

java String имеет метод toCharArray(), для чего это стоит. – swingMan

ответ

0

В C++ (что я догадываюсь, это то, из чего вы пришли) Строки хранятся в виде массивов символов. Это не так в Java. В java Строки - это неизменные объекты, а не Char [].

+0

Вы правы, что String _is not_ массив символов, но он сохраняет его содержимое в одном. – Tom

+0

Спасибо за подсказку Джеймс.Я уточнил вопрос с некоторыми сомнениями. – kingAm

Смежные вопросы