signed

QiShunwang

“诚信为本、客户至上”

JAVA小记2

2021/5/14 22:06:56   来源:

四.面向对象上

1.包机制

语法格式为 package pkg1[.pkg2];

一般在命名是,以公司域名为包名,形如www.azh.com

包的作用实质上相当于文件夹的作用

为了使用包的成员。需要在java中导入该包。使用import可将包导入,形如

import package1[.package2].(classname|*)

 

2.下面首先编写一个简单的学生的类的代码,一般类的模板基本与此相同。

package www.zhe.com;
public class Student
{   public String name;  // 学生的姓名
	public String number;   // 学生的学号
	public boolean sex; // true为男生 false为女生
}
	public static void main(String[] args)
	{			
		Student s1 = new Student();/*JAVA中创建对象要用new,且JAVA有垃圾回收机制,无需用delete删除*/ 
        s1.name = "azhe";//设置学生的属性
		s1.number = "2020214486";
		s1.sex = true;		
		System.out.println("学号: " + s1.number);//输出学生的各个属性
		System.out.println("姓名: " + s1.name);
		System.out.println("性别: " + s1.sex);
	}

注:JAVA中的垃圾回收机制 

值得一提的是,与c++不同,JAVA中有着强大的垃圾回收机制,无需人工清理释放内存,例如对new的delete。

1.引用计数法:对象每次被引用会加一,会清理数值为0 的对象,缺点是无法清理 循环引用的无用对象。

2.引用可达法:查找清理未被引用的对象。

3.通用分代垃圾回收,详细过程如下:

3.栈,堆和方法区

栈,堆以及方法区的具体分配实例如上面例子所示。

1.栈描述的是方法执行的内存模型,每个方法被调用时都会创建一个栈,栈最明显的特点是“先进先出,后进后出!‘’,是一片连续的空间。

2.堆用于储存创建好的对象和数组,不连续的空间。

3.方法区属于堆,也叫静态区,主要存储类和常量信息,静态变量,字符串常量一类。

4.面向对象的封装,继承与多态

1.封装可以隐藏实现细节,使得代码模块化;
2.继承可以扩展已存在的代码模块(类);它们的目的都是:代码重用。

(1.JAVA中类的继承是不可以实现多继承的,但可以通过B继承A,C继承B,来间接实现某些方法。

2.JAVA中的接口可以实现多继承。)
3.多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,重写或重载时发挥作用。

形象点来说,就是实现“一个接口,多种方法”

5.this关键字

1.this表示当前对象,当访问对象自身的属性时,可以直接用this访问

通常情况下,this是可以省略的(让代码更简洁,清晰)

当与方法内变量重名时,不能省略this,因为方法内的变量称为 局部变量,局部变量的名字会覆盖 类的属性 的名字,因此必须显式通过this调用类的属性

2.JAVA中this关键字的使用与c++大致相同,但this在调研构造方法时,this不能直接像调用成员方法一样,但可以使用this([实参列表])调用构造方法

但this关键字必须放在首行,且只能出现一次。

6.static关键字

1.静态变量

使用static修饰的变量将被类的所有对象共享,若未用static修饰属于具体对象独有

class Person{
    int number;
public Persion()
{
number++;
}
}
public class TestNumber{
public static void main(string[]args){
Persion p1=new Persion();
Persion p2=new Persion();
System.out.println(p2.number);}

}

如上述代码,输出结果为1,因为p1与p2是分别对number加一。

class Person{
static int number;
public Persion()
{
number++;
}
}
public class TestNumber{
public static void main(string[]args){
Persion p1=new Persion();
Persion p2=new Persion();
System.out.println(p2.number);}

}

number加上static修饰后,输出结果为2,这是因为p1和p2同时对同一个number操作。

注:static只能修饰成员变量,在修饰局部变量时,会报错。

2.静态方法

静态方法只能访问静态方法或静态变量。

7.继承时重写或重载方法

1.使用esclipe写程序时,重写方法先在子类里面右键->Scource->Override…,然后选择想要重载的方法来写

2.子类重写父类的方法后,子类对象无法访问父类被重写的方法,若想在子类中访问父类被重写的方法,可以通过super关键字来实现。

 

 

 

3.super调用构造函数与this调用时用法相同,同样需要放在首行。