数据类型和运算符(2019-05-12)

2019-05-13  本文已影响0人  侦探小柯南

Java语言是一门强类型语言。其中这个强的含义包含两方面:

1. 所有变量必须先声明、后使用
2. 指定类型的变量只能接受类型与之匹配的值。

强类型语言的优点:

能够在编译过程中发现源代码的错误,从而保证程序更加健壮。

注释

java提供了三种注释方式:

注释类型 语法
单行注释 // 注释内容
多行注释 /*注释内容*/
文档注释 /** 注释内容 */

标识符和关键字

标识符规则

标识符就是用于给程序中变量、类、方法命名的符号。Java语言的标识符必须以字母、下划线( _ )、美元符号($)开头,后面可以跟任意数目的字母、数字、下划线( _ )和美元符号($)。此处的字母并不局限于26个字母,而且可以包含中文字符、日文字符等。

命名案例:
H$_123我们是好孩子.java(创建的类)

  package annotationtest;

  public class H$_123我们是好孩子 {

      public static void main(String[] args) {
          System.out.println("Hello ");
      }

  }

    运行程序的输出结果是:Hello

所以java程序是可以使用中文命名的,不过还是应该避免使用中文字符(用中文是不是有点low啊)。

标识符命名规则:

1.标识符可以由字母、数字、下划线(_)和美元符号($)组成,其中数字不能开头。
2. 标识符不能是Java关键字和保留字。
3.标识符不能包含空格。
4.标识符只能包含美元符号($),不能包含"@"、"#"等其他特殊字符。

Java 关键字

Java语言中有一些具有特殊用途的单词被称为关键字(keyword),当定义标识符时不要让标识符和关键字相同,否则将引起错误。

//使用boolean关键字 作为标识符 将会报错
int boolean;

数据类型分类

java程序基本数据类型种类以及内存占用表:

数据类型 所属分类 内存占用
byte 整型 1字节(8bit)
short 整型 2字节(16bit)
int 整型 4字节(32bit)
long 整型 8字节(64bit)
float 浮点型(单精度) 4字节(32bit)
double 浮点型(双精度) 8字节(64bit)
boolean 布尔型 java规范未指定
char 整型 2字节(16bit)

注1: bit是计算机中最小的数据单位,中文名被称作“位”
注2: char代表字符型,实际上字符型也是一种整型,相当于无符号整数类型

声明变量的语法:

 type varName[=初始值];

java语言支持的类型分为两类:基本类型(Primitive Type)和引用类型(Reference Type)。
基本类型又包括boolean型和数值类型。
数值类型有整数类型和浮点类型。
整数类型包括byte、short、char、int、long;浮点类型包括float和double。
引用类型包括类、接口和数组类型,还有一种特殊的null类型。

所谓引用数据类型就是对一个对象的引用,对象包括实例和数组两种。实际上,引用类型变量就是一个指针,只是Java云烟里不再使用指针这个说法。

空类型(null type)就是null值的类型,这种类型没有名称,因为null类型没有名称,所以不能声明一个null类型的变量或者转换到null类型。空引用(null)是null类型变量的唯一的值。空引用(null)可以转换为任何引用类型。

注意: 空引用(null)只能被转换成引用类型,不能转换成基本类型,为此不要把一个null值赋给基本数据类型的变量。

基本数据类型

int是最常用的整数类型,因此在通常情况下,直接给出一个整数值默认就是int类型。

必须指出的是:

  1. 如果直接将一个较小的整数值(在byte或者short类型的表数范围内)赋给一个byte或者short变量,系统会自动把这个值当做byte或者short类型来处理。
  2. 如果使用一个巨大的数值(超出了int类型的表数范围)时,Java不会自动把这个整数值当成long类型来处理。如果希望系统把一个整数值当成long类型来处理,应该在这个整数值后增加L或者l作为后缀。通常推荐使用L,因为英文字母l很容易跟数字1搞混。

注意:可以把一个较小的整数值(在int类型的表数范围以内)直接赋给一个long类型的变量,这并不是因为Java会把这个较小的整数值当成long类型来处理,Java依然把这个整数值当成int类型来处理,只是因为int类型的值会自动类型转换到long类型。

