java运算符

文章目录

  • 运算符
    • 运算符介绍
    • 算术运算符
      • 算术运算符一览
      • 案例演示
      • 细节说明
      • 面试题
    • 关系运算符(比较运算符)
      • 关系运算符一览
      • 案例演示
      • 细节说明
    • 逻辑运算符
      • 逻辑运算符一览
      • && 和 & 基本规则
      • && 和 & 案例演示
      • && 和 & 使用区别
      • || 和 | 基本规则
      • || 和 | 案例演示
      • || 和 | 使用区别
      • ! 取反 基本规则
      • ! 案例演示
      • ^ 案例演示
      • 练习题 1 请写出每题的输出结果
      • 练习题 2 请写输出结果
    • 赋值运算符
      • 赋值运算符的分类
      • 案例演示
      • 赋值运算符特点
    • 三元运算符
      • 基本语法
      • 案例演示 TernaryOperator.java
      • 使用细节 TernaryOperatorDetail.java
    • 运算符优先级
    • 标识符的命名规则和规范
      • 判断下面变量名是否正确
      • 标识符命名规范[更加专业]
    • 关键字
    • 保留字
    • 键盘输入语句
      • 步骤 :
      • 案例演示:
    • 进制(程序员的基本功)
      • 进制介绍
      • 举例说明 BinaryTest.java
    • 进制的图示
    • 进制的转换(基本功)

运算符

运算符介绍

在Java中,运算符是一种特殊的符号,用于表示数据的运算,比如加法、减法、乘法和除法等。运算符用于执行特定的数学和逻辑运算。Java支持多种运算符,包括算术运算符、关系运算符、逻辑运算符、赋值运算符、三元运算符等。

算术运算符

算术运算符用于执行基本的数学运算,如加法、减法、乘法、除法和取模等。这些运算符在处理数值(整数和浮点数)时非常有用。

算术运算符一览

下面是Java支持的算术运算符:

  • 加法运算符(+):用于两数相加。
  • 减法运算符(-):用于两数相减。
  • 乘法运算符(*):用于两数相乘。
  • 除法运算符(/):用于两数相除。
  • 取模运算符(%):用于获取两数相除后的余数。
  • 自增运算符(++):用于将变量的值增加1。
  • 自减运算符(–):用于将变量的值减少1。

案例演示

以下是一些算术运算符的使用示例:

public class Main {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        System.out.println("a + b = " + (a + b));
        System.out.println("a - b = " + (a - b));
        System.out.println("a * b = " + (a * b));
        System.out.println("b / a = " + (b / a));
        System.out.println("b % a = " + (b % a));
        System.out.println("++a = " + (++a));
        System.out.println("--b = " + (--b));
    }
}

细节说明

在使用算术运算符时,需要注意以下几点:

  • 当使用除法运算符(/)时,如果两个操作数都是整数,那么结果也是整数,小数部分将被舍去。如果想得到精确的结果,需要将其中一个操作数转换为浮点数。
  • 当使用取模运算符(%)时,如果除数为0,那么将会抛出ArithmeticException异常。
  • 自增运算符(++)和自减运算符(–)可以放在变量前也可以放在变量后,但是放在前后的效果是不同的。放在变量前,先进行自增或自减运算,再进行其他运算;放在变量后,先进行其他运算,再进行自增或自减运算。

面试题

以下是一些常见的关于Java算术运算符的面试问题:

  1. 请解释Java中的自增运算符(++)和自减运算符(–)的工作原理。
  2. 在Java中,为什么除法运算符(/)在处理整数时会舍去小数部分?
  3. 在Java中,取模运算符(%)可以用于浮点数吗?
  4. 请解释Java中的取模运算符(%)的工作原理。

关系运算符(比较运算符)

关系运算符用于比较两个操作数的关系,如等于、不等于、大于、小于、大于等于和小于等于等。这些运算符在处理条件语句(如if语句)时非常有用。

关系运算符一览

下面是Java支持的关系运算符:

  • 等于运算符(==):用于检查两个操作数是否相等。
  • 不等于运算符(!=):用于检查两个操作数是否不等。
  • 大于运算符(>):用于检查左操作数是否大于右操作数。
  • 小于运算符(<):用于检查左操作数是否小于右操作数。
  • 大于等于运算符(>=):用于检查左操作数是否大于或等于右操作数。
  • 小于等于运算符(<=):用于检查左操作数是否小于或等于右操作数。

案例演示

以下是一些关系运算符的使用示例:

