IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 第一篇:类与对象 -> 正文阅读

[Java知识库]第一篇:类与对象

类与对象

类与对象的概念

类:对事物的抽象概括,对象:对抽象事物进行实例化

类和对象的创建

类的创建格式:修饰词  class  类名 {}
对象创建的格式:类型  对象名  =  new  类型();

对象的成员变量的赋值及访问

赋值格式:对象名.变量名 = xxx;
访问方法:配合 System.out.println() 使用

对象的成员方法的访问

访问方法:对象名.方法名();

? 补充:成员变量有默认初始值

代码演示:类与对象

public class Demo {
    public static void main(String[] args) {
        Student student = new Student();
        student.name = "gwz";
        student.age = 18;
        System.out.println(student.name + ":" + student.age);
        student.run();
        student.eat();
    }
}
class Student {
    String name;
    int age;
    void run() {
        System.out.println("喜欢运动");
    }
    void eat() {
        System.out.println("喜欢吃饭");
    }
}

对象的内存分配

内存概述

jvm = 方法区、栈区、堆区

方法区:存储.class的相关文件
		成员变量、成员方法
		
栈区:【先进后出】main方法,最先开始,最后结束
		栈帧:每次调用方法,都会在调用栈上开辟一个独立的栈帧
		栈帧的生命周期:由方法的调用开始,到方法最后一句代码结束
		局部变量存放在栈中【因为方法在栈中,所以局部变量也在栈中】
		局部变量的生命周期:由方法的调用开始,到方法最后一句代码结束
		
堆区:【new出来的】
		存放的是对象的地址【每个存储对象在堆中都有一个唯一的地址值和栈中的引用地址值一致】
		成员变量存放在堆中【因为对象在堆中,所以成员变量也在堆中】
		成员变量的生命周期:由对象的创建开始,到对象回收结束

代码演示

public class Student_Test {
    public static void main(String[] args) {
        Student student = new Student();
        student.name = "gwz";
        student.age = 18;
        System.out.println(student.name + ":" + student.age);
        student.run();
    }
}
class Student {
    String name;
    int age;
    void run() {
        System.out.println("运动");
    }
}

内存分析图

在这里插入图片描述

解析内存图

根据上面的代码
1. 方法区中,加载类中的信息(成员变量、成员方法、静态方法)
2. 主函数(main)在栈中开始运行,创建一个对象,其对象名就是一个引用地址
3. 该对象(new)在堆中开辟空间,此刻对象的成员变量是默认初始值,成员方法以地址的形式存放在堆中
4. 通过对象的引用地址(student.name = "gwz"),从堆中找到并赋值
5. 若成员方法中无参数列表,直接在栈中运行
6. 若成员方法中参数列表中包含对象名,此时对象名表示的是对象的引用地址

对象作为方法参数传递

代码演示

public class Student_Test {    
	public static void main(String[] args) {        
		Student student = new Student();        
		student.name = "gwz";        
		student.run(student);    
	}
}
class Student {    
	String name;    
	void run(Student student) {        
		System.out.println("获取对象名信息" + student);	// 该对象的地址是com.Test.Student@1b6d3586        
		System.out.println(student.name + "喜欢运动");    
	}
}

对象作为方法返回值类型

代码演示

public class Student_Test {    
	public static void main(String[] args) {        
		Student s = getMethod();	// 3. s对象名的地址是是0x123456         
		System.out.println(s.name + ":" + s.age);    
	}    
	public static Student getMethod() {        
		Student student = new Student();	// 1. 假设student对象地址是0x12345        
		student.name = "gwz";        
		student.age = 18;        
		return student;		// 2. student的返回值是0x123456     
	}
}
class Student {    
	String name;    
	int age;
}

基本数据类型作为返回值时,返回的是数值

引用数据类型作为返回值时,返回的是地址

垃圾回收机制

垃圾回收器是JVM自带的一个线程(自动运行程序),用于回收没有任何引用所指向的对象
程序员可以调用System.gc()来“建议”垃圾回收系统回收资源,但是垃圾回收系统什么时候被执行以及是否被执行,程序员都控制不了 
	- 例   Cell c = new Cell();	 		
	- c = null;	
此时,堆中创建了一个对象,但对象没被引用
建议:在某个对象使用之后,再也不会使用到情况,一定要进行null值处理(c = null),避免内存泄漏

System.gc方法

GC的回收对程序员来说是透明的,并不一定一发现有无引用的对象就立即回收。一般情况下,当我们需要GC线程即刻(短时间内)回收无用对象时,可以调用System.gc()方法。此方法用于建议JVM马上调度GC线程回收资源,但具体的实现策略取决于不同的JVM系统	
通俗易懂:GC的回收对程序员来说是透明的,我们通过 "建议" JVM的方法实现垃圾的回收:System.gc();
	如果堆中的对象不可用的数量过多,就会出现内存泄漏的问题						   												
建议:在某个对象使用之后,再也不会使用到情况,一定要进行null值处理(c = null),避免内存泄漏
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-03 01:03:47  更:2022-02-03 01:06:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:50:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码