Fork me on GitHub

java 运算

参数传递

Java 的参数是以值传递的形式传入方法中,而不是引用传递。

以下代码中 Cat cat的 cat是一个指针,存储的是对象的地址。在将一个参数传入一个方法时,本质上是将对象的地址以值的方式传递到形参中。因此在方法中使指针引用其它对象,那么这两个指针此时指向的是完全不同的对象,在一方改变其所指向对象的内容时对另一方没有影响。

如果在方法中改变对象的字段值会改变原对象该字段值,因为改变的是同一个地址指向的内容。

float 与 double

Java 不能隐式执行向下转型,因为这会使得精度降低。

1.5 字面量属于 double 类型,不能直接将 1.5 直接赋值给 float 变量,因为这是向下转型。

1.5f 字面量才是 float 类型。

隐式类型转换

因为字面量 1 是 int 类型,它比 short 类型精度要高,因此不能隐式地将 int 类型下转型为 short 类型。

但是使用 += 或者 ++ 运算符可以执行隐式类型转换。

 

 上面的语句相当于将 s1 + 1 的计算结果进行了向下转型:

switch

  • switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。
  • switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
  • case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
  • 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。
  • 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。
  • switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。

switch 不支持 long,是因为 switch 的设计初衷是对那些只有少数的几个值进行等值判断,如果值过于复杂,那么还是用 if 比较合适。

 

posted @ 2019-09-06 18:18  xbwang520  阅读(222)  评论(0编辑  收藏  举报