public class Main {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        System.out.println("a == b = " + (a == b));
        System.out.println("a != b = " + (a != b));
        System.out.println("a > b = " + (a > b));
        System.out.println("a < b = " + (a < b));
        System.out.println("a >= b = " + (a >= b));
        System.out.println("a <= b = " + (a <= b));
    }
}

细节说明

在使用关系运算符时,需要注意以下几点:

  • 关系运算符的结果是布尔值,即true或false。
  • 在使用等于运算符(==)和不等于运算符(!=)比较对象时,比较的是对象的引用,而不是对象的内容。如果想比较对象的内容,需要使用对象的equals方法。

逻辑运算符

逻辑运算符用于执行逻辑运算,如逻辑与、逻辑或和逻辑非等。这些运算符在处理复杂的条件语句时非常有用。

逻辑运算符一览

下面是Java支持的逻辑运算符:

  • 逻辑与运算符(&&):当且仅当两个操作数都为true时,结果为true。
  • 逻辑或运算符(||):当至少一个操作数为true时,结果为true。
  • 逻辑非运算符(!):用于反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将使其为false。

&& 和 & 基本规则

逻辑与运算符有两种形式:&&和&。

  • &&是短路逻辑与运算符,如果左操作数为false,那么不会计算右操作数。
  • &是非短路逻辑与运算符,无论左操作数是否为false,都会计算右操作数。

&& 和 & 案例演示

以下是逻辑与运算符的使用示例:

public class Main {
    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;

        System.out.println("a && b = " + (a && b));
        System.out.println("a & b = " + (a & b));
    }
}

&& 和 & 使用区别

在大多数情况下,我们应该使用短路逻辑与运算符(&&),因为它可以提高程序的性能。但是,在某些情况下,我们可能需要使用非短路逻辑与运算符(&),例如,当右操作数有副作用(如修改变量或输出结果)时。

|| 和 | 基本规则

逻辑或运算符有两种形式:||和|。

  • ||是短路逻辑或运算符,如果左操作数为true,那么不会计算右操作数。
  • |是非短路逻辑或运算符,无论左操作数是否为true,都会计算右操作数。

|| 和 | 案例演示

以下是逻辑或运算符的使用示例:

public class Main {
    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;

        System.out.println("a || b = " + (a || b));
        System.out.println("a | b = " + (a | b));
    }
}

|| 和 | 使用区别

在大多数情况下,我们应该使用短路逻辑或运算符(||),因为它可以提高程序的性能。但是,在某些情况下,我们可能需要使用非短路逻辑或运算符(|),例如,当右操作数有副作用(如修改变量或输出结果)时。

! 取反 基本规则

逻辑非运算符(!)用于反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将使其为false;如果条件为false,则逻辑非运算符将使其为true。

! 案例演示

以下是逻辑非运算符的使用示例:

public class Main {
    public static void main(String[] args) {
        boolean a = true;

        System.out.println("!a = " + (!a));
    }
}

^ 案例演示

逻辑异或运算符(^)用于执行逻辑异或运算。当两个操作数不同时,结果为true;当两个操作数相同时,结果为false。

以下是逻辑异或运算符的使用示例:

public class Main {
    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;

        System.out.println("a ^ b = " + (a ^ b));
    }
}

练习题 1 请写出每题的输出结果

public class Main {
    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;

        System.out.println("a && b = " + (a && b));
        System.out.println("a || b = " + (a || b));
        System.out.println("!a = " + (!a));
        System.out.println("a ^ b = " + (a ^ b));
    }
}

练习题 2 请写输出结果

public class Main {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        System.out.println("a == b = " + (a == b));
        System.out.println("a != b = " + (a != b));
        System.out.println("a > b = " + (a > b));
        System.out.println("a < b = " + (a < b));
        System.out.println("a >= b = " + (a >= b));
        System.out.println("a <= b = " + (a <= b));
    }
}

赋值运算符

赋值运算符用于将右操作数的值赋给左操作数。Java支持多种赋值运算符,包括基本的赋值运算符(=)和复合赋值运算符(如+=、-=、*=、/=和%=等)。

赋值运算符的分类

下面是Java支持的赋值运算符:

  • 基本赋值运算符(=):将右操作数的值赋给左操作数。
  • 加法赋值运算符(+=):将左操作数和右操作数相加,然后将结果赋给左操作数。
  • 减法赋值运算符(-=):将左操作数和右操作数相减,然后将结果赋给左操作数。
  • 乘法赋值运算符(*=):将左操作数和右操作数相乘,然后将结果赋给左操作数。
  • 除法赋值运算符(/=):将左操作数和右操作数相除,然后将结果赋给左操作数。
  • 取模赋值运算符(%=):将左操作数和右操作数相除,然后将余数赋给左操作数。

