携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情
1️⃣前言
今天的笔记内容是:
- 【Java基础语法知识】
2️⃣Java程序基础
✨基本结构
public class MyClass {
}
java程序的基本单位就是class,也就是类。- 上述代码中:
public是访问修饰符,表示该类是公开的class是关键字,用于定义类MyClass是类的名字(名称必须以字母开头,后接字母、数字或下划线_)
public class myClass {
public static void main(String[] args) {
}
}
- 在类里面可以有若干方法(
method),用于定义各种执行语句 - 上述代码中:
public是访问修饰符,表示该方法是公开的static也是修饰符,表示该方法是静态的void表示方法无返回值mian是方法的名称(命名规则和类一样)(String[] args)是一个String类型的数组args
public class myClass {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
- 在
main方法中,可以定义若干语句 - 在
java中,每条语句的结尾标志都是一个分号(;) System.out.println("Hello world!");就是一条输出语句- 输出结果为:
Hello world!
✔️注释
java程序中的注释并不影响Java程序的执行,因为源程序编译后形成的class文件里已经没有了注释。同时需要注意到,坚持写注释既方便再次阅读代码,也便于代码的维护。
- 一、单行注释
单行注释以双斜线"//"开头,后面编写注释的内容
// 这是单行注释
- 二、多行注释
多行注释以/*开头,以*/结束,中间就是注释
/*
这是
多行
注释
*/
- 三、特殊注释
有时多行注释会以/**开头,以*/结束,而且每一行都用*开头,这种注释方式通常用于自动创建文档
/**
* 该特殊注释一般用于
* 自动创建文档
*
* @auther yi
*/
public class Hello {
public static void main(String[] args) {
...
}
}
🌱变量
变量就是向内存申请一块空间用于存储数据的容器。也就是说,我们可以将不同数据类型的值存储在变量中,方便后续操作。
变量使用的注意事项如下:
- 未声明的变量无法使用;
- 未初始化的变量不能使用;
- 变量的赋值必须符合声明的数据类型;
- 变量的名字必须符合标识符命名规范。
- 变量存放的值可以修改
- 一个变量可以赋值给另一个变量
举个例子:
public class myClass {
public static void main(String[] args) {
int x = 6; // 声明一个int类型的变量x并初始化为6
//int x // 错误!无法重复定义变量
int y = x; // 声明另一个int类型的变量y并初始化为x(x的值为6,因此y的值也是6)
x = 10; // 变量x中的值可以修改
System.out.println("y:"+ y);
System.out.println("x:"+ x);
}
}
运行结果为:
y:6
x:10
🌳数据类型
变量的基本数据类型如下:
由于变量存储值的大小不同,变量的使用场景不同等等,变量的数据类型会有所不同。因此我们该为变量声明为正确的数据类型
不同数据类型所占用的字节数是不同的,上述图中也有显示。但布尔类型有些特殊。Java语言对布尔类型的存储并没有作出明确规定,理论上存储布尔类型只需要1bit,但一般JVM内部会将boolean表示为4字节。
需要注意,整数的默认类型是int,浮点数的默认类型是double
| 数据类型 | 默认值 |
|---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
boolean | false |
char | 'u0000' |
🔋 常量
在java中,我们使用final关键字来声明一个变量是常量。
final double PI = 3.1415;
需要注意的是,初始化常量后无法对其再次赋值。(也就是说常量值无法修改)
💡转义字符
| 符号 | 字符含义 |
|---|---|
\" | 双引号 |
\' | 单引号 |
\\ | 反斜杠 |
\n | 换行 |
\s | 空格 |
\r | 回车 |
\f | 换页符 |
\b | 退格 |
\0 | 空字符 |
\t | 制表符 |
🌴类型转换
- 类型范围小的变量可以直接赋值给类型范围大的变量;
比如定义一个byte类型的变量a:byte a = 8;接着定义int类型的变量b,此时语句int b = a;是合法的;
-
如果想将表示范围大的类型转换为范围小的类型,则必须使用强制类型转换(此时可能会发生溢出或精度损失)
-
将浮点数转换为整数时,小数部分会被舍弃掉(而不是四舍五入)
public class myClass {
public static void main(String[] args) {
double test1 = 9.99; // 定义一个浮点数 9.99
int test2 = (int)test1; // 强制类型转换:将 double 类型转换为 int 类型
System.out.println(test2); //输出结果为 9
}
}
- 表达式的计算结果的数据类型是由表达式中最高数据类型决定的;
比如表达式中有int和byte的数据;此时byte类型会先转换为int类型再参与运算;
- boolean类型的变量无法进行类型转换;
🧨变量类型
public class Variable {
public void method() {
int i =0; // 局部变量
}
String str="hello world"; // 成员变量,也叫实例变量
static int allClicks=0; // 静态变量,也叫类变量
}
| 变量类型 | 局部变量 | 成员变量(实例变量) | 静态变量(类变量) |
|---|---|---|---|
| 位置 | 方法内 | 类中,方法外 | 类中,方法外 |
| 特点 | 当执行完毕后,将被销毁,而且访问修饰符无法作用于局部变量 | 通过变量名访问。如果在静态方法或其他类中,就应该使用完全限定名:ObjectReference.VariableName ;通过使用访问修饰符可以使实例变量对子类可见 | 静态变量在类中以static关键字声明,初始化后不可改变 |
| 默认值 | 无 | 有(0/false/null) | 有(0/false/null) |
| 存储位置 | 栈区 | 堆区 | 方法区 |
| 生命周期 | 与方法共存亡 | 与对象共存亡 | 与类共存亡 |
静态变量和实例变量区别
- 静态变量不属于某个实例对象,而是属于类。因此也叫类变量。通过类名就可以调用静态变量
- 实例变量是属于某个对象的属性。只有创建了对象,才能调用实例变量。其就是对象的一个实例。实例变量在整个类内部是可访问的,而不管实例变量声明在类的哪个位置。
总之,类变量可在类中直接使用,实例变量需实例化后才能使用。
3️⃣写在最后
好了,今天的笔记就记到这里。