Java学习(七)之面向对象

面向对象(总结的点):
如何描述类:类成员四个(属性,块,构造函数,方法)
如何创建对象:对象是执行类的成员
类之间的关系:类继承(接口实现),包含,依赖(属性是对象),
类中的特性:权限修饰符,特征修饰符
类之间的设计问题:设计模式(单例,策略,适配器)
类中的一些细节:内部类,枚举类
内存机制问题:类创建在哪,对象创建在哪,继承关系,静态成员,方法执行都在内存中的哪一块
栈内存 ----> 创建开始,用完回收
堆内存 ----> new创建的对象
方法区 ----> 类,常量,静态元素,内存中只有一份,回收不了

面向过程的编程思想

类 —人类 抽象笼统的概念 描述 — 类事务 具有相同的特征行为
  人类 — 有姓名 有性别 — 静态描述特征(特征) — 属性
      能吃饭 能说话 — 动态动作行为(做事) — 方法
对象 — 具体的人 人类中一个具体的人—>小明
   小明有名字,有性别,能吃饭 能说话
属性:[权限修饰符] 数据类型 变量名;
方法:权限修饰符 返回值类型 方法名字(参数列表) [抛出异常]{
//方法体
}
 1.无参数无返回值
 2.无参数有返回值
 3.有参数无返回值
 4.有参数有返回值

public class Demo{
	public void changeNum(int x){
		System.out.println("初始x="+x);
		x = 10;
		System.out.println("改变之后的x="+x);
	} 
	
}
public class Main {
	public static void main(String[] args){
		int a = 1;
		Demo t = new Demo();
		t.changeNum(a);
		System.out.println("main里面a的值为"+a);
	}
}
/*输出
初始x=1
改变之后的x=10
main里面a的值为1
*/

在这里插入图片描述
0.加载类模板到内存的方法区,
1.方法存在堆内存的对象空间里
2.方法的执行是在栈内存中开辟一块临时的方法执行空间(图中红色区域,执行完就被回收)

public class Demo{
	public void changeArray(int[] x){
		System.out.println("初始x[0]="+x[0]);
		x[0] = 10;
		System.out.println("改变之后的x[0]="+x[0]);
	} 	
}

public class Main {
	public static void main(String[] args){
		int[] a = {1,2,3,4};
		Demo t = new Demo();
		t.changeArray(a);
		System.out.println("main里面a[0]的值为"+a[0]);
	}
}
/*输出
初始x[0]=1
改变之后的x[0]=10
main里面a[0]的值为10
*/

形参与实参
形参:是方法执行时的临时变量空间
实参:是方法调用时传递进去的参数
方法调用时,会将实参的内容传递给形参,如果内容是基本类型,传递的是值,形参改变,实参不变;如果内容是引用类型,传递的是地址,形参改变,实参也跟着改变

堆内存里的东西是GC来回收的:
Runtime类中提供了几个管理内存的方法
Object类中有一个finalize方法,如果重写也能看见对象回收
GC系统提供的一个线程,回收算法

package gc;

public class Person {
	//默认继承Object
	public Person() {
		System.out.println("对象被创建了");
	}
	public void finalize() {
		System.out.println("对象被回收了");
	}
}
=====================================================
package gc;
import gc.Person;

public class Test {
	public static void main(String[] args) {
		Person p = new Person();
		p = null;
		System.gc();
	}
}
/*
对象被创建了
对象被回收了
*/

Runtime 是一个单例对象,所以要用类名.

Runtime runtime = Runtime.getRuntime();
long max = runtime.maxMemory(); //保留空间+可用空间+空闲空间
long total = runtime.totalMemory();//可用空间+空闲空间
long free = runtime.freeMemory();//空闲空间
System.out.println(max);
System.out.println(total);
System.out.println(free);
/*
1877475328
126877696
124864368
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值