part 2 — java 语法中的基本概念

目录

一.注释

二.标识符

基本规则

命名约定(软性约定)

三.关键字

四.数据类型与变量

数据类型

变量

类型转换

类型提升

类型提升简要总结

五.运算符

1. 算术运算符

2. 赋值运算符

3. 关系运算符

4. 逻辑运算符

短路问题 

5. 位运算符

1)按位与(&)

2). 按位或(|)

3). 按位异或(^)

4). 按位取反(~)

5). 左移(<<)

6). 右移(>>)

7). 无符号右移(>>>)


由于语言的通性,这里只简要介绍 java 语法中的基本概念

一.注释

在Java中,注释是用来解释代码的文本,它们不会被编译器编译,也不会出现在最终执行的程序中。Java支持三种类型的注释:

  1. 单行注释(Single-line Comments): 单行注释以 // 开始,从 // 开始到该行结束的所有内容都被视为注释。

    // 这是一个单行注释
    int x = 5; // 你也可以在代码后面添加单行注释
  2. 多行注释(Multi-line Comments): 多行注释以 /* 开始,并以 */ 结束。在这两个标记之间的所有内容都被视为注释,可以跨越多行

    /*
    这是一个多行注释的例子。
    你可以在这里写很多行来解释你的代码。
    */
    int y = 10;
  3. 文档注释(Documentation Comments): 文档注释以 /** 开始,并以 */ 结束。这种注释用于生成API文档,通常放在类、方法或字段定义之前。使用Javadoc工具可以从这些注释中生成HTML格式的文档

    /**
     * 这是一个方法的文档注释。
     * 它描述了方法的功能、参数和返回值等。
     * @param a 输入参数
     * @return 返回值
     */
    public int add(int a, int b) {
        return a + b;
    }

二.标识符

在Java中,标识符是用来命名变量、方法、类、接口、包等的符号名称。遵循一定的规则和约定是非常重要的,以确保代码的可读性和合法性。

基本规则

  1. 字母数字组合:标识符可以由字母、数字、下划线 _ 和美元符号 $ 组成。但是,标识符不能以数字开头。

    • 合法示例:myVariable_myVariable$myVariablemyVariable123
    • 不合法示例:123myVariable (以数字开头)
  2. 区分大小写:Java是区分大小写的语言。因此,myVariableMyVariable 被认为是不同的标识符。

    • 示例:int myVariable = 10; 和 int MyVariable = 20; 是两个不同的变量。
  3. 关键字限制:标识符不能是Java的关键字或保留字。例如,class, public, static 等都是关键字,不能用作标识符。

    • 不合法示例:int class = 10; (因为 class 是关键字)
  4. 长度限制:虽然理论上标识符的长度没有限制,但实际上受限于编译器和操作系统的限制。通常情况下,使用合理的长度即可。

命名约定(软性约定)

  1. 驼峰命名法

    • 小驼峰命名法:第一个单词首字母小写,后续单词首字母大写。适用于变量方法名。
      • 示例:myVariablecalculateTotal
    • 大驼峰命名法:所有单词首字母都大写。适用于类名接口名
      • 示例:MyClassMyInterface
  2. 常量命名:常量通常使用全大写字母,单词之间用下划线 _ 分隔。

    • 示例:final int MAX_VALUE = 100;
  3. 包名:包名全部使用小写字母,避免使用下划线。

    • 示例:com.example.myapp

     一个大型的工程,是由多名工程师协同开发的,如果每个人都按照自己的方式随意取名,比如: person 、 PERSON、 Person _person ,将会使程序非常混乱。如果大家在取名时能够遵守一定的约束 ( 即规范 ) ,那多人写的代码仿佛一个人写的。

三.关键字

https://blog.csdn.net/2301_79816047/article/details/143902015?sharetype=blogdetail&sharerId=143902015&sharerefer=PC&sharesource=2301_79816047&spm=1011.2480.3001.8118

四.数据类型与变量

数据类型

在Java中,数据类型用于定义变量可以存储的值的类型。Java是一种静态类型语言,这意味着在编译时必须确定每个变量的数据类型。Java中的数据类型分为两大类:基本数据类型(Primitive Data Types)和引用数据类型(Reference Data Types)

part 2 — java 语法中的基本概念_第1张图片

变量

类型转换

在Java中,不同类型的变量之间可以进行类型转换。类型转换分为隐式转换和显式转换。

  • 隐式转换:Java会自动将较小类型转换为较大类型,例如从int转换为double
  • 显式转换(强制类型转换):需要手动将较大类型转换为较小类型,可能会导致数据丢失。
int a = 10;
double b = 3.5;
double result = a + b; // 隐式转换,a被提升为double

double d = 123.45;
int i = (int)d; // 显式转换,d被强制转换为int,小数部分被截断

类型提升

类型提升简要总结

  1. 基本规则

    • double > float > long > int:如果参与运算的两个操作数中有一个是double,则另一个操作数会被提升为double;如果是float,则提升为float;如果是long,则提升为long;否则,两个操作数都会被提升为int
  2. 字面量

    • 整数字面量默认是int类型。
    • 浮点数字面量默认是double类型。
    • 使用后缀L表示longFf表示float
  3. 示例:
byte b = 10;
int i = 20;
int result = b + i; // b被提升为int

int a = 10;
double d = 3.5;
double result = a + d; // a被提升为double

注意:从较大类型转换为较小类型时(如doubleint),可能会导致数据丢失。

五.运算符

1. 算术运算符

用于执行基本的数学运算。

  • +:加法
  • -:减法
  • *:乘法 
  • /:除法 
  • %:取模(求余):使用 / 或者 % 时,右操作数注意不能为 0 ,否则会编译报错。
