2016-01-05 2 views
-7

Что означает «Без использования String API» означает? - это также символ строки?Является ли StringBuffer/StringBuilder частью String API?

Это вопрос для интервью:

  1. Написать метод, который принимает строку и возвращает логическое значение. Он должен возвращать True, если первый символ имеет верхний регистр. Вы не можете использовать API-интерфейсы String.

я могу легко сделать с помощью StringBuffer или StringBuilder.

+2

'Я могу легко сделать это с помощью StringBuffer или StringBuilder', это определенно неправильный подход –

+0

Я предполагаю, что String API относится ко всем методам в классе String, таким как' .charAt() ',' indexOf() '..etc – user3437460

+0

Добро пожаловать в StackOverflow. API-интерфейс String можно найти по адресу http://docs.oracle.com/javase/6/docs/api/java/lang/String.html. Можете ли вы написать логическую функцию без использования каких-либо методов на этой странице? – rajah9

ответ

3

В Java 8 (и Java 7 обновление 6+) вы можете сделать

// avoids using the API by calling native methods. 
public static Boolean isUpperCase(String c) { 
    Field value = String.class.getDeclaredField("value"); 
    value.setAccessible(true); 
    char[] array = (char[]) value.get(c); 
    char ch = array[0]; 
    return Character.isUpperCase(ch); 
} 

ИЛИ

public static Boolean isUpperCase(String c) { 
    int ch = new StringReader(c).read(); 
    return Character.isUpperCase(ch); 
} 

В классах, спроектированных с инкапсуляцией в виду, вы должны использовать API для класса ,

+0

В Java 8? Это также должно работать со старыми версиями (вплоть до java 1.4?). Почему вы возвращаете возвращаемое значение? И 'Field # get' возвращает' Object' btw, а не 'char []'. – Tom

+1

@Tom Before Java 7 update 6, String использует поле 'offset', поэтому вам нужно будет найти это, чтобы найти первый символ. Значения в коробке - это потому, что вопрос задан для 'Boolean' not' boolean' (я исправлю бросок, спасибо) –

+0

* «До обновления Java 7 6, String использовала поле смещения, поэтому вам нужно будет найти это, чтобы найти первого персонажа ». * Очень странно, но хорошо знать. – Tom

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