day02

day02

1.基本数据类型的封装类

2.基本数据类型转换

  • 自动类型转换

    容量小的数据类型自动转换成容量大的数据类型。

    例如:byte bt = 127 ;=>Java机制默认为int类型,所以这里涉及将int 127 转换成 byte 127 (127数值在byte允许的范围内所以会被自动转换)

    转换规则:byte ->short -> int -> long -> float -> double

    多类型混合运算时,系统会将所有数据转换成容量最大的类型,然后在进行计算。

  • 强制类型转换

    将容量大的数据类型前置转换成容量小的数据类型。使用时要加上强制类型转换符【()】。可能造成精度丢失或者溢出。

3.字符串

  • String是引用数据类型

  • null可以赋值给任何引用数据类型

    【引用数据类型】:在栈内存中因为空间或格式不允许,又要进行数据存储。此时就将变量池中的地址存入到栈内存中。

    例如:类、接口、数组

  • 编译时期 相同的字符串常量只会在常量池中创建一份;

  • 字符串拼接,不要用‘+’号拼接,应该使用StringBuffer或者StringBuild进行拼接,使用的好处,在原有的字符串中进行拼接,不会出现内存溢出,使用’+'拼接数据,会一直开辟新的空间。

    String i = "10";
    for(int i = 0; i<=100 ; i++){
          i+="l";
    }
    

    上述方式使用字符拼接,将会重新开辟101个内存空间。

4.运算符

  • 算术运算符
运算符运算示例结果
+正号+55
-负号-1-1
+1+12
-3-21
*5*630
/5/51
%取余、取模10%31
++i自增(前):先运算 后取值a=1;b=++a;a=2;b=2;
i++自增(后):先取值 后运算a=1;b=a++;a=2;b=1;
–i同上
i–同上
+字符串相加“abc”+“de”“abcde”
  • 赋值运算符
运算符含义
=把右边的值赋值给左边。
+=i+=1;等价于 i = i + 1;
-=同上
*=同上
/=同上
        short s1 = 1;
        s1 = (short) (s1 + 1);
        //这两个表达式完全相同 因为+=自带强制类型转换
        s1 += 1;
  • 比较运算符

都是返回boolean值

运算符运算结果示例
==判断是否相等4 == 3
!=判断是否不等4 ! = 3
<判断是否小于
>判断是否大于
<=判断是否小于等于
>=判断是否大于等于
  • 逻辑运算符

用于连接布尔表达式。

运算符含义解释
&逻辑与一个假,结果为假。全部为真,结果才是真。会把表达式全部都计算完。
|逻辑或一个真,结果为真。全部为假,结果才是假。会把表达式全部都计算完。
!逻辑非原本是真,变为假,反之亦然
&&短路与一个假,结果为假。全部为真,结果才是真。只要判断出结果是假,就不会计算后面的表达式。
||短路或一个真,结果为真。全部为假,结果才是假。只要判断出结果是真,就不会计算后面的表达式。
^逻辑异或两个不同,那就是为真;否则为假
aba&ba|b!aa^ba&&ba||b
truetruetruetruefalsefalsetruetrue
truefalsefalsetruefalsetruefalsetrue
falsetruefalsetruetruetruefalsetrue
falsefalsefalsefalsetruefalsefalsefalse
  • 三元运算符

    (布尔表达式)?表达式1:表达式2;

    表达式1和表达式2返回值必须是同类型。

    解释:布尔表达式中,若为真则返回表达式1,否则返回表达式2

  • 位运算(扩展)

    位运算是直接对二进制进行运算。

    运算符运算示例
    <<左移3<<2 =>结果为12(3【10进制】= 11【二进制】 1100【二进制左移两位(左移后补零)】=>12)
    >>右移使用补码。将这个数字的补码最右边的n位剔除,左边用符号位数字补上。
    >>>无符号右移被移位的二进制数,无论符号位是0还是1,空缺位都用0补上。
    &按位与二进制位的&运算,只有1&1时,结果1;否则为0。
    |按位或二进制位的|运算,只有0|0时,结果0;否则为1。
    ^按位异或二进制位的运算;00=0;11=0;10=1;0^1=1;
    ~取反按照补码进行按位取反

    计算:

    • 正数:原码、反码、补码 一样
    • 负数
      • 原码:
      • 反码:符号位不变,其他位按位取反
      • 补码:反码+00000001

5.程序流程控制

  • 顺序

    程序都是从上到下,从里到外的顺序执行

  • 分支

    使用if–else if – else 的结构执行分支,其中else if 可以不存在或者多个。if和else:最多允许一个。其中else不允许单独出现,必须与if搭配使用,但是if出现了允许不出现else

    //方案一
    if(a>b){
      System.out.println("a");
    }else if(b>c){
      System.out.println("b");
    }else{
      System.out.println("c");
    }
    //方案二
    if(b>c){
      System.out.println("b");
    }else{
      System.out.println("c");
    }
    //方案三
    if(b>c){
      System.out.println("b");
    }
    
    //错误案例:
    else{
      System.out.println("c");
    }
    

【拓展】

  • 基本数据类型直接在栈内存中存储的是值(常量值)

    对其进行比较时,直接比较其值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值