变量和运算符

数据类型:

java中数据类型分为基本数据类型和引用数据类型两种,基本数据类型包含byte,boolean,short,char,int,float,long,double八种,引用数据类型有数组,类,接口等等

在这里插入图片描述
原始类型:boolean char byte short int long float double
封装类型:Boolean Character Byte Short Integer Long Float Double

问题1:
short s1 = 1,s1 = s1 +1;有什么错,short s1 = 1;s1 += 1;有什么错?

对于short = s1+1,运算时会自动提升为int类型,int类型转换为shrot类型需要强转.
对于short s1 = 1,s1 += 1,+=是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译.

问题2:

int和Integer的区别?

  1. int是java的基本数据类型,而Integer是int的包装类型.
  2. int的默认值为0,而Integer为null.
  3. Integer需要实例化后才能使用,int不需要.
  4. Integer实际是对对象的引用,当new一个Integer时,实际上是让一个指针指向了对象,而int则直接存储数据值.
延伸:
Integer i = new Integer(100);
Integer j = new Integer(100);
System.out.println(i == j)//false,因为Integer变量实际上是对一个Integer对象的引用,所以通过new 生成的Integer变量永远是不相等的(new生成两个对象,内存地址不同)
Integer i = new Integer(100);
int j = 100;
System.out.println(i == j)//true,Integer与int变量进行比较时,只要两个变量是相等的,则结果为true(包装类Integer与基本数据类型进行比较时java会自动将Integer拆箱为int,然后进行比较,实际上就变为两个int变量的比较)
Integer i = new Integer(100);
Integer j = 100;
System.out.println(i == j);//false,非new生成的Integer变量和new生成的Integer变量比较时结果为false,因为非new生成的Integer变量指向的是java常量池中的对象,而new 生成的指向的是堆中新建的对象,二者在内存中的存储地址不同.
Integer i = 100;
Integer j = 100;
System.out.println(i == j);//true,
Integer i = 300;
Integer j = 300;
System.out.println(i == j);//false,对于两个非new 生成的Integer对象,进行比较时,如果两个变量的值在-128-127之间则为true,否则为false.
问题3:

java基本类型和引用类型的区别?
基本类型保存原始值,引用类型保存的是引用值.

运算符:

先来看看逻辑运算符:

System.out.println(10>20 && 10/0 == 0)//程序不会抛出异常,在执行10>20时为false直接退出,打印false.
System.out.println(10<20 || 10/0 == 0)//10<20为true直接退出,不会抛出异常,打印true.
System.out.println(10>20 & 10/0 == 0)//抛出异常
System.out.println(10>20 | 10/0 == 0)//抛出异常

& 和| 不支持短路求值.不推荐使用.

移位运算:

右移>> :最右侧位不要了,最左侧补符号位(正数补0,负数补1)
左移<<: 最左侧位不要了,最右侧补0
无符号右移>>>:最右侧位不要了,最左侧补0

注意:

1.左移一位,相当于原数字2,左移N位,相当于原数字2的N次方.
2.右移一位,相当于原数字/2,右移N位,相当于原数字/2的N次方.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值