Java入门(三)不同数据类型的转换与运算符

一.不同数据类型的转换

在这里插入图片描述
1.小类型转为大类型是自动提升的

long b = 20;//小类型的变量赋值给大类型
long b = a+1L;
/**
 * 小类型和大类型进行数学运算时,首先会将小类型提升至大  类型后进行数学运算
 * int+long——>long+long
 */

2.大类型转为小类型需要强制类型转换,可能会丢失精度(数据溢出或者部分数据丢失)
long—>int

long b =20;
int a = (int)b;

在这里插入图片描述
程序执行代码都是从右向左执行的
a+1=int+int=int
先进行的是a+1->已经溢出了,把一个溢出的值再让long b接收,所以并不是long放不下而是long存储了一个溢出的值

3.byte和int之间的相互转换

int a =10;
byte b =(byte)a;//大到小,强转
int c = b;//小到大,自动提升

byte->byte
对于数值型和字符型来说,小于4字节的数据类型,在存储时会转为4字节,byte保存时会转为int

byte a=120;
byte b =(byte)130;//当把byte类型保存区间之内的整数赋值给
byte c=a;       //byte时,可以直接赋值,超出范围需要强转
byte a =10;
byte b =20;
byte c =(byte)(a+b);

a+b默认还是以int形式保存需要强转,byte,short,char都是类似
在这里插入图片描述
被final修饰的变量除了数据不能改,类型也无法提升
final byte a =10;存储时仍然是byte类型

4.char与int之间转换
char->int

char a = ‘a’; char->int 自动提升,按照Unicode编码将’a’转为int
int b = a;

int->char

int a = 97;
char b =(char)a;//通过Unicode编码将97转为a

5.string与int之间的转换
int->string

int num = 10;
//方法1
String str1 = String.valueOf(num);
//方法2
String str2=””+num;

字符串与任何类型相加都会被转为字符串然后相加
string->int

String str =123;
int a =Integer.parseInt(str);

如果字符串中出现非数字,那么调用时会报错

6.默认值
在Java中,所有数据类型都有默认值,定义之后没有赋值,都会有默认值(只存在于类变量中,方法中的局部变量不存在默认值)在这里插入图片描述

二.运算符

2.1算术运算符
+ - * / %
相同数据类型进行数学运算,得到的仍然是本类型
在这里插入图片描述
从图中可以看出,当计算1/2时用整型/整型就会得出结果0
而用浮点型/整型就会得出正确结果0.5
所以当计算过程中出现了小数,我们就更换相应的类型为double
大类型和小类型进行数学运算,先把小类型提升为大类型再进行运算
除法中0不能作为除数
%称为取模运算,取余运算,不仅可以用于整数也能用于小数
在这里插入图片描述
一个三位数可以通过取模运算得到个位、十位、百位
个位=num%10
十位=num/10%10
百位=num/100%10

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

a+=1;//相当于a=a+1;
b*=2//相当于b=b*2;

2.3自增和自减运算符
++ –

a++;//先取a的值然后进行自增操作
++a;//先自增再取a的值
int a =1;
println(a++);//1
int b =1;
println(++a);//2

2.4关系运算符
关系运算符运算之后得到的都是布尔值(为真就是true,为假就是false)
== 表示相等 != 表示不等于
< > <= >=

int a = 3;
int b =4;
System.out.println(3==4);//false

2.5逻辑运算符
逻辑运算符得到的都是布尔值
&&:逻辑与,两个操作数都是true,返回true,有一个为false就返回false
在这里插入图片描述
||:逻辑或,两个操作数都是false返回false,否则有一个为true,就返回true
在这里插入图片描述
!取反 操作数如果是true返回false,是false返回true

Int a =10;
Int b =20;
System.out.println(!(a>b));//true

&&和||都是属于短路运算符
当使用多个条件逻辑与时,有一个表达式返回false,剩下的表达式就不会再判断了
当使用多个条件逻辑或时,有一个表达式返回true,剩下的表达式就不会再判断了
在这里插入图片描述
多个运算符为布尔值时,&和|也可以表示逻辑运算,但是不满足短路操作符

2.6位运算(了解即可,不推荐使用)
直接在二进制位上进行操作的运算符
按位与:& 如果两个二进制位都为1,返回1,否则返回0
10 -> 01010 20->10100

System.out.println(10&20);//0

按位或:| 两个二进制位有一个1就返回1,都是0则返回0

System.out.println(10|20);//30

按位取反:~ 相反数-1

System.out.println(~10);//-11
System.out.println(~20);//19

按位异或:^
两个二进制位相同则返回0,不同返回1
10-> 01010 20->10100

System.out.println(10^20);//30

一组数中若只有一个数字出现一次,其余的数都出现两次,将所有的数字都异或就能找出那个数字

2.7移位运算(了解)

<< 右移
>> 左移
>>> 无符号左移
10<<1 二进制位向左移动一位 10100 4+16=20 左移一位相当于原数字
2
10>>1 二进制位向右移动一位 00101 4+1=5 右移一位相当于原数字/2

2.8条件运算符(唯一一个三目运算符)
表达式1?表达式2:表达式3
当表达式1 true时取表达式2的值,否则取表达式3的值
在这里插入图片描述
2.9运算符的优先级
可以不用去记,要先运算的加上括号即可

System.out.println((10<20)&&(20<30));

3.0注释
单行注释:一般用在方法中,给某一行做特殊说明// 快捷键ctrl+/
多行注释:不推荐使用,/ * * / 快捷键ctrl+shift+/
文档注释:/**
*
*/ 一般用在方法和类的声明之前,告知用户该方法和类的使用原则

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值