Java面向对象

1.基本概念:

面向对象:是将过程封装与对象;

   面向过程;即面向方法编程,其粒度更细

   类,对象,实例,方法:类是对象的抽象,对象是类的实例。经典类比就是类是汽车图纸,根据图纸生成的汽车就是对象。方法就是函数,也是类的行为。

    面向对象的特征:封装;继承;多态(后面具体阐述)

    类的描述:属性-----也就是成员变量

      方法-----类里面的函数

     构造函数;(函数名与类名一致,默认是无参数的,可不写。可通过函数重载写带参数的,用于初始化)

      匿名对象:就是没有变量名,直接new 类名();

      封装就是把属性隐藏,用private修饰,外部只能通过公有的get,set调用

class Dog
{
	private String name="wangcai";
	public static String breed="Shiba";
	private int age;
	private String color;

	public void cry()
	{
	System.out.println("wang..wang..!"+" "+breed+" "+name+" "+color+" "+age);
	}

	public void setName(String name)
	{
	this.name=name;
	}
	
	public void setAge(int age)
	{
	this.age=age;
	}

	public void setColor(String color)
	{
	this.color=color;
	}

	public String getName()
	{
	return name;
	}

	public int getAge()
	{
	return age;
	}

	public String getColor()
	{
	return color;
	}

	public String getBreed()
	{
	return breed;
	}

//构造函数   默认(无参数)
public Dog()
	{}
//带参数
public Dog(String name)
	{
	setName(name);
	}

public Dog(int age)
	{
	setAge(age);
	}

public Dog(String name, int age)
	{
	setName(name);
	setAge(age);
	}


}


2.内存(存储分为三个部分,方法区和堆区,栈区)

  方法区 方法区也是线程共享的区域,用于存储已经被虚拟机加载的类信息,常量,静态变量和即时编译器(JIT)编译后的代码等数据。

    堆区:数组+对象,每个实例都有内存地址,当该地址没被任何引用时,地址会被在不确定时间回收

    栈区:存储局部变量是线程私有的,生命周期与线程相同。每个方法被执行的时候都会创建一个栈帧用于存储局部变量表,操作栈,动态链接,方法出口等信息。每一个方法被调用的过程就对应一个栈帧在虚拟机栈中从入栈到出栈的过程。

修改堆栈的最大内存是在java -mx

java -ss

<span style="font-size:18px;">	public static void main(String[] args) 
	{
		Dog dog1=new Dog();
		dog1.cry();
		Dog dog2=new Dog("dogA");
		dog2.setColor("black");
		dog2.cry();
		Dog dog3=new Dog("dogB",2);
		dog3.setColor("white");
		dog3.cry();

		new Dog().cry();
		System.out.println("Hello World!");
	}</span>
以这段代码为例(从main()函数入口,再在堆区的创建对象dog1,在调用方法cry,cry结束后弹栈到main(),再继续之后的方法压栈)


Q1:成员变量和局部变量的区别:

成员变量定义与类中,整个类都可以访问,存在于对象的堆内存中,随对象的建立而创建,有默认值(int为0,char为null)

局部变量定义于局部范围内,作用于范围内,结束后自动释放,存放于栈中,无默认值。

3.代码块的概念(就是用{}括起来的程序段)

(1)构造代码块:在类中出现{...}的就是构造代码块,是类的成员,和成员变量和成员函数同级构造代码块先于构造函数运行

(2)局部代码块:在方法内部定义,其变量只作用于代码块内部(所以不能用static修饰),即{int x;}{int x;}是没问题的。

(3)静态代码块:在构造代码块前面加static修饰。在类加载的时候执行,并且只执行一次。(注意类加载和类创建是不同概念)。它是在加载到方法区中。

Class.forName(String,boolean initialize,ClassLoader)可以控制加载时是否初始化。

内容概要:本文介绍了多种开发者工具及其对开发效率的提升作用。首先,介绍了两款集成开发环境(IDE):IntelliJ IDEA 以其智能代码补全、强大的调试工具和项目管理功能适用于Java开发者;VS Code 则凭借轻量级和多种编程语言的插件支持成为前端开发者的常用工具。其次,提到了基于 GPT-4 的智能代码生成工具 Cursor,它通过对话式编程显著提高了开发效率。接着,阐述了版本控制系统 Git 的重要性,包括记录代码修改、分支管理和协作功能。然后,介绍了 Postman 作为 API 全生命周期管理工具,可创建、测试和文档化 API,缩短前后端联调时间。再者,提到 SonarQube 这款代码质量管理工具,能自动扫描代码并检测潜在的质量问题。还介绍了 Docker 容器化工具,通过定义应用的运行环境和依赖,确保环境一致性。最后,提及了线上诊断工具 Arthas 和性能调优工具 JProfiler,分别用于生产环境排障和性能优化。 适合人群:所有希望提高开发效率的程序员,尤其是有一定开发经验的软件工程师和技术团队。 使用场景及目标:①选择合适的 IDE 提升编码速度和代码质量;②利用 AI 编程助手加快开发进程;③通过 Git 实现高效的版本控制和团队协作;④使用 Postman 管理 API 的全生命周期;⑤借助 SonarQube 提高代码质量;⑥采用 Docker 实现环境一致性;⑦运用 Arthas 和 JProfiler 进行线上诊断和性能调优。 阅读建议:根据个人或团队的需求选择适合的工具,深入理解每种工具的功能特点,并在实际开发中不断实践和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值