您的位置 首页 java

Java–数据类型和运算符

一.变量

1.什么是变量

变量指的是程序运行时可变的量. 相当于 开辟一块内存空间来保存一些数据

Java中每个变量必须 先声明,再赋值 ,然后才能使用。

Java 中的变量有四个基本属性:变量名,数据类型,存储单元和变量值

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

注意事项:

l 定义变量的格式:数据类型 变量名 = 初始化值

lI 变量是通过使用变量名来访问这块区域的

2. 变量的分类

3.变量的作用域

也就是该变量能生效的范围, java中一般是变量定义所在的代码块,c语言中一般是在变量定义的那个函数中。

分类:(1)形参(方法签名中定义的变量):作用域在 整个方法内 ;当类或对象调用某个方法时,系统会在该方法栈区为所有形参分配内存空间,并将实参的值赋给对应形参,这样就完成了形参的初始化;

(2) 方法局部变量(在方法内定义):作用域 从定义该局部变量的地方开始生效,到该方法结束时消失

(3)代码块局部变量(在代码块内定义):作用域 从定义该变量的地方开始生效,到该代码块结束时失效

4.常量

程序在执行过程中其 值是不可以改变的量 叫做常量。

Java中的常量: Java中常量是分两种的一种是字面值常量一种是面向对象常量,这篇文章只介绍字面值常量。

1).字符串常量 :双引号内包括的内容,特点是双引号内。

2).整数常量 : 所有整数

3).小数常量 :所有小数

4).布尔常量 :其值比较特殊,只有两个值一个是true(正确的),一个是false(错误的), 千万注意不能写错单词。

5).空常量 :null

6).字符常量 :单引号内包括的内容,只能是单个数字,单个字母或者单个字符。

※ 在这里提一下,java关键字中有一个final: final 具有“不可改变的”的含义,可以修饰 非抽象类、非抽象成员方法和变量。

二.数据类型

java中数据类型分为基本数据类型和引用数据类型,这篇博客主要介绍 八种基本数据类型 的使用和注意事项(数据范围和运算方法等)

数值型

整数类型

1.整型–int

语法格式:

其中,要注意变量名的设置

代码实例:

注意事项:

使用以下代码查看 Java 中的整型数据范围:

如果运算的结果超出了 int 的最大范围, 就会出现溢出的情况

2.长整型–long

语法格式:

代码示例:

注意事项:

使用以下代码查看 Java 中的长 整型数据范围 :

3.短整型–short

语法格式:

代码示例:

注意事项:

4.byte类型

取值范围分析

一直在想为什么不是 -128 到 128呢?今天分析了一下这个问题。

首先我们得明白一件事情,那就是 位运算规则

正数的最高位都是 0 ,正数的值就是二进制表示的值。

负数的最高位都是 1 ,负数的值是 取反后加一 然后加个负号得到得值。

浮点类型

1.单精度浮点型–float

语法格式:

代码示例:

2.双精度浮点型–double

语法格式:

代码示例:

※关于浮点型数据的除法运算

在 Java 中, int 除以 int 的值仍然是 int(会 直接舍弃小数部分 ).

如果想得到 0.5, 需要使用 浮点 类型计算(一般习惯上都使用double类型)

只要除数和被除数中有一个是浮点型,得数就是浮点型。

字符型–char

语法格式:

代码示例:

注意事项:

1.JAVA中,char占2字节,16位。可在存放汉字。

2.char赋值:可以是单个字符,也可以是整数(十进制、十六进制都可以,但是要注意范围: 0~65535

)输出的字符对应ascll码表。

3.char类型可以进行加减运算

从以上可以看出: char类型可以转换为int类型进行运算,但是int类型不可以转换为char类型。

布尔型–boolean

布尔类型通常被用在流程控制中,作为 判断条件

语法格式:

代码示例:

注意事项:

  1. 布尔类型是表示逻辑状态的类型。java语言通过关键字boolean来定义布尔类型变量。
  2. 只有true和false两个值,分别代表布尔逻辑中的“真”和“假”。
  3. Java语言虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。 在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替。

但是,要 注意boolea类型并不能和int类型的数据进行比较、赋值

三.基本数据类型转换规则

基本数据类型从小到大的顺序:

自动类型转换

也叫隐式类型转换: 小类型到大类型的转换

整数直接量可以直接赋值给byte、short、char,但不能超取值范围。

强制类型转换

也叫显式类型转换: 大类型到小类型的转换

注意事项:

四.运算符

Java运算符按功能可分为: 算数运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和条件运算符

算数运算符

算术运算符包括通常的 加(+)、减(-)、乘(*)、除(/)、取模(%)。