案例演示

以下是赋值运算符的使用示例:

public class Main {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        a += b;
        System.out.println("a = " + a);

        a -= b;
        System.out.println("a = " + a);

        a *= b;
        System.out.println("a = " + a);

        a /= b;
        System.out.println("a = " + a);

        a %= b;
        System.out.println("a = " + a);
    }
}

赋值运算符特点

在使用赋值运算符时,需要注意以下几点:

  • 赋值运算符的左操作数必须是一个变量,不能是一个常量或一个表达式。
  • 赋值运算符的右操作数可以是一个常量、一个变量、一个表达式或一个方法调用,只要这个方法调用的返回值和左操作数的类型兼容。
  • 赋值运算符的运算顺序是从右到左,即先计算右操作数,然后将结果赋给左操作数。

三元运算符

三元运算符是Java中唯一的一个三元运算符。它接受三个操作数:一个条件表达式、一个真值表达式和一个假值表达式。如果条件表达式的结果为true,那么执行真值表达式并返回其结果;如果条件表达式的结果为false,那么执行假值表达式并返回其结果。

基本语法

三元运算符的基本语法如下:

condition ? expression1 : expression2

案例演示 TernaryOperator.java

以下是三元运算符的使用示例:

public class Main {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        int max = a > b ? a : b;
        System.out.println("max = " + max);
    }
}

使用细节 TernaryOperatorDetail.java

在使用三元运算符时,需要注意以下几点:

  • 三元运算符的条件表达式必须是一个布尔表达式,即其结果必须是true或false。
  • 三元运算符的真值表达式和假值表达式必须是相同的类型,或者至少是可以互相转换的类型。如果真值表达式和假值表达式的类型不同,那么会导致编译错误。

运算符优先级

在Java中,不同的运算符有不同的优先级。优先级高的运算符会先于优先级低的运算符执行。例如,乘法和除法的优先级高于加法和减法,所以在一个包含乘法、除法、加法和减法的表达式中,乘法和除法会先于加法和减法执行。

以下是Java中运算符的优先级表(从高到低):

  1. 后缀运算符(如++、–)
  2. 前缀运算符(如++、–、+、-、!)
  3. 乘法、除法和取模运算符(如*、/、%)
  4. 加法和减法运算符(如+、-)
  5. 关系运算符(如<、<=、>、>=)
  6. 等于和不等于运算符(如==、!=)
  7. 逻辑与运算符(如&&)
  8. 逻辑或运算符(如||)
  9. 三元运算符(如? :)
  10. 赋值运算符(如=、+=、-=、*=、/=、%=)

在复杂的表达式中,我们可以使用括号来改变运算符的优先级。

标识符的命名规则和规范

在Java中,标识符是用于识别变量、方法、类、接口等元素的名称。标识符的命名必须遵循以下规则:

  • 标识符必须以字母(A-Z或a-z)、美元符($)或下划线(_)开始。
  • 标识符的其他部分可以包含字母(A-Z或a-z)、美元符($)、下划线(_)或数字(0-9)。
  • 标识符不能是Java的关键字或保留字。
  • 标识符是区分大小写的。

以下是一些有效的Java标识符:

  • name
  • $salary
  • _value
  • __1_value
  • $$_value
  • student_name
  • MAX_VALUE
  • MIN_VALUE

以下是一些无效的Java标识符:

  • 123abc(开始字符不是字母、$或_)
  • -salary(-不是有效的标识符字符)
  • e#mail(#不是有效的标识符字符)
  • class(class是Java的关键字)

判断下面变量名是否正确

public class Main {
    public static void main(String[] args) {
        int _123abc;
        int $abc;
        int void;
        int static;
        int 123_abc;
        int _$;
        int a+b;
    }
}

标识符命名规范[更加专业]

在Java中,我们通常遵循以下命名规范来提高代码的可读性:

  • 类名应该以大写字母开始,并且每个单词的首字母都应该大写(驼峰命名法),如Student、Employee、ArrayList等。
  • 变量名和方法名应该以小写字母开始,并且每个单词的首字母都应该大写(驼峰命名法),如firstName、lastName、getSalary等。
  • 常量名应该全部大写,并且单词之间用下划线分隔,如MAX_VALUE、MIN_VALUE等。

关键字

在Java中,关键字是预先定义的、具有特殊含义的单词,用于表示一种特定的语言结构或功能。例如,int、float、if、for、class等都是Java的关键字。

