JAVA入门第二天

JAVA 基础语法(二)——基本数据类型转换以及运算符

  • 数据类型转换

    • 自动类型转换
    • 强制类型转换
  • 赋值运算符
  • 算术运算符
  • 关系运算符
  • 逻辑运算符

数据类型转换

Java 语言是一种强类型的语言。强类型的语言有以下几个要求:
1)变量必须有类型:要求声明变量时必须声明类型,而且只能在声明以后才能使用。
2)赋值时类型必须一致:值的类型必须和变量或常量的类型完全一致。
3)运算时类型必须一致:参与运算的数据类型必须一致才能运算。
但是在实际的使用中,经常需要在不同类型的值之间进行操作,这就需要一种新的语法来适应这种需要,这个语法就是数据类型转换。
在数值处理这部分,计算机和现实的逻辑不太一样,对于现实来说,1和 1.0 没有什么区别,但是对于计算机来说,1 是整数类型,而 1.0 是小数类型,其在内存中的存储方式以及占用的空间都不一样,所以类型转换在计算机内部是必须的。
Java 语言中的数据类型转换有两种:
1)自动类型转换:编译器自动完成类型转换,不需要在程序中编写代码。
2)强制类型转换:强制编译器进行类型转换,必须在程序中编写代码。

1)自动类型转换

自动类型转换,也称隐式类型转换,是指不需要书写代码,由系统自动完成的类型转换。由于实际开发中这样的类型转换很多,所以 Java 语言在设计时,没有为该操作设计语法,而是由 JVM 自动完成。

转换规则

从存储范围小的类型到存储范围大的类型。
具体规则为:

byte→short(char)→int→long→float→double

也就是说 byte 类型的变量可以自动转换为 short 类型,示例代码:

byte  b  =  10;
short  s  =  b;//这里在赋值时,JVM 首先将 b 的值转换为 short 类型,然后再赋值给 s。

注意问题:在整数之间进行类型转换时,数值不发生改变,而将整数类型,特别是比较大的整数类型转换成小数类型时,由于存储方式不同,有可能存在数据精度的损失。

2)强制类型转换

强制类型转换,也称显式类型转换,是指必须书写代码才能完成的类型转换。该类类型转换很可能存在精度的损失,所以必须书写相应的代码,并且能够忍受该种损失时才进行该类型的转换。

转换规则

从存储范围大的类型到存储范围小的类型。
具体规则为:

double→float→long→int→short(char)→byte

语法格式为:

需要转换到的类型 变量=(转换到的类型)需要转换的值;

1)整数强制转换为整数时取数字的低位,例如 int 类型的变量转换为 byte 类型时,则只去 int 类型的低 8 位(也就是最后一个字节)的值。
示例代码:

int  n  =  123;
byte  b  =  (byte)n;
System.out.println(b);//123
int  m  =  1234;
byte  b1  =  (byte)m;
System.out.println(m);//-46

b 的值还是 123,而 b1 的值为-46。b1 的计算方法如下:m 的值转换为二进制是10011010010,取该数字低8位的值作为b1的值,则b1的二进制值是11010010,按照机器数的规定,最高位是符号位,1 代表负数,在计算机中负数存储的是补码,则该负数的原码是 10101110,该值就是十进制的-46

2)小数强制转换为整数,采用的是“去 1 法”,也就是无条件的舍弃小数点的所有数字。

double  d  =  3.10;
int  n  =  (int)d;

这里将 double 类型的变量 d 强制转换成 int 类型,然后赋值给变量 n。采用“去1法”,结果是 3。

注意问题:强制类型转换通常都会存储精度的损失,所以使用时需要谨慎。


赋值运算符

1)赋值运算符: =

2)运算过程:

    先计算 “=” 右边的值,然后将值赋值给左边的变量。

3)案例:

int a=10+10;//计算10+10->20 然后将20赋值给int 型的变量a

4)扩展赋值运算符:

扩展运算符 名称 案例
+= 加等于 c+=b等价于c=c+b
-= 减等于 c-=b等价于c=c-b
*= 乘等于 c*=b等价于c=c*b
/= 除等于 c/=b等价于c=c/b
%= 取余等于 c%=b等价于c=c%b

代码案例:

    int a=5,b=2;a/=b;// 等价于a=a/b;可以理解为它的简写System.out.println(a);//2   

算术运算符

