您的位置:首页 > 编程语言 > Java开发

Java语法基础看这篇就够了

2017-05-24 23:24 302 查看
  在最近几年的流行开发语言评比中,Java 一直稳居榜首。这不仅取决于 Java 自身拥有很多优点极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程之外,还因为 Java 的生态环境建设比较好,比如它也是我们常用的安卓操作系统的开发一级语言(当然,未来有可能被 Kotlin 取代)。

  不管怎么样,了解 Java 是有必要的,下面我们就来梳理一下 Java 的语法知识点。其中涵盖数据类型、变量、常量、运算符、选择语句、循环语句、数组、类、引用、方法等。本文希望以总结的方式进行阐述,方便开发人员日后查阅。

1. 数据类型

  跟 C/C++ 有些不一样,Java 的数据类型分为基本数据类型和引用数据类型。

1.1 基本数据类型

  Java 的基本数据类型分四类,共八种,分别是:

逻辑型(boolean)

字符型(char)

整数型(byte、short、int、long)

浮点型(float、double)

  其中,boolean 类型的值只有 true 和 false 两种逻辑值(不能用0或非0的整数代替 true 和 false)。char 类型表示字符常量,是使用单引号括起来的字符,例如
char c1 = 'a'
char c2 = '我'
。由于 Java 字符采用 Unicode 编码,所以每个字符占两个字节。

  【注意:这里指的是在 Java 内存中 char 是两个字节,但是保存到文件中时每个字符占多少个字节则取决于文件的字符编码。】

  整数型和浮点型可以统称为数值数据类型,各种数值数据类型的范围及存储大小如下表所示。

类型名范围存储大小
byte-27(-128) ~ 27-1(127)8位带符号数
short-215(-32768) ~ 215-1(32767)16位带符号数
int-231(-2147483648) ~ 231-1(2147483647)32位带符号数
long-263 ~ 263-164位带符号数
float负数范围:-3.4028235E+38 ~ -1.4E-45
正数范围:1.4E-45 ~ 3.4028235E+38
32位,标准IEEE 754
double负数范围:-1.7976931348623157E+308 ~ -4.9E-324
正数范围:4.9E-324 ~ 1.7976931348623157E+308
64位,标准IEEE 754
  细心的你可以发现,除了 boolean 类型之外,其他七种数据类型都有明确的存储大小,那么 boolean 类型在 Java 中占用多少个字节呢?

  经测试发现:

boolean a=true;
// boolean型的a在JVM中占4个字节,即32bit

boolean[] b = new boolean[10];
// boolean数组b中的每一个boolean在JVM中占1个字节,即8bit


  实际上,在《Java虚拟机规范》一书中有描述:“虽然定义了 boolean 这种数据类型,但是只对它提供了非常有限的支持。在 Java 虚拟机中没有任何供 boolean 值专用的字节码指令,Java 语言表达式所操作的 boolean 值,在编译之后都使用 Java 虚拟机中的 int 数据类型来代替,而 boolean 数组将会被编码成 Java 虚拟机的 byte 数组,每个元素 boolean 元素占8位”。

  这样我们就可以解释上面的测试,得出 boolean 类型占了单独使用是4个字节,而在数组中又是1个字节的结论。

  至于 boolean 类型为什么是1个字节或4个字节,其实是运算效率和存储空间之间的博弈。而对于开发者来说,我们只要记住 Java 的 boolean 类型的值只能是 true 或 false 即可。

1.2 引用数据类型

  Java 有五种引用类型(对象类型),分别是:类(class)、接口(interface)、数组(Array)、枚举(enum)、标注(Annotation)。

  类引用可以是 Java 库中的类,也可以是自己创建的类。Java 中常见的类有:Object、String、Date、Void 等,并且上面所说的八种基本数据类型都有相应的封装类,如下表所示。

基本数据类型封装类
booleanBoolean
charCharacter
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
  需要注意的是,Java 中的数组属于引用类型,其创建的是对象。例如:
int[] a = new int[5];
,a 就是 int 型数组对象。

  (接口、枚举、标注会在其它文章进行描述。)

1.3 数据类型转换

(未完待续)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: