java字符串太长换行_java运算符


day04—运算符

1.Scanner

  1. 使用步骤
  • 第一步:导入Scanner类 在有效代码的第一行,使用import导入Scanner类

java import java.util.Scanner;

  • 第二步:实例化一个Scanner对象 方便后期调用Scanner的对象方法。

java Scanner input = new Scanner(System.in);

  • 第三步:调用Scanner的对象方法,从而实现获取用户在DOS命名窗口输入的内容

java String name =input.nextLine();

  1. 知识点
  2. 执行Scanner的方法时,会阻塞代码的执行,直到用户输入内容并敲回车才会停止阻塞,并且把输入的内容赋值给等号左边的变量保存,继续执行后续代码!

以下方法获取的都是基本数据类型 nextByte()、nextShort()、nextInt()、nextLong() nextFloat()、nextDouble()、nextBoolean()

以下两个方法获取的都是字符串

next()、nextLine()

获取第一个空格之前的内容

next()、nextByte()、nextShort()、nextInt()、nextLong() nextFloat()、nextDouble()、nextBoolean()

获取一整行的内容 nextLine()

  1. 注意事项
  • 输入的内容必须和调用input方法返回的数据类型相匹配,否则就会抛出异常。
  • Scanner没有nextChar()这个方法,也就是说无法获取用户输入的字符。

如何手动实现获取用户输入的字符呢??? 先获取字符串,然后获取字符串中的第一个字符 思路:使用String类提供charAt(index)方法,输入一个 索引值则获取该索引对应的字符,索引从0开始! java String str = "hello"; char c = str.charAt(1);

    • 执行以下代码,我们发现没有让用户输入姓名!

java int age = input.nextInt(); // 没有让用户输入姓名,直接返回结果:"" String name = input.nextLine();
原因:当执行nextInt()方法并敲回车,这时nextInt()获取第一个空格之前的内容,但是此时内存中还存在“空格及其之后的内容+换行”。 核心:获取第一个空格之前的内容的方法,都不会吃掉“换行”接着执行nextLine()方法时,会首先检查内存中是否存在“换行”,如果存在“换行”,则获取换行之前的内容,并吃掉内存中的“换行”。 如果不存在“换行”,则让用户在DOS命名窗口输入数据。 核心:先检查内存中是否存在换行,如果存在则直接获取换行之前的内容,并吃掉“换行”,而不让用户手动输入数据。java System.out.print("请输入年龄:"); int age = input.nextInt(); System.out.print("请输入姓名:"); // 解决方案:先执行一遍input.nextLine(),吃掉内存中的内容包含换行 input.nextLine(); String name = input.nextLine(); System.out.println("姓名:" + name + " 年龄:" + age);

2.算数运算符

  1. 二元运算符
    +、-、、/、% +,可以做加法运算,还可以做连接符,表示正数。 -,可以做减法运算,表示负数 ,只能做乘法运算 /,只能做除法运算 %,取模运算或取余运算。(使用场合:判断m是否能被n整除!m % n 等于0,则证明m能被n整除 m % n 不等于0,则证明m不能被n整除)
    注意事项:
  • 1)两个整数做除法运算,返回的结果肯定是一个整数!
  • 2)两个数做除法运算的时候,分母不能为0,否则抛出算数异常!
  1. 一元运算符
    1. ++,自增运算符

++num或num++,都等效于:num = num + 1; ++num和num++的区别(和别的操作数参与运算): ++num,先自增,后运算 num++,先运算,后自增

    1. --,自减运算符 --num或num--,都等效于:num = num - 1; --num和num--的区别(和别的操作数参与运算): --num,先自减,后运算 num--,先运算,后自减
    2. 随堂练习: 1)int a = 3, b = 4; 求a++ / 3 + --b * 2 - a-- % 6 + b++ * 3 - ++b的值。

java a: 3 b: 5 sum: 3/3 + 3*2 - 4%6 + 3*3 - 5 = 7 1 + 6 - 4 + 9 - 5
​ 2)int num = 5; num = num++;请问代码执行后num的值为多少?

9e8bf702f2dd30aabfcdfad6799062a8.png

3.赋值运算符

  1. =
  • 把等号右边表达式的结果赋值给等号左边的变量或final修饰的常量保存!
  • 随堂练习:

1)交换两个变量的值,使用两种方式来实现!java // 方案一 int temp = num1; num1 = num2; num2 = temp; a)使用一个零时变量来实现 优点:好理解 缺点:需要额外声明一个变量,浪费内存空间!java // 方案二 num1 = num1 + num2; // num1 = 8 num2 = num1 - num2; // num2 = 3 num1 = num1 - num2; // num1 = 5 b)不使用一个零时变量来实现 优点:无需定义零时变量,节省内存空间! 缺点:不好理解,建议边写边推算! 补充:先一加,后两减!java c)通过位运算来实现 优点:运算效率特别高(执行的是二进制操作) 缺点:特别不好理解!