1)算术运算符:
算术运算符 名称 案例
+ 加法 int a=5,b=2,c;c=a+b;//c=7
- 减法 int a=5,b=2,c;c=a-b;//c=3
* 乘法 int a=5,b=2,c;c=a*b;//c=10
/ 除法 int a=5,b=2,c;c=a/b;//c=2
% 取余 int a=5,b=2,c;c=a%b;//c=1
(++) 自增1 int a=5;a++;//a=6
(- -) 自减1 int a=5;a- -;//a=4

2)自增(++)和自减(- -)

++ 和 – 既可以出现在变量的左边,也可以出现在右边,但结果是不同的

在左边:先进行自增或自减(运算),再赋值
在右边:先赋值,再进行自增或自减(运算)

代码案例:

int  a=5;
int  b=++a;
System.out.println(b);//6
System.out.println(a);//6
int  m=5;
int  n=m++;
System.out.println(m);//6
System.out.println(n);//5 

注意:一定要注意!自增和自减运算符只能用于操作变量不能直接用于操作数值或常量!例如 5++ 、 8– 等写法都是错误的!


关系运算符

关系运算符用于比较两个数值之间的大小,其运算结果为一个逻辑类型(boolean布尔类型)的数值。

关系运算符 名称 案例
‘>’ 大于 5>2 //true
‘<’ 小于 5<2;//false
‘>=’ 大于等于 5>=2;//true
‘<=’ 小于等于 5<=2;//false
‘==’ 等于 5==2;//false
‘!=’ 不等于 5!=2;//true

逻辑运算符

逻辑运算符要求操作数的数据类型为boolean类型,其运算结果也是boolean类型值。

参与逻辑运算的数据和逻辑运算符的运算结果是都是boolean类型。

1)逻辑运算符:

逻辑运算符 名称 案例
&& 逻辑与(短路与) true && false //false
ll 逻辑或(短路或) true ll false //true
! ! true //false
& 逻辑与 true & false //false
l 逻辑或 true l false //true
^ 逻辑异或 true ^ false //true

2)”&&(||)”与“&(|)”:

&和|运算是把逻辑表达式全部计算完,而&&和||运算具有短路计算功能。
对于&来说,如果左侧条件为false,也会计算右侧条件的值,而对于&&来说,如果左侧的条件为false,则不计算右侧的条件,这种现象被称作短路现象。

代码案例:
首先我们看 “&”

    int a=5,b=10;boolean  boo=a>b&a++>b;System.out.println(boo);//falseSystem.out.println(a);//6

显而易见,上例中结果是boo值为false,a的值是6,因为在 “&”的运算表达式中 ,右边有一个a的自增。那我们同样的代码看一下短路与“&&”

    int a=5,b=10;boolean  boo=a>b&&a++>b;System.out.println(boo);//falseSystem.out.println(a);//5

上例中a的值并没有进行自增,为什么呢?因为短路与“&&”的计算过程是系统从左至右进行逻辑表达式的计算,一旦出现计算结果已经确定的情况,则计算过程即被终止,所以上例中在运算符左端的值已经被判断为false,则因无论运算符右端的值为true或为false,其最终结果都为false,所以运算符右边的值并没有执行,也就是”a++”并没有执行。

注意:
1)两种逻辑与(&&和&)的运算规则基本相同,两种逻辑或(||和|)的运算规则也基本相同。它们所以运算过程略有差异,但是运算结果是一样的。
2)在程序设计时使用&&和||运算符,不建议使用&和|运算符。

3)逻辑运算符真值表:

A B A&&B AllB A&B AlB A^B !A
true true true true true true false false
true false false true false true true false
false true false true false true true true
false false false false false false false true

