栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

Java笔记(三)——运算符

Java 更新时间:发布时间: 百科书网 趣学号
运算符 算术运算度
  • 算数运算符是一种特殊的符号,用以表示数据点运算、赋值和比较等。

    % 是取模(取余)

关系运算度
public class ArithmeticOperator{
    public static void main(String[] args){
        System.out.println(10 / 4); //从数学的角度看是2.5,但是因为Java默认10和4为整数int类型,所以输出为2
        System.out.println(10.0 / 4); //此时输出为2.5
        double d = 10 / 4; //先进行10/4运算,得到的是2,然后2再赋值给d,所以d=2.0
        System.out.println(d);
    }
}

取模的使用

% 的本质 看一个公式 a % b = a - a / b * b

public class ArithmeticOperator{
    public static void main(String[] args){
        System.out.println(10 % 3); //1
        System.out.println(-10 % 3); //-1
        System.out.println(10 % -3); //1
    }
}

算术运算符面试题
  1. int i = 1;

    i = i++;

    System.out.println(i);

    问结果是什么?为什么?

    结果是1,规则使用临时变量:(1) temp = i; (2) i = i + 1; (3) i = temp;

    这样记,i = 1已经赋值给了 i ,所以 i = 1,之后 i 又自增,自增完之后并没有赋值

  2. int i = 1;

    i = ++i;

    System.out.println(i);

    输出为2

prinln是输出加换行,print只是输出但是不换行

  1. 假如还有59天放假,问:合xx个星期零xx天

    public class ArithmeticOperatorExercise{
        public static void main(String[] args){
            //分析
            //1.使用int变量 days 保存天数
            //2.一个星期是7天,星期数: days / 7,零xx天 days % 7
            //3.输出
            int days = 59;
            int weeks = days / 7;
            int leftDays = days % 7;
            System.out.println(days + "天合" + weeks + "星期零" + leftDays + "天");
        }
    }
    
    1. 定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为: 5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度。【234.5】

      public class ArithmeticOperatorExercise{
          public static void main(String[] args){
              //分析
              //1.使用double变量 d1 保存要求的华氏温度值234.5
              //2.根据公式求摄氏温度: double d2 = 5/9*(d1 - 100)
              //3.输出
              double fahrenheit = 234.5;
              double CentigradeTemperature = 5.0/9.0*(fahrenheit - 100); //注意一定要写成5.0和9.0
              System.out.println("华氏温度" + fahrenheit + "对应的摄氏温度为:" + CentigradeTemperature);
          }
      }
      

注意:变量名尽量用英文,别用单个字母来表示

逻辑关系运算符
  1. 短路与 &&,短路或 ||,取反 !

    • &&短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高
    • &逻辑与:不管第一个条件是什么,第二个条件都要判断,效率低
    • 开发中,使用的基本上都是&&短路与,效率高
  2. 逻辑与 &,逻辑或 |,^逻辑异或

    • || 短路或:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高
    • | 逻辑与:不管第一个条件是什么,第二个条件都要判断,效率低
    • 开发中,使用的基本上都是 || 短路与,效率高
  3. !取反,^逻辑异或

    异或就说不相同为true,相同为false

复合运算符

+= , -= , *= , /= , %= 等

复合赋值运算符会进行类型转换

  • a += b; [等价 a = a + b]
byte b = 3;
b += 2;  // 等价于 b = (byte)(b+2);
b ++;   // b = (byte)(b+1);
三元运算符
  • 基本语法

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

  1. 如果条件表达式为true,运算后的结果是表达式1;
  2. 如果条件表达式为false,运算后的结果是表达式2;

使用细节:

  1. 表达式1和表达式2要为可以赋值给接受变量的类型
  2. 三元运算符可以转换成 if – else 语句
public class TernaryOperator{
    public static void main(String[] args){
        int a = 10;
        int b = 99;
        int result = a > b ? a++ : b--;
        System.out.println(result);
        //案例:实现三个数的最大值
        int n1 = 55;
        int n2 = 33;
        int n3 = 123;
        
        int max1 = n1 > n2 ? n1 : n2;
        String max = max1 == n1 ? "n1" : "n2";
        max1 = max1 > n3 ? max1 : n3;
        max = max1 == n3 ? "n3" : max;
        System.out.println("最大值是" + max + ":" + max1);
        //使用一条语句来实现
        max1 = (n1 > n2 ? n1 : n2) > n3 ? (n1 > n2 ? n1 : n2) : n3;
        max = (max1 > n1 ? (max1 > n2 ? "n3" : "n2") : "n1"); 
        System.out.println("=====================");
        System.out.println("最大值是" + max + ":" + max1);
    }
}
标识符的命名规则和规范
  1. 标识符:Java对各种变量、方法和类等命名时使用的字符序列

  2. 凡是自己可以起名字的地方都叫标识符

  3. 不可以使用关键字和保留字,数字不可以开头

  4. 包名:多单词组成时所有字母都小写:aaa.bbb.ccc

  5. 驼峰法:

    类名、接口名:多单词组成,所有单词的首字母大写:XxxYyyZzz[大驼峰]

    变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz[小驼峰]

键盘输入语句

编程中,需要接受用户输入的数据,就可以使用键盘输入语句来获取 Input.java,需要一个扫描器(对象),即Scanner

步骤:

  1. 导入该类的所在包,java.util.*
  2. 创建该类对象(声明变量)
  3. 调用里面的功能
import java.util.Scanner;
public class Input{
    
    public static void main(String[] args) {
        //演示接受用户的输入
        
        Scanner myScanner = new Scanner(System.in);
        System.out.println("请输入名字");
        String name = myScanner.next();//表示接受用户的输入
        System.out.println("请输入年龄");
        int age = myScanner.nextInt();//表示接受用户的输入
        System.out.println("请输入薪水");
        double salary = myScanner.nextDouble();//表示接受用户的输入
        System.out.println("人的信息如下");
        System.out.println("name=" + name + "age=" + age + "salary=" +salary);
    }
}
原码、反码、补码
  1. 二进制的最高位是符号位,0表示正数,1表示负数
  2. 正数的原码、反码、补码都一样
  3. 负数的反码 = 它的原码符号位不变,其它位取反
  4. 负数的补码 = 它的反码+1,负数的反码 = 负数的补码 - 1
  5. 0的反码、补码都是0
  6. java的数都是有符号的
  7. 计算机运算的时候,都是以补码的方式来运算的
  8. 当我们看运算结果的时候,要看它的原码
位运算

按位与&、或|、异或^、取反~

  1. 算术右移 >> : 低位溢出,符号位不变,并用符号位补溢出的高位
    • 1 >> 2 : 相当于 1/2/2,向右移几位就相当于➗几个2
  2. 算术左移 << : 符号位不变,低位补0
    • 4 << 3 : 相当于4*2*2*2,向左移动几位就相当于×几个2
  3. >>> 逻辑右移也叫无符号右移: 低位溢出,高位补0
  4. 没有 <<< 这个符号
public class Input{
    public static void main(String[] args){
        
        System.out.println(~2);
        
    }
}
转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/294854.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号