Java复习笔记入门阶段03:类型转换和运算符

目录

一、类型转换

1.自动类型转换

2.表达式的自动类型转换

3.强制类型转换

二、运算符

1.基本运算符

2.数值拆分

3.连接符

4.自增自减运算符

4.1.自增自减扩展(面试)

5、赋值运算符

6.关系运算符

7.逻辑运算符

8.三元运算符

9.运算符:优先级

10.API:键盘录入


一、类型转换

1.自动类型转换

概念:类型范围小的变量,直接赋值给类型范围大的变量

自动类型转换底层原理

a存八位;b占32位,把a直接放在后面,前方补0;

/**
 * 自动类型转换
 */
public class TypeDemo {
    public static void main(String[] args) {
        byte a = 20;
        int b =a;
    }
}

自动类型转换由小到大的顺序:

byte-->short(char)-->int-->long-->float-->double

char ch ='a';
int chq = ch;//97
System.out.println(ch+"and"+chq);//aand97

2.表达式的自动类型转换

表达式中,小范围类型会自动转换成当前较大范围类型再运算

byte、short、char-->int-->long-->float-->double

注意:

  • 结果由最高类型决定

  • 表达式中,byte、short、char直接转换为int参与运算

//面试题:计算中,byte直接当int,预防结果值过大
        byte op=10;
        byte opp=20;
//        byte ropp = op+opp;
        byte ropp = (byte) (op+opp);
        int ropp2 = op+opp;

3.强制类型转换

大范围变量强行赋给小范围变量,有丢失精度风险;

/**
 * 强制类型转换
 */
public class TypeDemo3 {
    public static void main(String[] args) {
        int a=5;
        byte b = (byte) a;
​
        int c = 1500;
        byte d = (byte) c;
        System.out.println(c+"and"+d);//1500 and -36
        
        double c1 = 1500.2699;
        int d1 = (int) c1;
        System.out.println(c1+"and"+d1);//1500.2699 and 1500
    }
}

强制类型转换底层原理:

  • 整数:把后面的位数强行转给小范围变量;

  • 小数:直接截断小数后位数,转成整数;

二、运算符

1.基本运算符

/**
 * 基本加减乘除
 */
public class OperatorDemo1 {
    public static void main(String[] args) {
        int a=9;
        int b=5;
        System.out.println(a + b);
        System.out.println(a - b);
        System.out.println(a * b);
        System.out.println(a / b);//1
        System.out.println(a*1.0 / b);//1.8
        System.out.println(3 / 2);//1
        System.out.println(3*1.0 / 2);//1.5;该方法用来取小数
        System.out.println(3 / 2*1.0);//1.0;
        System.out.println(a % b);//余数:4
    }
}

2.数值拆分

/**
 * 基本数据拆分
 */
public class OperatorDemo2 {
    public static void main(String[] args) {
        int a=987;
        int b,c,d;
​
        b=a % 10;
        c=a / 10 % 10 ;
        d=a/100;
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
    }
}

3.连接符

/**
 * 连接符
 * ''字符在一定条件下参与运算
 * “ ”字符串不参与运算
 */
public class OperatorDemo3 {
    public static void main(String[] args) {
        int a =5;
        char b ='爱';
        String china ="中国";
        System.out.println(a+b+china);//29238中国
        System.out.println(a+""+b+""+china);//5爱中国
        System.out.println(5+a);//10
        System.out.println("abc"+a);//abc5
        System.out.println("afasdf"+'a'+a);//afasdfa5
        System.out.println("afasdf"+('a'+a));//afasdf102
        System.out.println('a'+a);//5+97=102
        System.out.println('a'+""+a);//a5
        System.out.println(a+""+'a');//5a
    }
}

4.自增自减运算符

  • 注意:

  • ++和--,可以放在变量的前方和后方

  • 只能操作变量,不能操作字面量

  • 不是单独使用,前后意义不同

    • 变量前,先+1,再运算

    • 变量后,先运算,再+1

/**
 * 自增自减
 */
public class OperatorDemo4 {
    public static void main(String[] args) {
        int a =5;
        int rs = a++;//5
        System.out.println(a+"and"+rs);//6and5
        int b =5;
        int rs2 =++b;//6
        System.out.println(b+"and"+rs2);
    }
}

4.1.自增自减扩展(面试)

 System.out.println("===========扩展(面试)============");
        int k=5;//6 7 6
        int p=5;//4  3 4
        //  kp = 5   + 7   -  4  + 4   - 7   +  4  + 2
        int kp = k++ + ++k - --p + p-- - k-- + ++p + 2;
        System.out.println(k);//6
        System.out.println(p);//4
        System.out.println(kp);//11
​

5、赋值运算符

/**
 * 赋值运算符
 */
        int a=10;
        int b=100;
        a=a+b;
        a+=b;
​
        byte c=10;
        byte d=20;
        c= (byte) (c+d);
        c+=d;//byte

6.关系运算符

7.逻辑运算符

  /**
         * 逻辑运算符
         */
        int a=10;
        int b=100;
        System.out.println(a>20&b>100);//false
        System.out.println(a<10&b<100);//false
        System.out.println(a<=10|b<100);//true
        System.out.println(!true);//false
        System.out.println(false^true);//true
        System.out.println(false^false);//false
        /**
         * 短路逻辑运算符
         */
        System.out.println(a<10 && ++b>100);//false
        System.out.println(a==10 && ++b>100);//true b101
        System.out.println(a==10 || ++b>100);//true b101  前方正确,后方不执行
        System.out.println(a<10 || ++b>100);//true b102

8.三元运算符

格式:条件表达式?值1:值2;

执行流程:计算表达式结果;true,返回值1;否则值2.

 /**
         * 三元运算符
         */
        double score = 95.5;
        String rs = score >=60 ? "通过":"挂科";
        System.out.println(rs);
​
        //输出较大的值
        int a=5;
        int b=15;
        int c = a>b ? a:b;
        System.out.println("较大值:"+c);
​
        //三个值取最大
        int q=5;
        int w=15;
        int e=88;
        int tempMax = q>w ? q:w;
        int Max = tempMax>e ? tempMax:e;
        System.out.println("Max:"+Max);
​
        //简化上式
        Max = q>w ? q>e ? q:e :w>e ? w:e;
//        Max = q>w ? (q>e ? q:e) :(w>e ? w:e);
        System.out.println("Max:"+Max);

9.运算符:优先级

/**
         * 运算符:优先级
         */
        System.out.println(10>3 || 10>3 && 10<3 );//true.先执行&&,false || true
        System.out.println((10>3 || 10>3) && 10<3 );//false.先执行(),true && false

10.API:键盘录入

  • API(Application Programming Interface)应用程序编程接口:

  • Java功能代码;

  • API文档(技术使用说明书);

  • API文档下载

/**
         * 键盘输入API:Scanner
         */
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您的姓名:");
        //scanner.next();等待用户输入完成
        String name = scanner.next();
        System.out.println("请输入您的年龄:");
        int age = scanner.nextInt();
        System.out.println("身份录入成功姓名:"+name+"  年龄:"+age);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值