Java基础(二):类型和运算

本文深入解析Java的基础语法,涵盖变量、常量、数据类型、类型转换、运算符等内容,帮助初学者掌握核心概念。

变量和常量

字面量和常量

常量:程序中固定不变的值,比如:具体的整数值:1,2,3 小数常量:3.14 等
定义的final变量:也被称之为常量

变量

变量的定义:表示存储空间,可以用来存放某一类型的常量,没有固定的值,并可以重复使用,同时也可以用来存储某种类型的未知数据。

特点

  • 占据内存中的某一块存储区域
  • 该区域有自己的名字(变量名)和类型(数据类型)
  • 可以被重复使用
  • 该区域的数据可以在同一类型的范围内不断变化(变量被不断的重新赋值)

变量的定义
格式:数据类型名 变量名; 变量名 = 值;
直接赋值:数据类型 变量名 = 值;

变量的分类和作用域

  • 成员变量:又称全局变量
  • 局部变量:除了全局变量就都是局部变量,根据定义的形式的不同分为三种:方法形参,方法内变量,代码块变量
  • 变量的作用域:指变量存在的范围,只有在这个范围内变量才有意义。当一个变量被定义时,作用域就被确定了。具体来说:范围在,定义开始到定义所在的花括号结束

变量使用规则

  • 必须先声明,再初始化之后才能使用
  • 声明时必须有数据类型
  • 在相同的作用域中不能定义具有相同变量名的变量

数据类型

数据类型和分类

在这里插入图片描述
1.基本类型:

  • 整数类型:byte,short,int,long
  • 小数类型:float,double
  • 字符型:char
  • 布尔型:boolean

2.引用类型

  • 接口
  • 数组

数据类型
在这里插入图片描述

整数类型

byte,short,int,long类型
整数类型常量的四种表现形式

  • 二进制表示:0B或0b开头(Java7新特性),如:int a = 0B110;
  • 八进制整数:以0开头,int a = 012;
  • 十进制整数:int a = 14;
  • 十六进制整数:要求0x或者0X 开头,如:int a = ox12;

默认整数值的类型为int

小数类型

float,double类型

  • float表示单精度类型
  • double表示双精度类型
  • 二者均不能表示精确的小数

默认的情况下一个浮点型的字面量默认是double类型的
注:BigDecimal可以表示精确的小数类型

字符类型

char类型:字符,字母,符号。表示16位的无符号整数或者Unicode字符,Java对字符采用Unicode编码,Java中的字符占据两个字节

最常用的引用类型String

除了八种基本数据类型,其他的都是引用类型,包括数组,类,接口,引用类型的默认值都是null
String表示一个类,表示字符串。可以使用“+”拼接字符串

数据过大和溢出

当要表示的数据超出数据类型的临界范围的时候,成为溢出。溢出情况发生时,程序并没有做数据范围检查处理,此时会出现数据紊乱情况。

 	int Max = 2147483647;
    Max += 1;
    System.out.println("Max = " + Max);  //输出的结果为:--2147483648

同理使用最小的int值 - 1 依旧会发生如上紊乱。

其中数据紊乱的原因可以参考下图:
在这里插
由上图可以看出,int类型的整个范围是一个闭环,在临界处进行运算会进行循环

基本数据类型转换

类型转换的规则

在这里插入图片描述
上图表示了一般的类型转换的规则:可以从小到大,不能从大到小(大小标准:数据类型范围)
自动类型转换
又称“隐式类型转换”:小数据范围类型的数据转换为大数据范围类型的类型。

强制类型转换
当把大范围数据类型的数值或变量赋给另一个小范围类型变量时,此时系统不能自动完成转换,需要加上强制转换符,但时这样的操作极易造成数据精度的降低和溢出,所以需要谨慎使用。

byte a = (byte) 256;//需要使用强转符号   输出的值为:0
byte a = 125;//因为int值在byte的范围之内,此时底层给自动转了,所以不需要使用强转符号 输出:125

注意

  • Boolean不属于数值类型,不参与转换
  • 一般的byte,short,char不参与转换操作,我们直接把byte,short,char直接赋给int类型。

运算符

算术运算符

在这里插入图片描述

System.out.println("5878 / 1000 * 1000"); //输出结果为:5000

几个比较重要的知识点

  • 正无穷大:一个正浮点数/整数除以0.0得到正无穷大
  • 负无穷大:一个负浮点数/整数除以0.0得到负无穷大
  • 所有的正/负无穷大都相等 例如:1/0 = 2/0;(虽然运行报错)
  • 0/0得到NaN 该值不与任何值相同,包括它自己

自增,自减
后置:先输出再运算

 int a = 5;
 System.out.println("a = "+a++);  //输出结果:5
 System.out.println("a = " + a);  //输出结果:6
 int c = a++; //此时a经过上面的运算已经变为了6
 System.out.println("c = " + c);  //输出结果:6
 System.out.println("a = " + a);  //输出结果:7

前置:先运算再输出

 int b = 5;
 System.out.println("b = " + ++b); //输出结果:6
 System.out.println("b = " + b);   //输出结果:6
 

赋值运算符

在这里插入图片描述

比较运算符

在这里插入图片描述

三元运算符

 int num = 2;
 num = num >= 2? 1 : 3;
 System.out.println("num = " + num);  //输出结果为1  

使用三元运算符在有返回值的方法中,可以对代码进行简化

逻辑运算符

在这里插入图片描述
&:表示并且,当操作数都为true时,结果为true否则结果为false
&&:表示并且,具有短路效果,当左边的数值为false时,不执行右边的值
|:表示或者,只要有一边为true即为true
||:表示或者具有短路效果,只要左边的为true,就不执行右边的操作数
^:异或 判断A和B是否相同,相同为false,不同为true
!: 取反,true的值为false,false值为true

位运算符

在这里插入图片描述
遵循规则:

  • & 参与运算的两个数,若对应位数的值都为1,则该位结果值为1,否则为0
  • | 参与运算的两个数,只要有一个值为1,就为1
  • ^ 参与运算的两个数相应位相同的结果为0,否则为1
  • ~ 表示把每个二进制的"1"换成"0",把"1"换成"0"
  • <<:将操作数的二进制码整体左移指定的位数,左移之后的空位使用”0“来填充;例如:1<<3 = 8 相当于122*2
  • ”>>“将操作数的二进制码整体左移指定的位数,移后的空位使用符号位来填充
System.out.println(-100>>2); //输出结果为:-25
System.out.println(100>>2); //输出结果为:25
  • ”>>>“无符号移位,将操作的二进制数码,整体右移指定位数,右移之后的空位使用”0“来补充。

运算符的操作优先级

在这里插入图片描述

总结

重要的知识点

  • Java的数据类型
  • 类型的转换(隐式,显式)
  • 运算符的优先级
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值