目录
1. 注释
代码往往需要被多个人阅读和维护,注释可以解释代码的目的、逻辑和实现细节,使其他开发者更容易理解代码,即使他们没有参与初始开发。好的注释能帮助开发者快速理解代码的意图,而不用深挖每一行代码的实现,可以很好实现代码的可读性。此外代码在其生命周期中会经历多次维护和更新,可能由不同的开发者完成。注释可以帮助维护者理解代码的原始设计和意图,减少出错的可能性。此外,注释还可以标记需要修复的Bug、尚未完成的功能或未来的改进方向。
1.1 单行注释
语法: //...... 其中......是我们需要填入的注释内容
通常用于对单行代码就行注释,解释这一行代码有什么作用。
int num=0;//定义一个变量num,初始值为0.
但并不是每一行代码都需要注释,只需要将比较重要的,容易弄混的代码行注释即可。
1.2 多行注释
语法: /*......*/ 其中......是我们需要填入的注释内容
多行注释可以跨越多行,用于注释一段代码。
/*
这段代码用来定义两个初始变量
且都是int型的
*/
int num1=0;
int num2=1;
多行注释可以更迅速的掌握某一段代码的功能。
1.3 文档注释
语法: /**......*/ 其中......是我们需要填入的注释内容
文档注释就是一种特殊的注释,用来给类、方法、接口等写说明书。它能帮你生成一份自动的API文档,让别人更容易理解你的代码。简单来说,就是给代码加上详细的解释,告诉别人这个类是干嘛的,这个方法怎么用,有什么注意事项。可以用Java自带的工具可以把这些注释生成一份文档,方便查看。
/**
* This class represents a basic calculator with operations
* like addition, subtraction, multiplication, and division.
* <p>
* It supports integer operations and includes methods for each
* of the basic arithmetic operations.
* </p>
*
* @author Xie Junfei
* @version 1.0
* @since 2024-08-18
*/
public class Calculator {
// class implementation
}
上述文档注释内容很多,有作者,版本,时间,功能说明等众多有价值的内容。
2. 数据类型
在这里要提一下计算机中二进制存储都是按照补码进行存储,但是补码不能直接转化成十进制,需要转化为原码,源码最高位为符号位,0为正,1为负,如果补码变为原码,正数不用变,负数保持符号不变,其余位取反,即0变1,1变0,最后最低位加1。如补码10001000转变为原码就是11111000,即-120。原码变补码也是同理。
再补充一点,一般二进制有几位是根据下表的关键字的位数来确定的,前面补0。例如整数10用8位二进制表示补码,本应是1010,八位后应该是00001010,-10原码符号位为1,应该是1 1010,却应该是1000 1010,补码应该是1111 0110。
数据类型 | 关键字 | 范围 | 为什么 |
---|---|---|---|
整数 | byte(8位) | -128 到 127 | 1000 0000-0111 1111 |
short(16位) | -32,768 到 32,767 | ||
int(32位) | -2,147,483,648 到 2,147,483,647 | ||
long(64位) | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | ||
浮点数(小数) | float(32位) | -3.4E38 到 3.4E38 | 采用IEEE 754标准的二进制补码形式 |
double(64位) | -1.7E308 到 1.7E308 | ||
字符 | char(16位) | 0 到 65,535 | 不存在无符号字符 |
布尔 | boolean | true/false | 1/0 |
关于IEEE754标准可以参考 IEEE754详解(最详细简单有趣味的介绍)-CSDN博客
此外具体如何使用上述数据类型,我会在变量一栏中介绍。
3. 字面量
字面量指是指程序中直接表示固定值的符号。字面量是编译器在编译时能够直接识别并理解的值。Java 支持多种类型的字面量,包括整数、浮点数、字符、字符串、布尔值等。我们将针对上面的数据类型一节,外加其他类型进行举例。
public class LiteralDemo{
public static void main(String[] args) {
System.out.println(1);//输出整型字面量1
System.out.println(1.2);//输出浮点型字面量1.2
System.out.println('张');//输出字符型字面量
System.out.println("zhang");//输出字符串字面量
System.out.println(true);//输出bool型字面量
//System.out.println(null);null本身并不是一个对象,也没有数据可以表示或输出,所以直接打印null是不可能的。
}
}
输出结果如下
其中要注意的是字符型变量用单引号,字符串变量用双引号。
4. 特殊字符
1. 换行字符\n
public class InText {
public static void main(String[] args){
System.out.println("hello\nworld");
}
}
从hello后面换行,结果为
2. 回车字符\r
只输出最后一个回车字符以后的东西。
public class InText {
public static void main(String[] args){
System.out.println("hello\rworld\r666");
}
}
结果为
3. 水平制表符\t
表示Tab,即让\t后的部分占8的整数倍位。
public class InText {
public static void main(String[] args){
System.out.println("\thello\tworld");
}
}
结果为
hello和world前都有三个空格。
4. 退格符\b
即不输出\b前的一个字符。
public class InText {
public static void main(String[] args){
System.out.println("hello\bworld");
}
}
没有输出hello的o,结果为
这时候大家可能会疑惑,如果我要输出hello\bworld怎么办?可以在\b前面再加一个\。这个也适用于其他特殊字符。
5. 变量
变量顾名思义是可以变化的量,是需要经常改变和使用的量。通过 数据类型 变量名=数据值 来定义,这个过程叫初始定义赋值,当然也可以 数据类型 变量名,在下一次使用这个变量前赋值即可。
结合第二节和第三节,我们可以用以下例子来熟悉变量。
public class LiteralDemo{
public static void main(String[] args) {
int a=1;
float b=1.2f;//float类型赋值后面要加f或者F,long类型也是,但是建议L,因为l很难和1分辨。
char c='张';
String d="zhang";
boolean e=true;
System.out.println(a);//输出整型常量
System.out.println(b);//输出浮点型
System.out.println(c);//输出字符型常量
System.out.println(d);//输出字符串常量
System.out.println(e);//输出bool型常量
}
}
但使用变量的过程中有很多注意事项。
1.变量只能存一个值,不能存多个值。
2.变量名不能重复,如果重复了,后续代码会以最新定义的那个重复的变量名使用。
3.一条语句可以定义多个变量值。如int a=1,b=2;和int a=1; int b=2;等价,前者肯定更简便一些。
4.使用前一定要赋值,不然该值为空,不能参与后续计算等使用。
6. 标识符
标识符用于命名变量、方法、类、接口以及其他编程元素,在编程中非常重要。良好命名的标识符能够直观地描述变量或函数的用途,且通过使用唯一的标识符,可以避免命名冲突。
遵循以下基本原则
合法字符:标识符可以包含字母(A-Z, a-z)、数字(0-9)、下划线(_)和美元符号($)。但标识符不能以数字开头。
区分大小写:Java区分大小写,因此
myVariable
和myvariable
是两个不同的标识符。不能使用关键字:Java中的保留关键字(如
int
,class
,if
等)不能作为标识符使用。长度限制:虽然Java没有对标识符的长度设定硬性限制,但为了可读性,通常建议标识符的长度在4到15个字符之间。
小驼峰命名法:通常用于变量名和方法名。第一个单词首字母小写,后续单词首字母大写,例如
firstName
、calculateTotalAmount
。大驼峰命名法:通常用于类名和接口名,每个单词的首字母都大写,例如
CustomerData
、EmployeeService
。
7. 键盘输入
从键盘输入需要遵从以下模板
import java.util.Scanner;//import用来导入模块,Scanner模块是输入的必要模块
public class InText {
public static void main(String[] args){
Scanner sc= new Scanner(System.in);//创建对象sc,new是用来分配空间
int numberInput = sc.nextInt();//输入int型整数,也可以读取其他类型,但要将int和nextInt改成对应类型的
System.out.println(numberInput);
}
}
结果为
绿色是我们输入的,灰色是输出的。