Java中的进制

进制类型 表示
二进制 0b、0B(java7增加的)
八进制 0
十进制
十六进制 0x、0X

提示:数字在计算机中是以二进制存在的,原码是直接将一个数值换算成二进制数字,单计算机以补码的形式保存左右整数。

补码的计算规则:原码除了符号位(最高位)取反得到反码,反码加1得到补码。(最高位是1代表是一个负数)

正如前面所指出的,整数值默认就是int类型,因此使用二进制形式定义整数时,二进制整数默认占32位,其中第32位是符号位,如果添加L作为结尾,就会占用64位,其中第64位是符号位。

字符型

字符型通常用于表示单个的字符,字符型值必须使用单引号(')括起来。Java语言使用16位Unicode字符集作为编码方式,而Unicode被设计成支持世界上所有书面语言的字符,包括中文字符,因此Java程序支持各种语言的字符。

字符型值有三种表示方式。

1. 直接通过单个字符来制定字符型值,例如‘A’,‘9’,‘0’等。

2. 通过转义字符表示特殊字符型值,例如‘\n’,'\t'等。

3. 直接使用Unicode值来表示字符型值,格式是'\uXXXX',其中XXXX代表一个十六进制的整数。Java语言中常用的转义字符如下表:
转义字符 说明 Unicode表示方式
\b 退格符 \u0008
\n 换行符 \u000a
\r 回车符 \u000d
\t 制表符 \u0009
\" 双引号 \u0022
\' 单引号 \u0027
\\ 反斜线 \u005e

字符型值也可以采用十六进制编码方式来表示,范围'\u0000''\uFFFF',一共可以表示65536个字符,其中前256('\u0000''\u00FF')字符和ASCII码中的字符完全重合。

由于计算机底层保存字符时,实际是保存该字符对应的标号,一次char类型的值亦可以直接作为整型值来使用,它相当于一个16位的无符号整数,表数范围是0~65535。

提示: char类型的变量、值完全可以参加加减乘除等数学运算,也可以比较大小——实际上都是用该字符对应的的编码与运算。

如果把0~65535范围内的一个int整数赋给char类型变量,系统会自动把这个int整数当成char类型来处理。

浮点型

类型:float和double

Java使用二进制的科学计数法来表示浮点数。对于float而言,第一位是符号位,接着8位是指数,最后23位表示尾数。对于都变了而言,第一位是符号位,后面11位是指数位,最后52位表示尾数。

因为java保存浮点数是使用科学计数法来表示,所以不会很精确,如果想要非常精确的保存浮点数应该使用BigDecimal类。

浮点数表示形式:

  1. 十进制数形式:5.12,512.0,.512,浮点数必须包含一个小数点,否则会被当做int类型处理。

  2.科学计数法形式: 例如5.12e2,5.12E2(这两个均表示5.12乘以10的平方)

值得指出的是,只有浮点类型才可以使用科学计数法表示,比如51200是int类型,但是512E2就是一个浮点型。

Java语言默认是double类型,如果希望Java把一个浮点型当成float,应该在浮点类型后面加一个F或者f。 5.12表示一个double类型,占64位内存空间,5.12f或者5.12F是float类型,占32位内存空间

此外java还提供了三个特殊的浮点值:

浮点值名称 可以通过什么运算得到 如何表示
正无穷大 使用一个正数除以0 通过Double和Float类的POSITIVE_INFINITY
负无穷大 使用一个负数除以0 通过Double和Float类的NEGATIVE_INFINITY
非数 0.0除以0.0或者对一个负数开方 通过Double和Float类的NaN

特别指出: 所有的正无穷大都相等,所有的负无穷大都相等,所有的非数和任何数值以及NaN都不相等

注意:只有浮点型和0相除才能得到正无穷大和负无穷大,因为Java会自动把0转型为浮点型0.0,如果一个int类型的值和0相除,会抛一个除以0异常。

持续更新中......

上一篇 下一篇

猜你喜欢

热点阅读