Java学习过程
java学习
一、java简介
java是一门面向对象的编程语言。
java SE、EE和ME分别对应标准版,企业版,微型版
先执行javac对源文件进行编译,编译成class字节码文件,然后使用java命令对字节码文件的类进行解释,解释的过程放在java虚拟机上,所以可以跨平台运行。
二、java基本语法
一整个java程序是一系列互相调用的对象的集合。
类:类是一个模版,具有一系列的状态和行为。
对象:对象是类的一个实例,具有确定的特征和确定的行为
方法:方法就是对象的行为,一个类可以用很多方法。
实例变量:实例变量就是对象的状态。
一个源文件只能有一个public
类,可以有多个非public
类。
import要放在package之前,package要放在整个程序之前,可以包含类和接口。
所有的java程序都会执行类的方法main
。
类名首字母及往后每个单词的首字母大写 ,方法名第一个单词首字母小写,往后每个单词首字母大写。
java的注释和c以及c艹一样 ,可以单行也可以多行注释。
通过已有的类定义新的类叫做继承,新定义的类叫做子类,被继承的类叫做超类。
变量
成员变量(也叫做实例变量)被定义在类中,方法体之外,类成员可以拥有被实例化的成员变量,成员变量可以被方法访问,在对象被创建时创建,在对象被销毁时销毁。
局部变量被定义在类的方法中,在方法中被初始化,方法结束后就自动销毁,局部变量使用之前必须初始化,和c的局部变量一样。
静态变量(static)定义在类中,方法体之外的,静态变量的值在程序运行期间只有一个副本,这个变量是该类的属性,不管是哪个实例对象都具有这个静态变量的值。在加载类(定义类时)需要给定义,不定义会报错。还有一种常量需要用final关键字定义,常量的值不能改变,静态变量的值可以改变。静态变量可以被修饰(常用public)
变量可以连续声明,定义变量后可以赋值。
变量强制转换顺序
1 | byte,short,char—> int —> long—> float —> double |
构造方法
每个类都应该有一个构造的方法,构造的方法必须与类的名字相同,创建类的对象时需要用到构造方法。
创建对象
有类和类的构造方法,就可以用new
来创建对象。
创建对象的格式为类名
对象名
= new 构造方法
修饰符
public对所有类可见。
protected对同一个包内的类和子类可见。
default同一包内可见。
private同一类可见,类和接口不能用。
static静态变量,也可以用来声明独立于对象的静态方法,静态方法不能使用类的非静态变量,静态方法和静态变量类似,可以独立于实例存在,但是要依赖于构造类来调用。
final不能被更改的变量,常和static
一起用创建类的常量。
三、特殊类
NUMBER类
将一个数字类型作为一个类使用。
MATH类
math类可以直接在主函数中调用,包含了一些常用的数学运算的方法,number类也可以使用。
CHARACTER类
作为一个字符类,代替内置对象字符
STRING类
用STRING 类型new的类不能被更改,可以使用StringBuffer和StringBuilder类。
四、细枝末节
继承
子类需要用到父类的一部分定义,就可以用继承
class SonName extends FatherName
父类也可以叫做基类和超类,子类也可以叫做派生类。
这样创建出来的子类具有父类中所有不被protected
的变量和方法。
1)成员变量重名 直接访问子类的变量时,如果是同名变量,则优先使用子类本身的,或者向上找到最近的父类的该变量。
间接通过方法访问变量时,方法定义在哪就优先使用该类的变量,如果没有就逐层向上找。
2)成员方法重名 同名方法优先访问离自己最近的,如果自己没有这个方法就向上找。
在类中要访问自己的成员变量和方法时,可以使用关键词this,要访问父类的成员变量和方法时,可以使 用super
3)方法覆盖重写 用@Override
可以表示覆盖重写,写一个和父类中方法同名的方法且参数列表相同的,就可以使用覆盖重写。子类方法的返回值范围必须小于等于父类方法的返回值范围。子类方法的权限必须大于等于父类方法的权限修饰符。方法覆盖重写只针对实例方法,对静态方法覆盖没有意义。
4)方法重载 重写一个无参的方法将他变成有有参的方法,或者改变这个方法的参数列表。
5)构造方法 子类中有一个默认的隐藏的super()
调用父类的无参构造方法,构造子类对象时一定会先执行父类的无参构造方法。可以使用super()关键字来调用父类构造方法,并将其重载。**super()**的父类构造调用必须是子类构造方法的第一句,即如果父类的构造方法有参,则必须使用带有一个参数的super()
。
6)this调用构造方法 在同一个类中可以有多个构造方法,多个构造方法可以有不同的参数(无参或者多个参数),在构造方法内可以通过 this(...)
直接调用另一个构造方法,调用本类的构造方法必须是第一句并且唯一,但是自带一个隐式的super()
,不能够显式的重写调用 super
。构造方法多次调用时,来自父类的构造方法 super()
只会执行一次。
7)抽象abstract 抽象方法必须在抽象类中,在定义类和方法之前加上abstract就是抽象类和抽象方法。必须要有一个子类来继承抽象父类,必须要有方法覆盖重写父类中的所有抽象方法(实现)。抽象父类不能直接创建对象。
Final是终结符,不能产生子类。private 修饰的成员变量可以被继承,不能被子类访问
接口和包
包:也叫类库,也就是一组类的集合。必须作为源文件的第一句来声明包的名字。源文件必须放在包同名目录下,然后使用javac -d .
就可以在当前目录下生成对应包名字的目录,并且把生成的.class
文件直接放在同名目录下。
不同包中相同的类不会发生冲突,相同功能的类一般放在同一个包里,同一个包中的类可以相互访问,不同包里的类一般不能相互访问。
package
语句后可以跟import
语句来导入其他包中的类,包中的类需要有public
属性才可以被调用。
接口: 接口是一种具有常量成员变量和抽象方法的抽象类,接口是一种引用数据类型。用关键词interface定义接口。
被定义的接口不能直接创建实例对象,必须用非抽象类通过非抽象的implement实现,implement是对接口的实现不是继承(和继承类似),非抽象类实现接口必须实现接口中的所有抽象方法。接口可以被继承,继承的特性和类继承类似。接口的继承可以多继承,即继承两个父接口。接口中的常量可以直接通过接口名称访问。
定义接口的抽象方法时,要使用public abstract
(可以选择性省略)。
接口中的默认方法,使用default
创建默认方法,默认方法不需要实现类覆盖重写,可以直接被调用,也可以被覆盖重写。
接口中的静态方法,使用static
创建方法,
- Title: Java学习过程
- Author: HarderHeng
- Created at : 2024-01-20 12:59:06
- Updated at : 2024-01-20 18:07:39
- Link: https://harderheng.life/2024/01/20/Java学习过程/
- License: This work is licensed under CC BY-NC-SA 4.0.