类型转换&运算符&Scanner

本文介绍了Java中的自动和强制类型转换,算术、字符、字符串操作,以及赋值、关系、逻辑和短路逻辑运算符。同时讲解了如何使用Scanner类进行键盘录入。

类型转换

自动类型转换

把一个表示范围小的类型变量赋值给表示范围大的类型变量,这个过程会自动转换

强制类型转换

把一个表示范围大的类型变量赋值给表示范围小的类型变量,这个过程需要做强制类型转换

  • 格式:
    目标数据类型 变量名 = (目标数据类型) 值或变量;

运算符

什么是运算符

  • 运算符

对变量或常量进行操作的符号,注意符号都是特定的,不能改变量

  • 表达式

用运算符把变量或常量连接起来符合Java语法的式子称为表达式

算术运算符

符号作用说明
+数学算法
-数学算法
*与“×”相同
/与“÷”相同
%取余/取模获取的是两个数据做除法的余数
  • 注意事项
    /%的区别,两个数据做除法,/取得商,%取得余
    整数操作只能得到整数,需要小数,必须有浮点类型参与运算

字符“+”的操作

  • char类型参与算术运算

使用的是字符对应的ASCII表中的数值

  • ‘a’ – 97 \quad\quad a~z是连续的
    依次递加
  • ‘A’ – 65 \quad\quad A~Z是连续的
    依次递加
  • ‘0’ – 48 \quad\quad 0~9是连续的
    依次递加
  • 算术表达式

    算术表达式中包含不同的基本数据类型的值的时候,整个算术表达式的类型会自动进行提升。

    • 提升规则

      byte类型,short类型和char类型将被提升到int类型,不管是否有其他类型参与运算。
      整个表达式的类型自动提升到与表达式中最高等级的操作数相同的类型
      等级顺序:byte,short,char --> int --> long --> float --> double

    • 演示

      byte b1 = 10;
      byte b2 = 20;
      // byte b3 = b1 + b2; // 该行报错,因为byte类型参与算术运算会自动提示为int,int赋值给byte可能损失精度
      int i3 = b1 + b2; // 应该使用int接收
      byte b3 = (byte) (b1 + b2); // 或者将结果强制转换为byte类型
      -------------------------------
      int num1 = 10;
      double num2 = 20.0;
      double num3 = num1 + num2; // 使用double接收,因为num1会自动提升为double类型
      

字符串“+”的操作

当“+”操作中出现字符串时,这个”+”是字符串连接符,而不是算术运算。

System.out.println("我最"+ 666); // 输出:我最666

在”+”操作中,如果出现了字符串,就是连接运算符,否则就是算术运算。当连续进行“+”操作时,从左到右逐个执行。

        //字符串拼接
        int a = 520;
        System.out.println("hello"+'a'+1);//helloa1
        System.out.println('a'+1+"hello");//98hello
        System.out.println("5+5="+5+5);//5+5=55 
        System.out.println(5+5+"=5+5");//10=5+5

赋值运算符

赋值运算符的作用是将一个表达式的值赋给左边,左边必须是可修改的,不能是常量。

符号作用说明
=赋值a=10,将10赋值给变量a
+=先加后赋值a+=b,将a+b的值给a
-=先减后赋值a-=b,将a-b的值给a
*=先乘后赋值a*=b,将a×b的值给a
/=先除后赋值a/=b,将a÷b的商给a
%=先取余后赋值a%=b,将a÷b的余数给a
  • 注意
    扩展的赋值运算符隐含了强制转换
	面试题:
		short s=1;  s = s+1; 
		
		short s=1;  s+=1;

		上面两个代码有没有问题,如果有,那里有问题。
		
		为什么第二个木有问题呢?
			扩展的赋值运算符其实隐含了一个强制类型转换。
			
			s += 1;
			不是等价于 s = s + 1;
			而是等价于 s = (s的数据类型)(s + 1);

自增自减运算符

符号作用说明
++自增变量的值加1
- -自减变量的值减1
  • 注意事项
    • ++和- -既可以放在变量的后边,也可以放在变量的前边。
    • 单独使用的时候,++和- -无论是放在变量的前边还是后边,结果是一样的。
    • 参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者- -
    • 参与操作的时候,如果放在变量的前边,先拿变量做++或者- -,后拿变量参与操作。

关系运算符

关系运算符有6种关系,分别为小于、小于等于、大于、等于、大于等于、不等于。最终于的结果是boolean类型

符号说明
==a==b,判断a和b的值是否相等,成立为true,不成立为false
<a<b,判断a是否小于b,成立为true,不成立为false
<=a<=b,判断a是否小于等于b,成立为true,不成立为false
>a>b,判断a是否大于b,成立为true,不成立为false
>=a>=b,判断a是否大于等于b,成立为true,不成立为false
!=a!=b,判断a和b的值是否不相等,成立为true,不成立为false
  • 注意事项
    • 关系运算符的结果都是boolean类型,要么是true,要么是false
    • 千万不要把==误写成==是赋值,==是判断是否相等的关系

逻辑运算符

逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。 最终的结果也是boolean

符号作用说明
&逻辑与a&b,a和b都是true,结果为true,否则为false
|逻辑或a|b,a和b都是false,结果为false,否则为true
^逻辑异或a^b,a和b结果不同为true,相同为false
!逻辑非!a,结果和a的结果正好相反

短路逻辑运算符

符号作用说明
&&短路与作用和&相同,但是有短路效果
||短路或作用和|相同,但是有短路效果

在逻辑与运算中,只要有一个表达式的值为false,那么结果就可以判定为false了,没有必要将所有表达式的值都计算出来,短路与操作就有这样的效果,可以提高效率。同理在逻辑或运算中,一旦发现值为true,右边的表达式将不再参与运算。

  • 逻辑与&,无论左边真假,右边都要执行。
  • 逻辑或|,无论左边真假,右边都要执行。
  • 短路与&&,如果左边为真,右边执行;【如果左边为假,右边不执行】。
  • 短路或||,如果左边为假,右边执行;【如果左边为真,右边不执行】。

三目(元)运算符

  • 格式

    关系表达式 ? 表达式1 : 表达式2;
    
  • 格式解析

    问号前面的位置是判断的条件,判断结果为boolean型,为true时调用表达式1,为false时调用表达式2。其逻辑为:如果条件表达式成立或者满足则执行表达式1,否则执行第二个。

键盘录入

我们可以通过 Scanner 类来获取用户的输入。使数据达到灵活性

使用步骤

导包

Scanner 类在java.util包下,所以需要将该类导入。导包的语句需要定义在类的上面。

在这里插入代码片import java.util.Scanner; 

创捷对象

Scanner sc = new Scanner(System.in);// 创建Scanner对象,sc表示变量名,其他均不可变

接收数据

int i = sc.nextInt(); // 表示将键盘录入的值作为int数返回。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BoatsZhou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值