JAVA 基础语法(二)——基本数据类型转换以及运算符相关推荐

  1. java基础语法入门到类型转换问题,运算符,数据输入,数组,方法概述,Debug模式,以及10个小案例的详细介绍。

    java基础语法 目录 java基础语法 1. Java概述 1.1 Java语言发展史(了解) 1.2 Java语言跨平台原理(理解) 1.3 JRE和JDK(记忆) 1.4 JDK的下载和安装(应 ...

  2. 实验二 Java基础语法练习-基本数据类型、运算符与表达式、选择结构

    一. 实验目的及要求 目的: (1) 掌握各种变量的声明方式 (2) 掌握Java的基本数据类型.运算符与表达式的使用方法. (3) 理解Java的程序语法结构,掌握顺序结构.选择结构程序设计方法. ...

  3. Java基础知识点Day02--数据类型转换与运算符

    Day02 1.数据类型转换 1.1自动类型转换(隐式) 1.特点:代码不需要进行特殊处理,自动完成. 2.规则:数据范围从小到大. 1.2强制类型转换(显式) 1.特点:代码需要进行特殊的格式处理, ...

  4. 小白自学笔记——JAVA基础 2.3基本数据类型转换

    基本数据类型之间的运算规则 1.自动类型转换:当容量小的数据类型的变量与大容量的数据类型的变量做运算时,结果自动提升为容量大的数据类型. (说明:容量大小指表示数的范围的大小) - byte,shor ...

  5. JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)...

    Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中.用户能够通过指定数据类型和标识符来声明变量.其基本的语法为: DataType identifier; 或 Dat ...

  6. 02 Java基础语法(变量+数据类型+运算符)

    Java基础语法 2 基础语法 2.1 二进制(复习总结) 进制转换(二进制 八进制 十进制 十六进制) 2.2 变量 2.2.1 变量定义 2.2.2 使用变量 2.2.3 声明变量的3种方式 2. ...

  7. Java基础语法(三)——运算符

    文章目录 Java基础语法(三)--运算符 一.算术运算符 1.基本四则运算符 (1)练习 (2)注意事项 2.复合运算符 3.自增自减操作符 二.关系运算符 三.逻辑操作符 1.逻辑与&&a ...

  8. Java基础语法(二)——数据类型

    文章目录 Java基础语法(二)--数据类型 一.int 整型类型 1.基本语法格式 2.数值范围 3.未定义时变量的默认初始值 4.注意事项 二. long 长整型类型 1.基本语法格式 2.数值范 ...

  9. 第三次学JAVA再学不好就吃翔(part5)--基础语法之数据类型转换

    学习笔记,仅供参考 文章目录 JAVA基础语法 数据类型转换之隐式转换 数据类型转换之强制转换 JAVA基础语法 数据类型转换之隐式转换 byte类型转换为int类型 class TypeConver ...

  10. java基础语法(二)--单列模式

    java基础语法(二)--单列模式 /*** 功能:单列模式* @author Administrator**/ public class SingletonTest {public static v ...

最新文章

  1. 合适么?现在学ASP.NET Core入门编程……
  2. java 自定义注解
  3. 词云制作 Python
  4. java配置文件中的plugin,启用ContextReplacementPlugin以忽略webpack中的配置和测试设置文件...
  5. 《动物森友会》的社交分级,在虚拟世界设计舒适的社交氛围
  6. java实现细胞自动机_Java自动机实现
  7. 力扣53. 最大子序和
  8. BZOJ 1232 USACO 2008 Nov. 安慰奶牛Cheer
  9. 占空比50%的5分频 记事续 20110920
  10. java screenframe_一个关于JFrame的问题
  11. 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day8-面向对象
  12. 计算机基础竞赛知识试题,计算机基础知识及基本技能操作竞赛试题
  13. Qt android 开发环境搭建
  14. Metasploit 读书笔记
  15. 小牛性能服务器图片,小牛8玩游戏卡不卡? 实测后发现真不差
  16. html中怎样隐藏列,关于jquery:隐藏/显示HTML表中的列
  17. 加权贝叶斯matlab代码,使用贝叶斯优化进行深度学习
  18. 热式气体质量流量计检定规程_最佳实践:热式质量流量计实际标定的安全性和准确性...
  19. 小程序毕设作品之微信美食菜谱小程序毕业设计成品(3)后台功能
  20. 小笨狗的编程感悟(序言)

热门文章

  1. 使用DWN在Docker中进行渗透测试
  2. 【不能执行已释放的 sript 代码】 已解决 命名【疾风】
  3. css 绝对定位底部居中,css – 在另一个元素的中心下方水平居中绝对定位元素
  4. 计算机系统及原理pdf,计算机系统及工作原理教学设计.pdf
  5. mysql 升级 乱码_mysql3升级到mysql5解决乱码心得
  6. Java小程序的生命周期包括哪些阶段,servlet生命周期的4个阶段是什么?都有什么作用?...
  7. springboot集成redis_cluster两种方式
  8. Docker和CI/CD实战
  9. 32、剑指offer--把数组排成最小的数
  10. 【Qt开发】关于QWSServer