栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java】基本数据类型和运算符

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java】基本数据类型和运算符

目录

1.1byte

1.2short

1.3int

1.4long

1.5flout

1.6double

1.7char

1.8boolean

2.String

数据类型转换

3.1相互赋值

3.2强制类型转换

3.3数值提升

3.4int和String相互转换

运算符

4.1算术运算符

4.2关系运算符

4.3逻辑运算符

4.4位运算符

4.5移位运算符

4.6条件运算符

4.7运算符小结


1.1byte

字节型,顾名思义,占1个字节

表示范围:-2^7~2^7-1

初始值:0

定义变量

byte a=3;

1.2short

短整型,占2个字节

表示范围:-2^15~2^15-1

初始值:0

short b=3;

1.3int

整形,占4个字节

表示范围:-2^31~2^31-1

初始值:0

int c=3;//int类型比较常见

1.4long

长整型,占8个字节

表示范围:-2^63~2^63-1

初始值:0

long d=3L;//后面跟个L,小写l也可以,但有时候会和1混淆,建议大写的L

1.5flout

单精度浮点型,占4个字节

精度相对低,不推荐使用,在内存中的布局遵守IEEE 754标准

初始值:0.0

float e=1.2333f//非要用float,后边加个f

1.6double

双精度浮点型,占8个字节

精度高,能够满足大部分场景的使用,同样遵守IEEE 754标准

精度高不代表绝对的准确,这只是用有限的位数表示可能无限的小数

初始值:0.0

double g=2.333;

1.7char

字符型,占2个字节(注意和C区分)

C中的字符是ASCII码表示的,而Java中的字符是Unicode表示的

一个字符占两个字节,所能表示的字符也更多

初始值:空

char handsome='我';//编译时可能会出错,javac -encoding UTF-8即可
char 钱=5;//可以这么定义但是,不建议,合法但不合理

1.8boolean

布尔型,具体大小没有明确规定

取值:只能是true或者false

初始值:false

不能对boolean型变量进行+1操作

2.String

字符串类型,用双引号+若干字符表示,属于引用类型

字符串拼接

String str="result="
int a=10;
int b=20;
System.out.println(str+a+b);
//result=1020
//str+a之后变成:“result=10”这是个字符串,+b进行字符串拼接
String str="result="
int a=10;
int b=20;
System.out.println(a+b+str);  
//30result=
//执行a+b,因为都是int,会计算出结果。+str进行字符串拼接

数据类型转换

3.1相互赋值
  • 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型, 反之则不行.

范围大的类型变量给范围小的类型变量:编译通不过,直接报错

3.2强制类型转换

强转损失精度

互不相干的类型之间无法强转

3.3数值提升

范围小的范围大的变量进行运算,小的会被提升为大的

3.4int和String相互转换
//int转成String
int num = 10; 
// 方法1 
String str1 = num + ""; 
// 方法2 
String str2 = String.valueOf(num); 
//String 转成 int
String str = "100"; 
int num = Integer.parseInt(str);

运算符

4.1算术运算符

基本四则运算+ - * / %

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

自增++/自减--(前置和后置)

  • 在表达式不需要返回一个值时,前置和后置没有区别

int/int 结果还是int,为了不出错,建议用double定义变量

0不能做除数

%不仅可以对int取模,还可对double取模

System.out.println(7.3 % 1.4);///结果为0.3

4.2关系运算符

== !=

< >

<= >=

关系运算符的表达式返回值都是 boolean 类型.

所以C语言那一套if(!0)行不通了

4.3逻辑运算符

&& || !

&&逻辑与:两个操作数都为true,整体结果才为true,有false则为false

||逻辑或:两个操作数都为false,整体结果才为false,有一个为true则为true

  • &&和||都可以短路

只要第一个操作数能让整体结果确认,则不会判断剩下的操作数

System.out.println(10 > 20 && 10 / 0 == 0); // 打印 false 
System.out.println(10 < 20 || 10 / 0 == 0); // 打印 true

我们都知道, 计算 10 / 0 会导致程序抛出异常. 但是上面的代码却能正常运行, 说明 10 / 0 并没有真正被求值.

结论:

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

!逻辑非:!true==false;!false==true;(!是一个单目操作符,只有一个操作数)

  • 当操作数为boolean型,& 和 | 也表示逻辑运算,只不过不支持短路,上述两行代码把相应的&&和||替换为&和| 程序会异常

4.4位运算符

位运算符对数据处理的最小单位是二进制位

& 按位与:对应二进制位都是1,才为1;有一个为0,则为0;

| 按位或:对应二进制位都是0,才为0;有一个为1,则为1;

  • 当操作数为boolean型,& 和 | 表示逻辑运算

~ 按位取反:

int a = 0xf; 
System.out.printf("%xn", ~a);//fffffff0
System.out.printf("%dn", ~a);//-16
//看到第一个结果有点懵,才反应过来,负数在内存的是补码

^按位异或:(找不同)对应二进制位相同为0、不同为1;

4.5移位运算符
  • 移动二进制位
  • 移位位数过大没有意义:int占32位,你不能给移位33位,可是可以,但是没有意义

左移<<:高位补符号位;相当于得到的结果相当于原结果乘2*N

(N为移动位数)

右移>>:低位补0;相当于得到的结果相当于原结果除2*N

无符号左移>>>:左移后高位补0;不管是正数还是负数,都补0;

4.6条件运算符

只有一个条件运算符,三目运算符

表达式1?表达式2:表达式3
int max=a>b?a:b;//判断两个数的最大值

4.7运算符小结
  1. % 操作在 Java 中可以针对 double 来计算.
  2. 需要区分清楚 前置自增 和 后置自增之间的区别.
  3. 由于 Java 是强类型语言, 因此对于类型检查较严格, 因此像 && 之类的运算操作数必须是 boolean.
  4. 要区分清楚 & 和 | 什么时候是表示按位运算, 什么时候表示逻辑运算.

整体来看, Java 的运算符的基本规则和 C 语言基本一致.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/324473.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号