Java基础语法
Free Talk
最近在JavaGuide博客里面兜兜转转了几天,一边等华为的实训消息,一边随便看点Java后端开发的知识。但是这一周总感觉看了就忘,而且光看也很容易走神发呆,要不然就是去打王者啥的。决定还要按照直接写的Java后端学习路线一点点走下去,一篇篇写博客敦促自己,上个月的时候写了一些JVM相关的文章,现在把之前鸽的Java语言基础先补上。
这边Java基础语言主要参照菜鸟教程和JavaGuide完成的,计划在今明两天完成Java语言基础系列博客。
基础知识
四要素
任何一个Java程序都可以认为是一系列对象的集合,而对象之间通过彼此调用方法来协调工作。
- **对象:**对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
- **类:**类是一个模板,它描述一类对象的行为和状态
- **方法:**方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
- **实例变量:**每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
基础语法
- **大小写敏感:**Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
- **类名:**对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
- 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
我自己方法名这块之前好像总是大写,记下了
- **源文件名:**源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
- **主方法入口:**所有的 Java 程序由 **public static void main(String[] args) ***方法开始执行。
Java标识符
- 类名、变量名以及方法名都被称为标识符。
- 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
- 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
- 关键字不能用作标识符
- 标识符是大小写敏感的
- 合法标识符举例:age、$salary、_value、__1_value
- 非法标识符举例:123abc、-salary
进阶知识
Java修饰符
Java可以使用修饰符来修饰类中方法和属性。
- **访问控制修饰符 😗*default, public , protected, private
- 非访问控制修饰符 : final, abstract, static, synchronized
Final修饰符
Final修饰符可以用来修饰类、方法和变量。
- **类:**final修饰的类不能被继承,final类中的所有成员方法都会被隐式的指定为final方法;
- **方法:**final修饰的方法不能被重写;
- **变量:**final修饰的变量是常量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能让其指向另一个对象。
Abstract修饰符
- 抽象类:
- 抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。
- 一个类不能同时被abstract和final修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。
- 抽象类可以包含抽象方法和非抽象方法。
- 抽象方法:
- 抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供。抽象方法不能被声明成final和strict。
- 任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。
- 如果一个类包含若干个抽象方法,那么该类必须声明为抽象类。抽象类可以不包含抽象方法。
Static修饰符
- 修饰成员变量和成员方法:
被 static 修饰的成员方法属于类,不属于单个这个类的某个对象,被类中所有对象共享,可以并且建议通过类名调用。
被static 声明的成员变量属于静态成员变量,静态变量 存放在 Java 内存区域的方法区。
调用格式:类名.静态变量名 类名.静态方法名()
- 静态代码块: 静态代码块定义在类中方法外, 静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。 该类不管创建多少对象,静态代码块只执行一次.
- 静态内部类(static修饰类的话只能修饰内部类): 静态内部类与非静态内部类之间存在一个最大的区别: 非静态内部类在编译完成之后会隐含地保存着一个引用,该引用是指向创建它的外围类,但是静态内部类却没有。没有这个引用就意味着:1. 它的创建是不需要依赖外围类的创建。2. 它不能使用任何外围类的非static成员变量和方法。
- 静态导包(用来导入类中的静态资源,1.5之后的新特性): 格式为:
import static
这两个关键字连用可以指定导入某个类中的指定静态资源,并且不需要使用类名调用类中静态成员,可以直接使用类中静态成员变量和成员方法。
Synchronized修饰符
Synchronized关键字声明的方法同一时间只能被一个线程访问。Synchronized修饰符可以应用于四个访问修饰符。
Java变量
- 类变量:独立于方法之外的变量,用 static 修饰。
- 实例变量:独立于方法之外的变量,不过没有 static 修饰。
- 局部变量:类的方法中的变量。
1 | public class Variable{ |