Java基础语法
- 1.类和对象
- 1.1 引用
- 1.2 对象null
- 2.基础语法
- 3.标识符
- 4.修饰符
- 5.变量
- 5.1 局部变量、类变量、成员变量
- 5.2 常量和静态变量的区别
- 5.3 静态变量的命名规范
- 6.数组
- 7.枚举
- 8.关键字
- 9.注释
- 10.空行
- 11.继承
- 12.接口
- 13.Java源程序与编译型运行区别
1.类和对象
- 类:把具有相同属性与行为的一类对象抽象为类。类是抽象概念,如:人类、学生等,无法具体到每个实体。类是一个描述,一种类型。
- 对象:某个类的实体。当有了对象后,这些属性便有了属性值,行为也有了相应的意义。如:某个具体的人(如:小王),某个具体的学生(如:小刘)
类是描述某一类对象的统称,对象是这个类的一个实例。
1.1 引用
创建一个Student
类型的对象,理解引用的概念:
/*
new 表示创建
new Student()表示创建一个 Student 类型的对象
stu 表示该对象的名字(专业的说,stu 是一个引用,它引用了一个对象)
*/
Student stu = new Student();
stu.phone="123";
/*
这里表示 stu 和 xiaobai 引用的是同一个对象,并不是把 stu 的值赋值给 xiaobai
也不是复制一个 stu 对象
*/
Student xiaobai = stu;
/*如果修改 xiaobai 的 phone 字段*/
xiaobai.phone = "15191822222";
/*打印*/
System.out.println(stu.phone);
/*会发现控制台的 phone 为 15191822222 ,因为他们引用的是同一个对象*/
1.2 对象null
null
表示空,不存在
Student stu = null;
表示stu
不指向任何对象.它的属性和方法是不可访问的
2.基础语法
- 对大小写敏感
- 类名:用大驼峰式命名(如:MyTest)
- 方法:用小驼峰式命名(如:myHello)
3.标识符
- 所有标识符应该是字母A-Z,a-z,可以包含$,_
- 首字母不可以是数字或特殊字符(如:-salary,12value)
4.修饰符
- 访问控制修饰符:
default , public , protected , private
- 非访问控制修饰符:
final , abstract , static , synchonized
5.变量
5.1 局部变量、类变量、成员变量
- 局部变量:
在方法、构造函数或者语句块中定义的变量。变量的声明和初始化都在方法中,方法结束后,变量自动销毁。
int localVar = 10;
- 类变量(静态变量)
声明在类中,方法体之外,必须声明为static
类型。它们属于类而不是实例,所有实例共享同一个变量的值,类变量在类加载时只被初始化一次。无论创建多少个类实例,静态变量在内存中只有一份拷贝,被所以实例共享。
public class ExampleClass{
static int classVar;
//当修改classVar时,所有实例的classVar都会被修改
}
访问方式
//通过类名访问
ExampleClass.classVar =10;
//通过实例名访问
ExampleClass exclass = new ExampleClass();
exclass.classVar = 20;
- 成员变量(非静态变量、实例变量)
声明在类中,方法体之外。在创建对象的时候被实例化。可以被类中的方法、构造方法和特定类的语句块访问。
public class ExampleClass{
int instanceVar;
//当修改instanceVar时,只有该实例的instanceVar被修改
}
5.2 常量和静态变量的区别
常量也是和类相关的,但它是用final
关键字修饰的变量,一旦被赋值就不能被修改。与静态变量不同的是,常量在编译时就已经确定了它的值,而静态变量的值可以在运行时改变。常量常用于储存固定的值,如数字通常熟、配置信息等。静态变量通常用于储存可变的数据。
5.3 静态变量的命名规范
- 使用驼峰命名法:首字母小写,后续每个单词的首字母大写
public static int myStaticVariable;
- 全大写字母:全大写字母,单词直接用下划线分隔
public static int MAX_SIZE = 100;
- 描述性:变量名应该是有意义的,能够清晰地表达该变量的用途。避免使用单个字符或不具有明确含义的缩写。
- 避免使用索性:尽量避免缩写,以提高代码的可读性。如果使用缩写是有必要的,确保广泛理解,并在注释中进行解释。
6.数组
数组是储存在堆上的对象,看一步保存多个同类型变量。(如:int[] values ={1,2,3,4,5};
)
7.枚举
枚举限制变量稚只能是预设的值。使用枚举可以减少代码中的BUG。
例如,我们为果汁店设计一个程序,果汁的容量种类设置为小杯、中杯、大杯。除这三种容量外,将不容许有其他的容量类型。
class FreshJuice{
enum FreshJuiceSize{SMALL,MEDIUM,LAREG}
}
使用:
int size = FreshJuice.FreshJuiceSize.MEDIUM;
8.关键字
类别 | 关键字 | 说明 |
---|---|---|
访问控制 | private | 私有的 |
protected | 受保护的 | |
public | 公共的 | |
default | 默认 | |
类、方法和变量修饰符 | abstract | 声明抽象 |
class | 类 | |
extends | 扩充、继承 | |
final | 最终值、不可改变的 | |
implements | 实现(接口) | |
interface | 接口 | |
native | 本地、原生方法(非 Java 实现) | |
new | 创建 | |
static | 静态 | |
strictfp | 严格浮点、精准浮点 | |
synchronized | 线程、同步 | |
transient | 短暂 | |
volatile | 易失 | |
程序控制语句 | break | 跳出循环 |
case | 定义一个值以供 switch 选择 | |
continue | 继续 | |
do | 运行 | |
else | 否则 | |
for | 循环 | |
if | 如果 | |
instanceof | 实例 | |
return | 返回 | |
switch | 根据值选择执行 | |
while | 循环 | |
错误处理 | assert | 断言表达式是否为真 |
catch | 捕捉异常 | |
finally | 有没有异常都执行 | |
throw | 抛出一个异常对象 | |
throws | 声明一个异常可能被抛出 | |
try | 捕获异常 | |
包相关 | import | 引入 |
package | 包 | |
基本类型 | boolean | 布尔型 |
byte | 字节型 | |
char | 字符型 | |
double | 双精度浮点 | |
float | 单精度浮点 | |
int | 整型 | |
long | 长整型 | |
short | 短整型 | |
变量引用 | super | 父类、超类 |
this | 本类 | |
void | 无返回值 | |
保留关键字 | goto | 是关键字,但不能使用 |
const | 是关键字,但不能使用 |
9.注释
Java编译时,会将代码里注释忽略掉。增强程序的可读性、可维护性。
注释是良好的编程习惯,它使程序员更容易地理解代码的用途和功能。
- 多行注释:
/**/
- 单行注释:
//
- 文档注释:
/** 绘制一个条形图(描述)
* @author 作者
* @param 参数
* @return 返回值
*/
文档注释示例:
- 头部
/**
* 项目名称:
* 描述:
* 创建时间:
* @author:<a href="mail to:xx@xx.com" rel="nofollow">作者</a>
* @version v1.0
* @update:[序号][日期YYYY-MM-DD][更改人姓名][变更描述]
*/
- 方法:
/**
* @Title:[题目]
* @Description:[功能描述]
* [使用案例]
* @Param:[参数]
* @Return:[返回值]
* @update:[序号][日期YYYY-MM-DD][更改人姓名][变更描述]
*/
10.空行
Java编译时,会将代码里空行忽略掉
11.继承
如果你创建的新类需要的属性和方法,在别的类里得到实现,就可以利用继承的方法,重用已存在的方法和属性,而不是重写这些高度相似的代码。
- 被继承的类称为超类(super class)或父类
- 派生的类称为子类(sub class)
12.接口
接口可以理解为对象间相互通信的协议。接口只定义派生用到的方法,具体实现在派生类里实现。