• ,

Класс String

  • Методы
  • Генерируем случайную строку
  • Сравнение строк: equals() или ==?

Класс String очень часто используется программистами, поэтому его следует изучить очень хорошо.

Следует помнить, что объекты класса String являются неизменяемыми. Поэтому, когда вам кажется, что вы меняете строку, то на самом деле вы создаёте новую строку. В Java есть специальные классы StringBuffer и StringBuilder, который допускают изменения в строке.

Классы String, StringBuffer, StringBuilder определены в пакете java.lang и доступны автоматически без объявления импорта. Все три класса реализуют интерфейс CharSequence.

Создать строку очень просто. Например, можно так:

String aboutCat = "Кот - это звучит гордо, а если наступить на хвост, то громко";


Можно создать массив строк:

String[] cats = {"Васька", "Барсик", "Мурзик"};


Можно создать пустой объект класса String:

String str = new String();


Можно создать строку через массив символов:

char[] chars = { 'c', 'a', 't' };
String str = new String(chars);


Есть ещё конструктор, позволяющий задать диапазон символьного массива. Вам нужно указать начало диапазона и количество символов для использования:

char[] chars = {'c', 'a', 't', 'a', 'm', 'a', 'r', 'a', 'n' };
String str = new String(chars, 0, 3);


Можно создать объект класса String из объекта классов StringBuffer и StringBuilder при помощи следующих конструкторов:

String(StringBuffer объект_StrBuf)
String(StringBuilder объект_StrBuild)


Операторы + и += для String


На языке Java знак плюс (+) означает конкатенацию строк (concatenation), иными словами — объединение строк.

String cat = "Кот";
String name = "Васька";
//складываем две строки и пробел между ними, чтобы слова не слиплись
String fullname = cat + "" + name; // получится Кот Васька


Если один из операндов в выражении содержит строку, то другие операнды также должны быть строками. Поэтому Java сама может привести переменные к строковому представлению, даже если они не являются строками.
  • ,

Ошибки начинающих java-программистов. Часть 2

9. Вызов нестатичных методов класса из метода main()


Входной точкой любой Java программы должен быть статичный метод main:
public static void main(String[] args) {
  ...
}


Так как этот метод статичный, нельзя из него вызывать нестатичные
методы класса. Об этом часто забывают студенты и пытаются вызывать
методы, не создавая экземпляр класса. Эту ошибку обычно допускают в
самом начале обучения, когда студенты пишут маленькие программы.

Ошибочный пример:
public class DivTest {
    boolean divisible(int x, int y) {
        return (x % y == 0);
    }

    public static void main(String[] args) {
        int v1 = 14;
        int v2 = 9;

        // на следующие строки компилятор выдаст ошибку
        if (divisible(v1, v2)) {
            System.out.println(v1 + " is a multiple of " + v2);
        } else {
            System.out.println(v2 + " does not divide " + v1);
        }
    }
}


Есть 2 способа исправления ошибки: сделать нужный метод статичным
или создать экземпляр класса. Чтобы правильно выбрать нужный способ,
задайте себе вопрос: использует ли метод поля или другие методы класса.
Если да, то следует создать экземпляр класса и вызвать у него метод,
иначе следует сделать метод статичным.
  • ,

Ошибки начинающих java-программистов. Часть 1

1. Имя класса отличается от имени файла, в котором он хранится.


Все используемые мною среды java, включая Javasoft JDKs, предполагают,
что исходный код класса с модификатором public хранится в файле с точно
таким же именем, как и имя класса, и расширением .java. Несоблюдение этого
соглашения может стать причиной многих проблем, которые выявятся во время
компиляции.

Начинающие студенты (программисты) часто забывают об этом соглашении,
и, например, задают имя файла в соответствии с заданием: Lab6.java.

Ошибочный пример: Имя файла Lab6.java -
public class Airplane extends Vehicle
  Seat pilot;
  public Airplane() { 
    pilot = new Seat(); 
  }
}


Исправленный пример: Имя файла Airplane.java -
public class Airplane extends Vehicle
  Seat pilot;
  public Airplane() { 
    pilot = new Seat(); 
  }
}


Заметьте: предполагается, что имя класса начинается с заглавной буквы. В
операционных системах, которые учитывают регистр символов в именах файлов,
могут появиться дополнительные проблемы, особенно у студентов, изучающих
Java под Unix, и привыкших к системе именования файлов в DOS. Класс
MotorVehicle должен храниться в файле MotorVehicle.java, но не в файле
motorvehicle.java.