int a = 10;
int b = 3;
int sum = a + b; // 13
int difference = a - b; // 7
int product = a * b; // 30
int quotient = a / b; // 3
int remainder = a % b; // 1

2. 赋值运算符

用于将值赋给变量。

  • =:简单赋值
  • +=:加法赋值
  • -=:减法赋值
  • *=:乘法赋值
  • /=:除法赋值
  • %=:取模赋值
int x = 10;
x += 5; // x = x + 5,结果为15
x -= 3; // x = x - 3,结果为12
x *= 2; // x = x * 2,结果为24
x /= 4; // x = x / 4,结果为6
x %= 5; // x = x % 5,结果为1

3. 关系运算符

用于比较两个值,返回布尔值(truefalse)。

  • ==:等于
  • !=:不等于
  • >:大于
  • <:小于
  • >=:大于等于
  • <=:小于等于
int a = 10;
int b = 20;
boolean isEqual = (a == b); // false
boolean isNotEqual = (a != b); // true
boolean isGreater = (a > b); // false
boolean isLess = (a < b); // true
boolean isGreaterOrEqual = (a >= b); // false
boolean isLessOrEqual = (a <= b); // true

4. 逻辑运算符

用于组合多个条件表达式,返回布尔值。

  • &&:逻辑与
  • ||:逻辑或
  • !:逻辑非
int age = 25;
boolean isAdult = (age >= 18) && (age < 60); // true
boolean canVote = (age >= 18) || (age == 16); // true
boolean isNotChild = !(age < 18); // true

短路问题 

  • 逻辑与(&&)的短路

逻辑与(&&:如果第一个操作数为false,则整个表达式的结果必定为false,因此不会评估第二个操作数。

int a = 10;
int b = 0;

if (a > 0 && b != 0) {
    System.out.println(a / b);
} else {
    System.out.println("Division by zero is not allowed");
}

在这个例子中,a > 0true,但 b != 0false。由于 && 的短路特性,b != 0false 时,a / b 不会被计算,从而避免了除以零的错误。

  • 逻辑或(||)的短路

逻辑或(||:如果第一个操作数为true,则整个表达式的结果必定为true,因此不会执行第二个操作数。

示例

int a = 10;
int b = 0;

if (a > 0 || b != 0) {
    System.out.println("Condition met");
} else {
    System.out.println("Condition not met");
}

在这个例子中,a > 0true,因此 b != 0 不会被执行,整个表达式的结果为 true

  • 非短路的逻辑运算符

Java还提供了非短路的逻辑运算符 &|,这些运算符总是会执行所有的操作数。

  • 逻辑与(&:即使第一个操作数为false,也会执行第二个操作数。
  • 逻辑或(|:即使第一个操作数为true,也会执行第二个操作数。

示例

int a = 10;
int b = 0;

if (a > 0 & b != 0) {
    System.out.println(a / b); // 这里会抛出除以零的异常
} else {
    System.out.println("Division by zero is not allowed");
}

在这个例子中,即使 a > 0trueb != 0 也会被执行,导致 a / b 计算,从而抛出除以零的异常。

总结

  • 逻辑与(&&:如果第一个操作数为false,则不会执行第二个操作数。
  • 逻辑或(||:如果第一个操作数为true,则不会执行第二个操作数。
  • 非短路的逻辑运算符(& 和 |:总是会执行所有的操作数。

5. 位运算符

位运算符(Bitwise Operators)在Java中用于对整数类型的二进制位进行操作。

1)按位与(&

用法:对两个操作数的每一位进行“与”操作。如果两个相应的位都为1,则结果位为1;否则为0。

int a = 5;  // 二进制: 0101
int b = 3;  // 二进制: 0011
int result = a & b;  // 二进制: 0001,结果为1

2). 按位或(|

用法:对两个操作数的每一位进行“或”操作。如果两个相应的位中至少有一个为1,则结果位为1;否则为0。

int a = 5;  // 二进制: 0101
int b = 3;  // 二进制: 0011
int result = a | b;  // 二进制: 0111,结果为7

3). 按位异或(^

用法:对两个操作数的每一位进行“异或”操作。如果两个相应的位不同,则结果位为1;否则为0。

int a = 5;  // 二进制: 0101
int b = 3;  // 二进制: 0011
int result = a ^ b;  // 二进制: 0110,结果为6

4). 按位取反(~

用法:对操作数的每一位进行“取反”操作。如果位为1,则结果位为0;如果位为0,则结果位为1。

int a = 5;  // 二进制: 00000000 00000000 00000000 00000101
int result = ~a;  // 二进制: 11111111 11111111 11111111 11111010,结果为-6

5). 左移(<<

用法:将操作数的二进制位向左移动指定的位数,高位丢弃,低位补0。

int a = 5;  // 二进制: 00000101
int result = a << 2;  // 二进制: 00010100,结果为20

6). 右移(>>

用法:将操作数的二进制位向右移动指定的位数,高位补符号位(正数补0,负数补1),低位丢弃。

int a = 20;  // 二进制: 00010100
int result = a >> 2;  // 二进制: 00000101,结果为5

int b = -20;  // 二进制: 11111111 11111111 11111111 11101100
int result2 = b >> 2;  // 二进制: 11111111 11111111 11111111 11111011,结果为-5

7). 无符号右移(>>>

用法:将操作数的二进制位向右移动指定的位数,高位始终补0,低位丢弃。

int a = 20;  // 二进制: 00010100
int result = a >>> 2;  // 二进制: 00000101,结果为5

int b = -20;  // 二进制: 11111111 11111111 11111111 11101100
int result2 = b >>> 2;  // 二进制: 00111111 11111111 11111111 11111011,结果为1073741820

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