9e8bf702f2dd30aabfcdfad6799062a8.png

4.扩展赋值运算符

  1. 解释
    属于“赋值运算符”和“算数运算符(二元运算符)”的综合体!java m += n, 等效于:m = (m的数据类型)(m + (n)); m -= n, 等效于:m = (m的数据类型)(m - (n)); m *= n, 等效于:m = (m的数据类型)(m * (n)); m /= n, 等效于:m = (m的数据类型)(m / (n)); m %= n, 等效于:m = (m的数据类型)(m % (n));
  2. 注意事项:
    1)扩展赋值运算符是一个整体,中间不能加空格,错误演示:m % = n;
  3. 常见面试题:
    1)请问一下代码输出结果是什么????num = 20java int num = 4; num *= 2 + 3; // 等效于:num = num*(2 + 3)
    2)short num = 11; num = num + 1; // 错误 和short num = 11; num += 1 + 2; // 正确 哪一个正确呢?java /* short num = 11; num += 1; // 等效于:num = (short)(num + (1)); System.out.println(num); */
    3)int sum += 30; 请问这行语句语法是否正确???错误 错误,int sum += 30; 等效于:int sum; sum = sum + 30

5.关系运算符

  1. , <, >=, <=, ==, !=
    > 关系运算符返回的结果肯定是boolean类型,条件成立则返回true,否则返回false > ==,判断两个数值是否相等!目前强调作用于基本数据类型 > !=,判断两个数值是否不相等!目前强调作用于基本数据类型
  2. 注意事项:
    1)关系运算符是一个整体,不能中间添加空格。
    2)== 判断两个数值(基本数据类型)是否相同,不能判断两个引用数据类型的内容是否相同。 例如:判断两个字符串的内容是否相同,那么就不能使用== 来实现了! 原因:==作用于引用数据类型,判断的是地址是否相同(面向对象学习) 解决:判断两个字符串内容是否相同???? 使用String类提供的equals()方法 例如:判断str1和str2这两个字符串内容是否相同,可以这么做 str1.equals(str2)java String str1 = input.nextLine(); String str2 = "hello"; // 判断字符串内容是否相同 System.out.println(str1.equals(str2)); // 正确 // System.out.println(str2 == str1); // 错误
    3)请问以下代码输出结果为什么???"flag的值为true"java boolean flag = false; if(flag = true) { // 判断flag是否为true System.out.println("flag的值为true"); } else { System.out.println("flag的值为false"); }
    老鸟建议:把常量放在“==”左边,变量放在“==”的右边!

6.逻辑运算符

  1. &, |, ^, &&, ||, !
    参与逻辑运算的数据类型必须是boolean类型,并且返回的结果也是boolean类型
  2. &,与,二元运算符
  • 结论:

只有两边都为true,那么结果才为true。 只要有一边为false,那么结果就是false。
辅助记忆:小明与小红来一趟办公室!

  1. |,或,二元运算符
  • 结论:

只有两边都为false,那么结果才为false。 只要有一边为true,那么结果就是true。 辅助记忆:小明或小红来一趟办公室!

  1. ^,异或,二元运算符
  • 结论:

两边相同,则返回false;两边不相同,则返回true。

  1. &&,短路与,二元运算符
  • &和&&相同点:

结论一模一样,返回的结果一模一样!

    • &和&&不同点:

核心:执行的过程不一样! 当左边表达式结果为false时,执行的过程不一样! &&:如果左侧表达式的结果为false,那么右侧表达式不会执行,直接返回左侧表达式的结果 &:如果左侧表达式的结果为false,那么右侧表达式依旧会执行,直接返回左侧表达式的结果 当左边表达式结果为true时,执行的过程没有区别! &&,&:如果左侧表达式的结果为true,那么右侧表达式肯定会执行,并且返回右侧表达式的结果! 补充:现实开发中,我们使用&&较多,因为效率高!

  1. ||,短路或,二元运算符
  • |和||相同点:

结论一模一样,返回的结果一模一样!

    • |和||不同点:

核心:执行的过程不一样! 当左边表达式结果为true时,执行的过程不一样! ||:如果左侧表达式的结果为true,那么右侧表达式不会执行,直接返回左侧表达式的结果 |:如果左侧表达式的结果为true,那么右侧表达式依旧会执行,直接返回左侧表达式的结果 当左边表达式结果为false时,执行的过程没有区别! ||,|:如果左侧表达式的结果为false,那么右侧表达式肯定会执行,并且返回右侧表达式的结果! 补充:现实开发中,我们使用||较多,因为效率高!

  1. !,非,一元运算符
  • 结论:true取反的结果就是false。 false取反的结果就是true。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值