包装类和Java运算符

一、包装类(Wrapper Class)

  1. Java是面向对象语言,但是Java中的基本数据类型却是不面向对象的,但在实际使用中,经常需要将基本数据转化成对象,便于操作,为了使基本类型具备对象的特性,Java提供了包装类,就可以像操作对象一样操作基本类型数据。
  • 包装类均位于java.lang包,使用时系统会自动导入。
  • 基本类型和包装类的对应关系:
基本数据类型包装类基本数据类型包装类
byteBytefloatFloat
intIntegerdoubleDouble
shortShortbooleanBoolean
longLongcharCharacter
  1. 包装类的作用
  • 提供字符串、基本数据类型、对象之间相互转化的方式。
  • 包含每种基本数据类型的相关属性,如最大值、最小值。
  1. 自动装箱:基本类型自动的封装到与它相同类型的包装中,此过程调用valueOf方法。
    例如:
Integer i = 100;

本质上是编译器编译时自动添加了

Integer i = new Integer(100);
  1. 自动拆箱:包装类对象自动转换成对应的基本类型,调用intvalue方法。
int a = new Integer(100);

本质上是编译器编译时自动添加了

int a = new Integer (100).intValue();
  1. 缓存问题:当通过自动装箱机制创建包装类对象时,首先会判断数值是否在[-128,127]的范围内,如果满足条件,则当作基本数据类型来处理,从缓存中寻找指定数值,若找到缓存,则不会创建新的对象,只是指向指定数值对应的包装类对象,否则将创建一个新的对象,会返回在堆中分配的内存地址。
    实例:
        Integer a1 = 1234;
        Integer a2 = 1234;
        System.out.println(a1 == a2);
        System.out.println(a1.equals(a2));

        Integer a3 = 123;
        Integer a4 = 123;
        System.out.println(a3 == a4);
        System.out.println(a3.equals(a4));

运行结果:
在这里插入图片描述

二、变量和常量

Java变量是程序中最基本的存储单元,其要素包括变量名变量类型作用域
变量在使用前必须对其声明,只有在变量声明以后,才能为其分配相应长度的存储单元,每个变量都有类型,可以是基本类型,也可以是引用类型,常用的引用类型有:类、接口和数组。

  • 实例变量:也称成员变量,是在方法外部、类的内部定义的变量,如果不进行初始化,会自动初始化成该类型的默认初始值,保存在堆中,随着对象的创建而存在,随着对象的消失而消失。
  • 静态变量:又称类变量,用static修饰,可以由类名或对象调用,存储在方法区中,静态变量的生存周期为整个源程序,,但只能在定义改变量的函数内使用该变量。
  • 局部变量:方法或语句块内部定义的变量,只在这个范围内有效,在使用前必须声明和初始化,保存在虚拟机栈中,系统根据变量大小自动分配存储空间,作用的范围结束时变量的空间自动释放。
  • 常量:在编译的时候统一进行处理,变量名大写,只能被初始化一次。

三、运算符

优先级运算符简介结合性
1[ ]、. 、( )方法调用,属性获取从左到右
2! 、~、++、- -一元运算符从右向左
3*、/、%乘、除、取余从左向右
4+、-加、减从左向右
5<<、>>、>>>左移、右移、无符号右移从左向右
6<、<=、>、>=、instanceof小于、小于等于、大于、大于等于、对象类型判断是否是同类型从左向右
7==、!=两个值是否相等,两个值是否不相等从左向右
8&按位与从左向右
9^按位异或从左向右
10l按位或从左向右
11&&短路与从左向右
12ll短路或从左向右
13条件运算符从右向左
14=、+=、-=、*=、/=、%=、l=、^=、<、<=、>、>=、>>=混合赋值运算符从右向左
  • 算术运算符:+、 - 、* 、 / 、%(取余)、 ++(自增)、 - -(自减)

例:

        int a = 3;
        int b = a++;    //执行完毕后,b=3,先给b赋值,再自增
        int c = ++a;    //执行完毕后,c=5,先自增,再给c赋值
        System.out.println("a = "+a);
        System.out.println("b = "+b);
        System.out.println("c = "+c);

	System.out.println(-5 % 2);
        System.out.println(-5 % 2);
        System.out.println(5 % -2);
        System.out.println(5 % 2);

运行结果:
在这里插入图片描述
“+”还可用于字符串的连接,运算符两侧的操作数中只要有一个是String类型,系统会自动将另一个操作数转换为字符串然后进行连接。

  • 赋值运算符:=
  • 关系运算符:< (小于)、<=(小于等于)、>(大于)、>=(大于等于)、== (等于)、!=(不等于)
  • 位运算符:&(按位与),|(按位或),^(按位异或),~,<<(左移),>>(右移),>>>(无符号右移)
    说明:a << x=a2^x
    b >> y=b
    2^(-y)
    例:
	int a = 4;
        int b = 7;
        System.out.println(a & b);
        System.out.println(a | b);
        System.out.println(a ^ b);
        System.out.println(~a);
        
        int c1 = a * 2 * 2;
        int c2 = a << 2;
        int d1 = a / 2 / 2;
        int d2 = a >> 2;
        System.out.println("c1 = "+c1);
        System.out.println("c2 = "+c2);
        System.out.println("d1 = "+d1);
        System.out.println("d2 = "+d2);

运算结果:
在这里插入图片描述

  • 逻辑运算符:&&(逻辑与)、||(逻辑或)、!(逻辑非)
    说明:逻辑与和逻辑或采用短路的方式,从左到右计算,如果确定值则不会再进行下去。
    例:
        boolean a = 1 > 2 && 2 > (3/0);
        boolean b = 1 < 2 && 2 > (3/0);
        System.out.println("a = "+a);	//执行结果为false,未抛异常说明 2>(3/0)未被执行
        System.out.println("b = "+b);	//1<2结果为ture,执行2>(3/0)时报错
  • 扩展赋值运算符: +=,-=, *=,/=
运算符用法举例等效表达式
+=a += ba = a + b
-=a -= ba = a - b
*=a *= ba = a * b
/=a /= ba = a / b
%=a %= ba = a % b
  • 条件运算符:?、:

    • 三元条件运算符:常用来代替简单的if-else判断
      • 语法格式:x ? y : z

说明:x为boolean类型表达式,先计算x的值,若为ture,则此三元运算的结果为表达式y的值,否则整个运算结果为表达式z的值。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值