理解本文所需的知识水平:初学者。您正在学习 Java 语法任务,并且更接近其初始水平。
您刚刚开始学习 Java。你会被来自聚宝盆的术语轰炸。您加载了大量的技术信息,有时您会对三棵松树感到困惑。相信我,既然你已经涉足编程,事情就永远如此(此时,屏幕外响起一声不祥的笑声,一个安静的声音,中断了一半的话语,低声说道:“快跑……先救自己吧)”太晚了...”)。即使您是最好的开发人员,错误也会在您的余下编程生涯中困扰您。然而,这根本不像听起来那么可怕。
如果您刚刚开始学习 JavaRush,那么您很可能已经遇到了本文中提出的问题。无论如何,我们欢迎您提出评论来描述您在学习 Java 的头几个月中遇到的问题。 |
0 级问题:比较运算符 (==) 和赋值运算符 (=) 的混淆。
对于那些从其他编程语言转向的人来说,这是一个非常常见的问题。一般来说,从小学开始我们就已经习惯了
(=)
这是一个等号。可以用来记住的一个简单技巧是:如果您知道您只关心其中一个值(将一个值分配给另一个值),则使用单个“
=
”符号,否则如果您关心所有变量和值(你比较它们)你需要一个双“
==
”符号。
问题:使用比较运算符 (==) 测试字符串等效性
要做什么:请记住,
不能使用 来检查 Java 对象的等价性(==)
,因为该运算符旨在测试基本类型的相等性。
对于对象,您需要使用
.equals()
.
String
在 Java 语言中,它只不过是一个对象(和)
immutable
。
标记为的对象Immutable 是其状态在创建后无法更改的对象。在Java中,这意味着类的所有实例字段都被标记为final 和 是原语(或也immutable )。 |
问题:循环中的字符串连接
不要自己尝试这个!每次连接字符串时,都会创建一个新对象
String
(正如我们在上面发现的,字符串
immutable
是不可变的)。在某些时候,您将耗尽内存,或者程序将开始花费太多时间来完成。
解决方案。在循环中连接内容时使用
StringBuilder
替代方法。当需要对字符串进行大量更改时使用
String
该类。
StringBuilder
这些线与 不同
String
,不是
immutable
。
问题:空指针异常
null
当我们实际上需要一个真实的对象时 尝试使用空指针时,就会发生这种异常。
所有原始类型都有默认值。所以, yint 是0 , yboolean 是 false 。任何引用类型(即对象)的默认值为null 。它不是一个对象或类型,而是一个特殊的值。这本质上意味着“这里什么都没有”。 |
该怎么做:如果您的代码编写方式使得您的对象在某些时候可以接受该值
null
,则您需要添加“检查
null
”,特别是如果您不是自己创建该对象的话。还要记住,返回空集合比返回一组 更好
null
。为 getter 和 setter 添加验证也很好。
问题:由于某种原因 if / while / for 循环不起作用
if (something.equals («что-то еще»)); {
System.out.println («Почему я не работаю???»);
}
这是怎么回事?很简单:一个额外的分号已经让数十万新手 Java 程序员痛不欲生。好吧,之后你就不需要它了
if ()
。从语言的角度来看,这样的语法是完全可以接受的,因此编译器不会抱怨它。但它终止了条件语句,块内的代码
{}
永远不会满足上面的条件。
解决方案:记住设计逻辑。“
;
”标志意味着某个区块的结束,但这里一切才刚刚开始。
问题:尝试从静态方法(例如 main)访问非静态成员变量
解决方案。这个问题涉及到概念本身的理解
static
。如果一个方法标有这个词,则意味着我们不需要实例化该类来调用main方法。因此,解决办法就是充分理解“静力学”并理解其本质。
问题:尝试通过开发现有的库和工具来重新发明轮子
解决方案。其实这并不是什么大问题。对于初学者来说,这是一个更有用的练习。但是,如果您想关注结果,例如创建一个方便的订户数据库,那么在电话簿中搜索订户只是您的应用程序的结果之一。在这种情况下,就不需要编写二分查找算法了。使用现有的(我们向您保证,有人在您之前已经编写了它并且它位于标准库中)。所以研究一下Oracle文档中的Java标准库。学习 Google,习惯阅读 Stack Overflow 并提出有关
JavaRush 帮助的问题!……当然,这些并不是初学者的全部问题。在评论中描述一下你的吧!
您有兴趣阅读 Java 相关文章吗?加入 Java 开发人员小组。
这里有很多有趣的东西。
GO TO FULL VERSION