java标示符、关键字、变量、数据类型(及转换)

标示符
Java 中标识符是为方法、变量或其他用户定义项所定义的名称。标识符可以有一个或多个字符。在 Java 语言中,标识符的构成规则如下。
标识符由数字(09)和字母(AZ 和 a~z)、美元符号($)、下划线(_)以及 Unicode 字符集中符号大于 0xC0 的所有符号组合构成(各符号之间没有空格)。
标识符的第一个符号为字母、下划线和美元符号,后面可以是任何字母、数字、美元符号或下划线。
另外,Java区分大小写加粗样式

编码规范:类名首字母大写,方法名、变量名首字母小写。
提示:标识符命名时,切记不能以数字开头,也不能使用任何 Java 关键字作为标识符,而且不能赋予标识符任何标准的方法名。
标识符分为两类,分别为关键字和用户自定义标识符。

**关键字**是有特殊含义的标识符,如 true、false 表示逻辑的真假。
用户自定义标识符是由用户按标识符构成规则生成的非保留字的标识符,如 abc 就是一个标识符。

提示:使用标识符时一定要注意,或者使用关键字,或者使用自定义的非关键字标识符。此外,标识符可以包含关键字,但不能与关键字重名。
例如以下合法与不合法标识符。
合法标识符:date、KaTeX parse error: Expected group after '_' at position 13: 2011、_date、D_̲date 等。
不合法的标识符:123.com、2com、for、if 等。
标识符用来命名常量、变量、类和类的对象等。因此,一个良好的编程习惯要求命名标识符时,应赋予它一个有意义或有用途的名字。

变量
Java变量的定义:在程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来标识。这些内存单元被称为变量,定义的标识符就是变量名,内存单元中存储的数据就是变量的值。
变量特点
1. 内存中的一个存储区域
2.该区域有自己的名称(变量名)和类型(数据类型)和值
3. Java中每个变量必须先声明,再赋值,然后才能使用
4.该区域的数据可以在同一类型范围内不断变化
5.Java 中的变量有四个基本属性:变量名,数据类型,存储单元和变量值

变量名:合法的标识符
变量的数据类型:可以是基本类型和引用类型(必须包含类型)
存储单元:存储单元大小是由数据类型决定的,如:int 为4 个字节32 位
变量值:在存储单元中放的就是变量值(如果是基本类型放的就是具体值,如果是引用类型放的是内存地址,如果null,表示不指向任何对象)

使用变量注意
变量的作用域:一对{ }之间有效。出了大括号就不认识了。
初始化值
变量可以重复赋值,但不能重复声明,在同一个域中,变量名不能重复。

变量根据出现的位置可以分为两种:
1.局部变量,在方法体中声明的变量叫做局部变量。包括形式参数列表。
2.成员变量,在类体中,方法之外声明的变量统称成员变量。
常量
常量就是指在程序执行期间其值不能发生变化的数据,常量是固定的。如整型常量
123,实型常量1.23,字符常量’A’,布尔常量true等

数据类型

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

基本数据类型:
整数型: byte(1字节),short(2字节),int(4字节),long(8字节)
浮点型: float(4字节),double(8字节)
字符型:char(2字节)
逻辑型:boolean(1字节或4字节)
boolean b; b = false;

四、基本类型之间的转换

将一种类型的值赋值给另一种类型是很常见的。在Java中,boolean 类型与其他7中类型的数据都不能进行转换,这一点很明确。但对于其他7种数据类型,它们之间都可以进行转换,只是可能会存在精度损失或其他一些变化。

转换分为自动转换和强制转换:

自动转换(隐式):无需任何操作。

强制转换(显式):需使用转换操作符(type)。

将6种数据类型按下面顺序排列一下:

double > float > long > int > short > byte

如果从小转换到大,那么可以直接转换,而从大到小,或char 和其他6种数据类型转换,则必须使用强制转换。

1、自动转换

自动转换时发生扩宽(widening conversion)。因为较大的类型(如int)要保存较小的类型(如byte),内存总是足够的,不需要强制转换。如果将字面值保存到byte、short、char、long的时候,也会自动进行类型转换。注意区别,此时从int(没有带L的整型字面值为int)到byte/short/char也是自动完成的,虽然它们都比int小。在自动类型转化中,除了以下几种情况可能会导致精度损失以外,其他的转换都不能出现精度损失。

int–> float
long–> float
long–> double
float -->double without strictfp
除了可能的精度损失外,自动转换不会出现任何运行时(run-time)异常。
2、强制类型转换

如果要把大的转成小的,或者在short与char之间进行转换,就必须强制转换,也被称作缩小转换(narrowing conversion),因为必须显式地使数值更小以适应目标类型。强制转换采用转换操作符()。严格地说,将byte转为char不属于narrowing conversion),因为从byte到char的过程其实是byte–>int–>char,所以widening和narrowing都有。强制转换除了可能的精度损失外,还可能使模(overall magnitude)发生变化。强制转换格式如下:

(target-type) value;

如果整数的值超出了byte所能表示的范围,结果将对byte类型的范围取余数。例如a=256超出了byte的[-128,127]的范围,所以将257除以byte的范围(256)取余数得到b=1;需要注意的是,当a=200时,此时除了256取余数应该为-56,而不是200。

将浮点类型赋给整数类型的时候,会发生截尾(truncation)。也就是把小数的部分去掉,只留下整数部分。此时如果整数超出目标类型范围,一样将对目标类型的范围取余数。

五、表达式中的自动类型提升

除了赋值以外,表达式计算过程中也可能发生一些类型转换。在表达式中,类型提升规则如下:

· 所有byte/short/char都被提升为int。

· 如果有一个操作数为long,整个表达式提升为long。float和double情况也一样。

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值