Если вы используете контурную клавиатуру, как, например, клавиатуру Kinesis Advantage , легче печатать вслепую, так как намного легче чувствовать, где находятся ваши руки на клавиатуре, если она не не плоский Через пару дней я набрал текст значительно быстрее, чем на обычной клавиатуре. И есть также версия, переключаемая на макет Dvorak, хотя я никогда не пытался это попробовать.
О слепой печати: по моему опыту, знание того, где находятся ваши руки, является важной и трудной вещью для слепой печати - и после многих лет использования клавиатуры вы очень хорошо знаете, где находятся общие клавиши. Так что, просто концентрируясь время от времени, чтобы ваши руки находились в правильном положении для слепого набора текста, и чтобы набирать клавиши правым пальцем, вы попадете в слепой набор букв через пару месяцев без каких-либо дополнительных упражнений.
(источник: kinesis-ergo.com )
Оператор ==
сравнивает ссылки на объекты, а не значение String
s.
Для сравнения значений of String
s, используйте метод String.equals
:
"231".equals(parts[0]);
Это верно для любого другого объекта в Java - при сравнении значений всегда используйте равно
] вместо использования оператора ==
.
Метод equals
является частью Object
и должен быть переопределен классами, которые будут сравниваться в так или иначе.
Если строки не интернированы, то == проверяет идентичность ссылки. Вместо этого используйте:
"231".equals(parts[0]);
.
Используйте метод equals: parts [0] .equals ("231"). Оператор == сравнивает ссылки на объекты.
Следующее выводит «истина»;
String s = "231";
if(s == "231")
{
System.out.println("true");
}
else
{
System.out.println("false");
}
Это заключается в том, что строки не изменяемы, и java попытается сэкономить как можно больше места, поэтому он указывает на одну и ту же ссылку на память.
Однако следующее выводит «false»:
String s = new String("231");
if(s == "231")
{
System.out.println("true");
}
else
{
System.out.println("false");
}
new
принудительно это для сохранения строки в новом месте памяти.
Кстати, вы должны ВСЕГДА использовать .equals ()
для сравнения строк (для случаев, подобных этому)
==
в Java сравнивает адреса объектов (в данном случае строки).
Вы хотите parts [0] .equals ("231" )
Я подумал, что было бы полезно выразить ответ в тестовом примере:
public class String231Test extends TestCase {
private String a;
private String b;
protected void setUp() throws Exception {
a = "231";
StringBuffer sb = new StringBuffer();
sb.append("231");
b = sb.toString();
}
public void testEquals() throws Exception {
assertTrue(a.equals(b));
}
public void testIdentity() throws Exception {
assertFalse(a == b);
}
}
«==» сравнивает ссылки на объекты, в вашем случае «231» - это другой объект, чем parts [0].
Вы хотите использовать String.equals .
parts[0].equals("231")
Ответ очень просто: когда вы сравниваете строки с помощью оператора ==, вы фактически сравниваете, ссылаются ли две разные переменные на один объект String. И это не так, строка в массиве и вновь созданный "231" - это разные объекты String с одинаковым содержимым.
Правильнее будет использовать следующее выражение: «231» .equals (parts [0])
или «231» .equalsIgnoreCase (parts [0])
. Это даст вам то, что вам нужно, и вернет true, если эти объекты String содержат одинаковые значения.
Используйте метод equals для сравнения объектов:
String[] test = {"231", "CA-California", "Sacramento-155328", "aleee",
"Customer Service Clerk", "Alegra Keith.doc.txt"};
System.out.println("231".equals(test[0]));
Сравнение '==' сравнивает ссылки, а не значения.
Как уже объясняли многие другие, вы пытаетесь сравнить с оператором равенства, но тогда он будет полагаться на Object.equals () вместо String.equals ().
Итак, вы может выполнить эту работу, явно вызвав String.equals (), но вместо записи
parts[0].equals("blahblah")
я бы предпочел такой:
"blahblah".equals(parts[0])
Поскольку это позволяет избежать проверки потенциальной нулевой значимости частей [0] (но будьте осторожны, чтобы сама переменная частей могла иметь значение null ...)
Другой способ - использовать String.intern ():
if (parts[0].intern() == "blahblah") ...
См. http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String. html # intern () , чтобы узнать об этом подробнее.
Вы также можете использовать метод compareTo (String) :
String str = "test";
if( str.compareTo("test") == 0)
//the argument string is equal to str;
else
//the argument string is not equal to str;
Вот действительно хороший пример. Оператор «==» со строкой может быть действительно сложно в Java.
class Foo {
public static void main(String[] args) {
String a = "hello";
String b = "hello";
String c = "h";
c = c + "ello";
String operator = null;
if(a == b) {
operator = " == ";
} else {
operator = " != ";
}
System.out.println(a + operator + b);
if(a == c) {
operator = " == ";
} else {
operator = " != ";
}
System.out.println(a + operator + c);
if(a == "hello") {
operator = " == ";
} else {
operator = " != ";
}
System.out.println(a + operator + "hello");
if(c == "hello") {
operator = " == ";
} else {
operator = " != ";
}
System.out.println(c + operator + "hello");
}
}
, который будет производить последующие выхода:
hello == hello
hello != hello
hello == hello
hello != hello