Java关键字不能用作标识符。也就是说,我们不能用关键字来命名变量、方法、类、接口等。

以下是Java的所有关键字:

  • abstract
  • assert
  • boolean
  • break
  • byte
  • case
  • catch
  • char
  • class
  • const
  • continue
  • default
  • do
  • double
  • else
  • enum
  • extends
  • final
  • finally
  • float
  • for
  • goto
  • if
  • implements
  • import
  • instanceof
  • int
  • interface
  • long
  • native
  • new
  • package
  • private
  • protected
  • public
  • return
  • short
  • static
  • strictfp
  • super
  • switch
  • synchronized
  • this
  • throw
  • throws
  • transient
  • try
  • void
  • volatile
  • while

保留字

在Java中,保留字是预先定义的、具有特殊含义的单词,但是在当前版本的Java中并没有使用。例如,goto和const都是Java的保留字。

Java保留字不能用作标识符。也就是说,我们不能用保留字来命名变量、方法、类、接口等。

以下是Java的所有保留字:

  • goto
  • const

键盘输入语句

在Java中,我们可以使用java.util.Scanner类来获取键盘的输入。Scanner类提供了多种方法来获取不同类型的输入,如nextInt、nextDouble、nextLine等。

步骤 :

  1. 导入java.util.Scanner包。
  2. 创建一个Scanner对象。
  3. 使用Scanner对象的方法获取输入。

案例演示:

以下是使用Scanner类获取键盘输入的示例:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Enter your name: ");
        String name = scanner.nextLine();

        System.out.print("Enter your age: ");
        int age = scanner.nextInt();

        System.out.println("Hello, " + name + ". You are " + age + " years old.");
    }
}

进制(程序员的基本功)

在计算机科学中,进制是一种表示数字的方法。最常见的进制有十进制、二进制、八进制和十六进制。

  • 十进制:基数为10,使用数字0-9。
  • 二进制:基数为2,使用数字0和1。
  • 八进制:基数为8,使用数字0-7。
  • 十六进制:基数为16,使用数字0-9和字母A-F。

在Java中,我们可以使用不同的进制来表示整数。默认情况下,整数是十进制的。但是,我们也可以使用二进制、八进制或十六进制来表示整数,只需要在整数前面添加一个特殊的前缀:

  • 二进制:添加0b或0B前缀。
  • 八进制:添加0前缀。
  • 十六进制:添加0x或0X前缀。

进制介绍

以下是使用不同进制表示整数的示例:

public class Main {
    public static void main(String[] args) {
        int decimal = 100;     // 十进制
        int binary = 0b100;    // 二进制
        int octal = 0100;      // 八进制
        int hexadecimal = 0x100; // 十六进制

        System.out.println("decimal = " + decimal);
        System.out.println("binary = " + binary);
        System.out.println("octal = " + octal);
        System.out.println("hexadecimal = " + hexadecimal);
    }
}

举例说明 BinaryTest.java

以下是使用不同进制表示整数的示例:

public class Main {
    public static void main(String[] args) {
        int binary = 0b1001;   // 二进制
        int octal = 011;       // 八进制
        int hexadecimal = 0x9; // 十六进制

        System.out.println("binary = " + binary);
        System.out.println("octal = " + octal);
        System.out.println("hexadecimal = " + hexadecimal);
    }
}

进制的图示

在计算机科学中,我们通常使用二进制、八进制和十六进制来表示数据。这是因为这些进制可以方便地转换为二进制,而计算机内部的所有数据都是以二进制形式存储的。

以下是二进制、八进制和十六进制之间的转换关系:

  • 二进制:每1位表示一个二进制数。
  • 八进制:每3位表示一个八进制数。
  • 十六进制:每4位表示一个十六进制数。

例如,二进制数1011可以转换为八进制数13和十六进制数B。

进制的转换(基本功)

在计算机科学中,我们经常需要将一个数从一种进制转换为另一种进制。以下是一些常见的进制转换:

  • 二进制转十进制:从右到左,将每一位二进制数乘以2的相应次方,然后求和。
  • 十进制转二进制:不断地除以2并取余,直到商为0,然后将余数反向排列。
  • 八进制转十进制:从右到左,将每一位八进制数乘以8的相应次方,然后求和。
  • 十进制转八进制:不断地除以8并取余,直到商为0,然后将余数反向排列。
  • 十六进制转十进制:从右到左,将每一位十六进制数乘以16的相应次方,然后求和。
  • 十进制转十六进制:不断地除以16并取余,直到商为0,然后将余数反向排列。

你可能感兴趣的:(java基础,java,开发语言)