目录
一.注释
二.标识符
基本规则
命名约定(软性约定)
三.关键字
四.数据类型与变量
数据类型
变量
类型转换
类型提升
类型提升简要总结
五.运算符
1. 算术运算符
2. 赋值运算符
3. 关系运算符
4. 逻辑运算符
短路问题
5. 位运算符
1)按位与(&)
2). 按位或(|)
3). 按位异或(^)
4). 按位取反(~)
5). 左移(<<)
6). 右移(>>)
7). 无符号右移(>>>)
由于语言的通性,这里只简要介绍 java 语法中的基本概念
在Java中,注释是用来解释代码的文本,它们不会被编译器编译,也不会出现在最终执行的程序中。Java支持三种类型的注释:
单行注释(Single-line Comments): 单行注释以 //
开始,从 //
开始到该行结束的所有内容都被视为注释。
// 这是一个单行注释
int x = 5; // 你也可以在代码后面添加单行注释
多行注释(Multi-line Comments): 多行注释以 /*
开始,并以 */
结束。在这两个标记之间的所有内容都被视为注释,可以跨越多行
/*
这是一个多行注释的例子。
你可以在这里写很多行来解释你的代码。
*/
int y = 10;
文档注释(Documentation Comments): 文档注释以 /**
开始,并以 */
结束。这种注释用于生成API文档,通常放在类、方法或字段定义之前。使用Javadoc工具可以从这些注释中生成HTML格式的文档
/**
* 这是一个方法的文档注释。
* 它描述了方法的功能、参数和返回值等。
* @param a 输入参数
* @return 返回值
*/
public int add(int a, int b) {
return a + b;
}
在Java中,标识符是用来命名变量、方法、类、接口、包等的符号名称。遵循一定的规则和约定是非常重要的,以确保代码的可读性和合法性。
字母数字组合:标识符可以由字母、数字、下划线 _
和美元符号 $
组成。但是,标识符不能以数字开头。
myVariable
, _myVariable
, $myVariable
, myVariable123
123myVariable
(以数字开头)区分大小写:Java是区分大小写的语言。因此,myVariable
和 MyVariable
被认为是不同的标识符。
int myVariable = 10;
和 int MyVariable = 20;
是两个不同的变量。关键字限制:标识符不能是Java的关键字或保留字。例如,class
, public
, static
等都是关键字,不能用作标识符。
int class = 10;
(因为 class
是关键字)长度限制:虽然理论上标识符的长度没有限制,但实际上受限于编译器和操作系统的限制。通常情况下,使用合理的长度即可。
驼峰命名法:
myVariable
, calculateTotal
MyClass
, MyInterface
常量命名:常量通常使用全大写字母,单词之间用下划线 _
分隔。
final int MAX_VALUE = 100;
包名:包名全部使用小写字母,避免使用下划线。
com.example.myapp
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)
在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,小数部分被截断
基本规则:
double
,则另一个操作数会被提升为double
;如果是float
,则提升为float
;如果是long
,则提升为long
;否则,两个操作数都会被提升为int
。字面量:
int
类型。double
类型。L
表示long
,F
或f
表示float
。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
注意:从较大类型转换为较小类型时(如
double
转int
),可能会导致数据丢失。
用于执行基本的数学运算。
+
:加法-
:减法*
:乘法 /
:除法 %
:取模(求余):使用 / 或者 % 时,右操作数注意不能为 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
用于将值赋给变量。
=
:简单赋值+=
:加法赋值-=
:减法赋值*=
:乘法赋值/=
:除法赋值%=
:取模赋值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
用于比较两个值,返回布尔值(true
或false
)。
==
:等于!=
:不等于>
:大于<
:小于>=
:大于等于<=
:小于等于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
用于组合多个条件表达式,返回布尔值。
&&
:逻辑与||
:逻辑或!
:逻辑非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 > 0
为 true
,但 b != 0
为 false
。由于 &&
的短路特性,b != 0
为 false
时,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 > 0
为 true
,因此 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 > 0
为 true
,b != 0
也会被执行,导致 a / b
计算,从而抛出除以零的异常。
总结
&&
):如果第一个操作数为false
,则不会执行第二个操作数。||
):如果第一个操作数为true
,则不会执行第二个操作数。&
和 |
):总是会执行所有的操作数。位运算符(Bitwise Operators)在Java中用于对整数类型的二进制位进行操作。
&
)用法:对两个操作数的每一位进行“与”操作。如果两个相应的位都为1,则结果位为1;否则为0。
int a = 5; // 二进制: 0101
int b = 3; // 二进制: 0011
int result = a & b; // 二进制: 0001,结果为1
|
)用法:对两个操作数的每一位进行“或”操作。如果两个相应的位中至少有一个为1,则结果位为1;否则为0。
int a = 5; // 二进制: 0101
int b = 3; // 二进制: 0011
int result = a | b; // 二进制: 0111,结果为7
^
)用法:对两个操作数的每一位进行“异或”操作。如果两个相应的位不同,则结果位为1;否则为0。
int a = 5; // 二进制: 0101
int b = 3; // 二进制: 0011
int result = a ^ b; // 二进制: 0110,结果为6
~
)用法:对操作数的每一位进行“取反”操作。如果位为1,则结果位为0;如果位为0,则结果位为1。
int a = 5; // 二进制: 00000000 00000000 00000000 00000101
int result = ~a; // 二进制: 11111111 11111111 11111111 11111010,结果为-6
<<
)用法:将操作数的二进制位向左移动指定的位数,高位丢弃,低位补0。
int a = 5; // 二进制: 00000101
int result = a << 2; // 二进制: 00010100,结果为20
>>
)用法:将操作数的二进制位向右移动指定的位数,高位补符号位(正数补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
>>>
)用法:将操作数的二进制位向右移动指定的位数,高位始终补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