-
Java学习笔记-类基础
-
类成员:
Java学习笔记-变量与常量
静态成员:
作用:静态数据与静态方法提供共享数据和方法,遵循public,private,protected修饰符的约束
静态数据的共享性:非静态数据在一个类的不同对象中具有独立性,而静态数据在一个类的不同对象中共享,即一个对象对静态数据的作用会体现在其他类中
方法体内的局部变量不能声明为静态
静态方法的约束:
a.在静态方法中不能使用this关键字
b.在静态方法中不能直接调用非静态数据(在非静态方法中可以调用静态成员)
静态区域:
用于类的初始化,只会执行一次
//静态区域
public class Example{
static{
//some
}
}
-
权限修饰符:
private:
本类可见,同包其他类或子类,其他包的类或子类不可见
protected:
本类及同包其他类和子类可见,其他包的类和子类不可见
public:
全部可见
通过将成员变量声明为private,继承于该类的子类不可访问该成员变量
默认访问权限:
声明类时若没有使用权限修饰符设置权限,则默认为protected
类权限的约束性:
类的权限设定会约束类成员的权限,比如类权限设定为protected,那么类成员中设定为public将失去包外可见性
-
this关键字:
梗概:
作为本类的一个对象
作用:
a.调用成员变量和方法,在本类成员与其他变量或方法重名时指明所属
b.调用构造方法
c.作为方法的返回值
-
类的构造方法:
梗概:
构造类方法是一个与类同名的方法,用于对象的创建,每当类实例化一个对象时,类都会自动调用构造方法
语法:
//声明构造方法
public ClassName{
//内容
}
特征:
a.构造方法没有返回值
b.构造方法的名称与本类名相同
c.在类中没有定义构造方法时,编译器自动创建一个不带参数的默认构造方法。当类中已经定义了有参构造方法,编译器不会再提供无参构造方法,需自行定义
d.this只可以在无参构造方法中的第一句调用有参构造方法
public class Example{
String Data;
public Example(){
this("19980926"); //无参构造通过this调用有参构造
}
public Example(String str){
Data=str;
}
}
-
类的主方法:
梗概:
主方法是类的入口,它定义了程序从何处开始;
主方法提供对程序流向的控制,Java编译器是通过主方法来执行程序的
声明语法:
public static void main(String[] args){
//方法体
}
特性:
a.主方法是静态的,所以在主方法中调用的其他方法也必须是静态
b.主方法没有返回值
c.主方法的形参为数组,其中args[0]~args[n]分别代表程序的1~n个参数,可以使用args.length获取参数个数(初学者表示没用过)
-
对象的创建:
梗概:
对象是在一类事物中抽象出的某一个特例,每个对象都是互相独立的,在内存中占据独立的内存地址(当然静态成员是共享的),每个对象具有自己的声明周期,在一个对象生命周期结束时,对象变成垃圾并由Java虚拟机自带的垃圾回收机制回收
创建对象:
Example name=new Example name(); //无参构造
Example name=new Example name(参数1,参数2,..参数n); //有参构造
name对象被创建出来时,就是对象的一个引用,这个引用在内存中为对象分配了储存空间,在创建对象时自动调用构造方法,所以对象的初始化和构造是被捆绑的
-
对象的比较:
” == “运算符:
用于两个对象引用的地址是否相等
equals()方法:
用于比较两个对象所指内容是否相等
-
对象的销毁:
梗概:
在对象生命周期结束时,分配给该对象的内存地址将会被收回
Java虚拟机眼中的垃圾:
a.对象引用超过其作用范围,视为垃圾
b.将对象赋值为 null
finalize()方法:
垃圾回收器只能回收那些由new操作符创建的垃圾,如果某些对象不是通过new操作符在内存中获取内存区域,这些对象可能不被垃圾回收机制所识别,所以Java中提供finalize(),Object类的方法
该方法被声明为protect,用户需在自己类中定义这个方法,如果类中存在该方法,在垃圾回收时会首先调用该方法,在下一次垃圾回收动作发生时,真正回收被对象占用的内存,实际上finalize()是作为标记垃圾的一个方法,提示垃回收机制对该垃圾进行回收
注明:
垃圾回收或 finalize()方法在Java虚拟机(JVM)内存损耗殆尽时不会执行
System.gc():
强制启动垃圾回收器