需要注意的是: 许多语言中的取模运算只能用于整数型,Java对此做了扩展,它允许对浮点数进行取模操作 。例如,3%2 的结果是 1, 15.2%5 的结果是 0.2。取模操作还可以用于负数,结果的符号与第一个操作数的符号相同,例如,5%-3 的结果是 2,-5%3 的结果是-2。

此外,算术运算符还有 自增“++” 自减“–” 两种。这两种运算符有前缀形式和后缀形式,含义有所不同。例如,i++ 和 ++i 的执行顺序是不一样的,i++ 在 i 使用之后再 +1,++i 在 i 使用之前先 +1。i– 和 –i 的情况于此类似。

注意:

关系运算符

关系运算符用来比较两个值,包括 大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==) 不等于(!=) 6种。

关系运算符都是二元运算符,也就是每个运算符都带有两个操作数,运算的结果是一个逻辑值( 关系运算符的表达式返回值都是boolean型 )。

Java允许“==”和“!=”两种运算符用于任何数据类型。

逻辑运算符

逻辑运算符包括 逻辑与(&&)、 逻辑或(||)和 逻辑非(!) 。前两个是二元运算符,后一个是一元运算符。

Java对逻辑与和逻辑或提供“ 短路 ”功能,也就是在进行运算时,先计算运算符左侧的表达式的值,如果使用该值能得到整个表达式的值,则跳过运算符右侧表达式的计算,否则计算运算符右侧表达式,并得到整个表达式的值。

  1. 对于 && , 如果左侧表达式值为 false, 则表达式的整体的值一定是 false, 无需计算右侧表达式.
  2. 对于 ||, 如果左侧表达式值为 true, 则表达式的整体的值一定是 true, 无需计算右侧表达式.

位运算符

位运算符用来对二进制位进行操作,包括按位 取反(~)、按位与(&)、按位或(|)、异或(^)、右移(>>)、左移(<<)和无符号右移(>>>)

位运算符只能对 整数型和字符型 数据进行操作。

1. 取反(~)

参加运算的一个数据,按二进制位进行“取反”运算。

运算规则:~1=0; ~0=1;

即:对一个二进制数按位取反,即将0变1,1变0。

2. 按位与(&)

运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;

即:两位同时为“1,结果才为“1,否则为0。

3. 按位或(|)

运算规则:0 | 0=0; 0 | 1=1; 1 | 0=1; 1 | 1=1;

即 :参加运算的两个对象只要有一个为1,其值为1。

4. 异或(^)

运算规则:0^0=0; 0^1=1; 1 ^0=1; 1^1=0;

即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。

异或(^)运算的骚操作:不创建第三个变量,交换两个变量的值;

5. 左移(<<)

运算规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。

可以看到3>>1以后变成了6, 有些时候可以用左位移运算符代替乘2的操作

思考一下:如果任意一个十进制的数左位移32位,右边补位32个0,十进制岂不是都是0了?当然不是!!! 当int 类型的数据进行左移的时候,当左移的位数大于等于32位的时候,位数会先求余数,然后再进行左移,也就是说,如果真的左移32位 12345 << 32 的时候,会先进行位数求余数,即为 12345<<(32%32) 相当于 12345<< 0 ,所以12345<< 33 的值和12345<<1 是一样的,都是 24690。

6. 右移(>>)

运算规则:按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃), 高位的空位正数补0,负数补1。

右移后得到的值 和int 类型的数据除以2取整所得的值一样,所以 有些时候也会被用来替代除2操作 ,但是 切记二者根本上是不同的不可混淆。

另外,对于超过32位的位移,和左移运算符一样,,会先进行位数求余数。

7. 无符号右移(>>>)

无符号右移运算符和右移运算符是一样的,不过无符号右移运算符在右移的时候是补0的,而右移运算符是补符号位的。

(对于源码、反码、补码不熟悉的同学,这里就不再进行补充了讲解了。)

计算机里的负数都是用补码(正数不变,负数符号位不变,真值部分取反,然后+1)表示的。

赋值运算符

赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量。

+= -= *= /= %= 叫增量赋值运算符

条件运算符

条件运算符( ? : )也称为 “三元运算符”或“三目运算符”。

语法格式: 布尔表达式 ? 表达式1 :表达式2。

※运算符的优先级

在对一个表达式进行计算时,如果表达式中含有多种运算符,则要安运算符的优先次序一次从高向低进行。运算符的优先次序如下:

文章来源:智云一二三科技

文章标题:Java–数据类型和运算符

文章地址:https://www.zhihuclub.com/172349.shtml

关于作者: 智云科技

热门文章

网站地图