java基础(类,对象,引用,内存,方法,参数传递,this关键字)

【Java从入门到天黑|05】JavaSE入门之面向对象(上) 面向对象详解(上集) 阅读详情

1 OOP

OOP,编写对象编程

OOP(object oriented programming),面向对象编程

  • 把构成问题的各种事物,抽象成各个对象,这些对象具有解决问题的行为(方法),同时对象还可以具有解决很多类似问题的行为(方法),而不只是能解决一个问题。

POP(procedure oriented Programming),面向过程编程

  • 分析出,解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,然后依次调用就可以了。

FP(functional programming),函数式编程

  • 类似于面向过程的程序设计方式,具有很高的抽象程度。JDK8中的一些特性,可以支持使用函数式编程。

例如,完成做饭功能

面向过程:起锅–>倒油–>放葱姜蒜–>放菜–>翻炒3分钟–>放生抽–>放盐–>翻炒1分钟–>尝尝味道–>出锅
起来
面向对象:打开全自动炒菜机–>放各种配料–>启动–>出锅

注意,关键是要把炒菜机这个类给定义好,然后创建这个类的对象,调用方法完成功能

面向对象思想,是一种程序设计思想,使用这种思想进行编程的语言,就是面向对象编程语言。

Java语言是众多面向对象编程语言中的其中一种,我们需要在面向对象思想的指引下,使用Java语言去设计、开发计算机程序。

面向对象中的对象,泛指现实中一切事物,每种事物都具备自己的属性和行为。面向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,定义为程序中的一种数据类型。

面向对象的思想,主要强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去操作实现。

思考,java中的类是怎么来的?对象又是怎么获得的?

封装(Encapsulation)、继承(inheritance)、多态(polymorphism),是面向对象编程中的基本特征,java语言也同样具有这三种特征。后面会对这些特征进行详细的了解和学习。

2 类

java中对数据类型的描述和定义,都是抽象的,每一种数据类型,都是对同一类数据的抽象描述,描述了这种数据的基本特点。

例如,基本数据类型中的int,就是对计算机中一个简单的32位数据的定义,描述了这种数据的基本特点和表达的含义。

例如,引用数据类型中的String,就是对程序中的字符串这种数据的定义,描述了作为一个字符串数据,应该具有哪些属性、行为和特点。

而int和String都不能直接当做具体的数据来使用或者参与运算,因为它们俩个都是对数据的抽象描述,并不能当做具体的数据使用,如果想使用的这些数据的话,可以使用int或者String类型进行变量的声明,再用变量接收数据,然后就可以使用这个变量来进行操作。

例如,

public class Student{
    public String name;
    
    public void sayHello(){
        
    }
}

这里我们先定了一个Student类,这个Student类就是一个自定义的数据类型,它本身是对学生的抽象描述,规定了一个学生数据,应该具有一个String类型的name属性,以及有一个sayHello方法。

我们并不能直接使用Student类进行操作,因为Student类是对学生这种数据的抽象描述,但是我们可以使用Student类声明变量,并且使用这个变量接收一个学生数据(对象),然后再使用这个变量对具体的学生数据进行操作(访问属性、调用方法)。

例如,

public static void main(String[] args){
    //使用Student类,声明变量
    Student stu;
    //使用这个变量,接收一个具体的学生数据(也就是对象)
    stu = new Student();
    
    //使用对象访问它的的属性和调用它的方法
    stu.name = "tom";
    stu.sayHello();
    
}

3 对象

放眼望去,我们身边的能看到的东西,都是对象,例如桌子,椅子,话筒,电脑,鼠标,水杯等等,面向对象的思想中,一切皆为对象。

思考,类和对象的关系是什么?

通过前面的学习可知,类是一组相关属性和行为的集合,它是对某一种具体事物的抽象描述。

也可以把类看作一个模板,我们使用的对象,就是按照这个模板中的定义,来进行创建的。

  • 类是对一类事物的描述,是抽象的
  • 对象是一类事物的实例,是具体的
  • 类是对象的模板,对象是类的实体

例如,

对猫的定义:(这就相等于定义了一个类)

  • 属性:名字、体重、年龄、颜色
  • 行为:走、跑、叫

我家里的小猫皮皮:(这就是一个具体的对象)

  • 名字:皮皮,体重:3KG,年龄:3岁,颜色:白色
  • 皮皮可以走,也可以跑,也可以喵喵的叫

可以看出,皮皮这个小猫(对象),完全符合上面对猫的定义的一切属性和行为。

一个类的对象,也就是这个类的具体实例。

所以说,类是一种抽象的数据描述,对象是类的一个具体的实例。

思考,有对象之后,可以使用对象做什么?

4 引用

引用类型的变量,简称引用。

引用是可以指向对象的,简称引用指向对象。

使用类创建对象之后,怎么给对象起一个名字,以便后面对这个对象进行操作

例如,

//使用new 加上 Student类中构造器,来创建Student类的对象
new Student();

//为了能方便的使用这个对象,就可以给这个对象起一个名字
//这个过程,其实就是之前学习过的 =号赋值操作
//把新创建的学生对象,赋值给了引用stu
Student stu = new Student();

//后面就可以使用引用stu来操作对象了,也就是访问对象中的属性和调用对象中的方法
stu.name = "tom";
stu.sayHello();

思考,如果没给对象起名字,这个对象能使用么?

能使用,但是只能在创建这个对象的同时就使用,并且只能使用一次,后面就不能使用了,因为它没有名字,无法在语法上面标示对这个对象进行使用

例如,

(new Student()).sayHello();

//下面就无法再使用上面创建出来的这个对象,因为他没有名字
...

//如果再这样写一次,其实是创建了第二个对象,并进行使用,但是后面也无法使用这个对象,因为没有名字
(new Student()).sayHello();

引用、对象、类之间的关系:

例如,工厂根据电视机图纸(类),生产出了很多台电视机(对象),其中一台电视机卖给了张三,张三坐在沙发上,使用遥控器(引用),可以对这台具体的电视机(对象)进行很方便的操作。

例如,工厂根据风筝图纸(类),生产出了很多只风筝(对象),其中一只风筝卖给了张三,张三站在草地上,使用线(引用),可以对这只具体的风筝(对象)进行很方便的操作。

5 内存

public class Student{
    public String name;
    public void sayHello(){
        
    } 
}

public static void main(String[] args){
    
    Student stu = new Student();
    stu.name = "tom";
    stu.sayHello();
    
}

注意1,类加载过程,把Student.class文件内容加载到方法区中

注意2,main方法运行时,整个main方法的代码都被加载到栈区中

注意3,创建对象,给name属性赋值,这些操作的代码也在main方法中,但由于代码太长,图中标注到右边

注意4,根据类(相当于模板)创建出的对象,都是在堆区中

注意5,对象中的属性和方法,和类中定义的保持一致,因为对象就是根据类创建出来的

注意6,对象是具体的,我们可以给它的属性赋一个具体的值,例如tom

注意7,引用stu在栈去中,它保存了这个对象在堆区中的地址(0x123),形象的描述为,引用指向对象

注意8,=号赋值操作,其实就把对象的内存地址,赋值给了引用stu

注意9,如果有需要,可以根据类,继续在堆区中,创建出其他具体的学生对象

从这里可以看出,引用指向对象后,为什么就可以使用引用来操作对象,例如访问对象的属性和调用方法

6 方法

方法定义在类中,属于类的成员,所以也可以叫做成员方法。类似的,类中的属性,也可以称为成员变量

方法定义的格式:

修饰符 返回类型 方法名(参数列表)抛出异常的类型{
			
    //code

}

修饰符:

  • public、static、abstract、final等这些都属于修饰符,可以用来修饰方法、属性、类

  • 一个方法上,可以同时拥有多个不同的修饰符,例如程序入口main方法
    public static void main(String[] args){...}
    这里使用俩个修饰符public和static来修饰main方法

  • 如果方法上有多个修饰符,这些修饰符是没顺序之分的
    例如,这俩个写法最终的效果是一样的
    public static void main(String[] args){}
    static public void main(String[] args){}

  • 方法上也可以不写修饰符
    例如,

    void hello(){
        //...
    }
    

(ps:static修饰的方法是通过类名直接调用,存在方法区;而没有static修饰的方法是通过对象来调用的,存在堆空间)

返回类型:

  • 方法执行完,如果有要返回的数据,那么在方法上就一定要声明返回数据的类型是什么,如果没有要返回的数据,那么在方法上就必须使用void进行声明
    public int getNum(){...}
    public void print(){...}

  • 只有一种特殊的方法没有返回类型,也不写void,那就是构造方法,也就是构造器

    public class Student{
        //构造方法
        public Student(){}
    }
    
  • 声明有返回类型的方法,就要使用return关键字在方法中,把指定类型的数据返回

    public int test(){
        return 1;
    }
    

    思考,如果一个方法的返回类型声明为void,那么在这个方法中还能不能使用return关键字?

可以直接以return;结束本方法,在本方法体中不能再在return;后面写代码了,会报错。

方法名:

  • 只要满足java中标识符的命名规则即可
  • 推荐使用有意义的方法名

参数列表:

  • 根据具体情况,可以定义为无参、1个参数、多个参数、可变参数。

    public void test(){}
    
    public void test(int a){}
    
    public void test(int a,int b,int c){}
    
    public void test(int... arr){}
    
    public void test(int a,String str){}
    

抛出的异常类型:

  • 在方法的参数列表后,可以使用throws关键字,表明该方法在j将来调用执行的过程中,【可能】会抛出什么类型的异常

  • 可以声明多种类型的异常,因为在方法执行期间,可能会抛出的异常类型不止一种。

    public void test()throws RuntimeException{}
    
    public void test()throws IOException,ClassNotFoundException{}
    

7 参数传递

java方法的参数,分为形参和实参。

形参:

  • 形式上的参数

    public void test(int a){}
    

    其中,参数a就是test方法形式上的参数,它的作用就是接收外部传过来的实际参数的值

实参:

  • 实际上的参数

    public class Test{
        public void test(int a){}
    }
    
    public static void main(String[] args){
        Test t = new Test();
        t.test(1);
        int x = 10;
        t.test(x);
    }
    
    

    其中,调用方法的时候,所传的参数1和x,都是test方法实际调用时候所传的参数,简称实参

值传递:

方法的参数是基本类型,调用方法并传参,这时候进行的是值传递。

例如,

public class Test{
    //该方法中,改变参数当前的值
    public static void changeNum(int a){
        a = 10;
    }

    public static void main(String[] args){
        int a = 1;
        System.out.println("before: a = "+a);//传参之前,变量a的值
        changeNum(a);
        System.out.println("after: a = "+a);//传参之后,变量a的值
    }

}

值传递,实参把自己存储的值(基本类型都是简单的数字)赋值给形参,之后形参如何操作,对形参一点影响没有。

引用传递:

方法的参数是引用类型,调用方法并传参,这时候进行的是引用传递。

这时候之所以称之为引用传递,是因为参数和形参都是引用类型变量,其中保存都是对象在堆区中的内存地址。

例如,

public class Test{
    //该方法中,改变引用s所指向对象的name属性值
    public static void changeName(Student s){
        s.name = "tom";
    }

    public static void main(String[] args){
        Student s = new Student();
        System.out.println("before: name = "+s.name);//传参之前,引用s所指向对象的name属性值
        changeName(s);
        System.out.println("after: name = "+s.name);//传参之后,引用s所指向对象的name属性值
    }

}

由于引用传递,是实参将自己存储的对象地址,赋值给了形参,这时候俩个引用(实参和形参)指向了同一个对象,那么任何一个引用(实参或形参)操作对象,例如属性赋值,那么另一个引用(形参或实参)都可以看到这个对象中属性的变量,因为俩个引用指向同一个对象。

这个时候就相当于,俩个遥控器,同时控制同一台电视机。

8 this

在类中的非静态方法中,可以使用this关键,来表示当前类将来的一个对象。

this关键字的使用场景:

  1. 区别成员变量和局部变量
  2. 调用类中的其他方法
  3. 调用类中的其他构造器

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

public class Student{
    public String name;
    public void setName(String name){
        //=号左边的this.name,表示类中的属性name
        //=号右边的name,表示当前方法的参数name(就近原则)
        this.name = name;
    }

}

调用类中的其他方法:

public class Student{
    public String name;

    public void setName(String name){
        this.name = name;
    }
    public void print(){
        //表示调用当前类中的setName方法
        this.setName("tom");
    }
}

默认情况下,setName(“tom”)和this.setName(“tom”)的效果是一样的,所以这里也可以省去 this.

调用类中的其他构造器:

public class Student{
    public String name;
    public Student(){
        //调用一个参数的构造器,参数的类型是String
        this("tom");
    }
    public Student(String name){
        this.name = name;
    }
}

注意,this的这种调用构造器的用法,只能在类中的一个构造器,调用另一个构造器。并且不能在普通的方法中调用类的构造器。

并且要求,this调用构造器的代码,是当前构造器中的第一句代码,否则编译报错。

this关键字的意义:

this代表,所在类的当前对象的引用(地址值),即对象自己的引用。

例如,

public class Student{
    
    public void sayHello(){
        
    }
    
    public void show(){
        
    }
    
}

public static void main(String[] args){
    
    Student stu = new Student();
    stu.sayHello();
    
}

Student类中定义了俩个方法,sayHello和show,想要调用这俩个方法,就需要创建Student类的对象,然后使用对象调用这俩个方法。

这里就包含了一个固定的规则:类中的非静态方法,一定要使用类的对象来进行调用,没有其他的方式!

那么在这个情况下,思考一个问题:如果我们使用使用了stu调用了sayHello方法,例如stu.sayHello(),那么在sayHello中,怎么再调用到这个对象中的show方法?

这个时候,如果在sayHello方法中,能有一个变量,可以表示stu这个对象本身,是不是就可以调用到了show方法?毕竟只有对象自己,才能调用到自己的方法,没有其他方式!

所以,这时候,就可以在sayHello方法中,使用this来表示stu对象本身,那么this.show(),就可以表示这个对象调用自己的show方法了

例如,

public class Student{
    
    public void sayHello(){
        this.show();//这个this就表示当前类的对象stu
    }
    
    public void show(){
        
    }
    
}

public static void main(String[] args){
    
    Student stu = new Student();
    stu.sayHello();
    
}

也就是说,stu里面存的是0x123,this里面存的也是0x123

思考:如果这时候创建俩个对象,那么this又代表哪一个对象呢?

例如,

public class Student{
    
    public void sayHello(){
        this.show();//问题:这个this代表的时候stu1还是stu2
    }
    
    public void show(){
        
    }
    
}

public static void main(String[] args){
    
    Student stu1 = new Student();
    stu1.sayHello();
    
    Student stu2 = new Student();
    stu2.sayHello();
    
}

可以看出,其实每一个对象中,都有自己的this,和其他对象中的互不影响。

当前执行stu1.sayHello()代码的时候,this代表的就是stu1

当前执行stu2.sayHello()代码的时候,this代表的就是stu2

记住 :方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁。

Android Audio常见问题分析方法 分析audio dump,确定写给BT的data是否正常,MTK平台Android原生架构分析threadloop write节点,高通平台分析QXDM 1586节点,从dump确定问题大概位置。分析systrace 确定性能。AudioFocus状态(用于播放或者音量异常的情况)。AudioTrack是否正常创建bt连接是否正常通路异常,setMode,setSpeakerphoneOn等都会影响设备选择,sco调用流程是否正常。 阅读详情

相关推荐

FANUC机器人KAREL编程实战:手把手教你用SOCKET指令连接外部设备(附完整.KL文件)

本文详细解析了FANUC机器人KAREL编程中SOCKET指令的应用,从开发环境配置到工业级通讯全流程,涵盖网络参数设置、模块化代码设计、错误处理及现场调试技巧。通过实战案例,帮助开发者掌握与外部设备稳定连接的关键技术,提升工业自动化系统的通讯可靠性。

weixin_30907935的博客 225

java基础3:this,super,继承时的传递,附案例

第1章 this关键字 在之前学习方法时,我们知道方法之间是可以相互调用的,那么构造方法之间能不能相互调用呢?若可以,怎么调用呢? 1.1 this调用构造方法 在之前学习方法之间调用时,可以通过方法名进行调用。可是针对构造方法,无法通过构造方法名来相互调用。 构造方法之间的调用,可以通过this关键字来完成。 l 构造方法调用格式: this(参数列表);   l 构造方法的调用

qq_3775566111的博客 471

TPS5430/54302调试血泪史:从‘烫手山芋’到冒烟烧板,我的5V电源到底怎么了?

本文深入剖析了TPS5430/TPS54302 DCDC电源芯片调试中的常见问题,包括异常发热、电压漂移等,并提供了从热设计到PCB布局的全面解决方案。通过实战案例,揭示了数据手册中未明确的‘潜规则’,帮助工程师避免烧板风险,提升电源系统稳定性。

weixin_28744423的博客 498

教妹学Java(二十 七):this 关键字的用法

this 关键字有哪些用法

沉默王二 7229

跟着Synopsys报告,一步步拆解车规芯片FMEDA计算(含公式与避坑点)

本文详细解析了车规芯片FMEDA计算的全流程,基于Synopsys报告拆解实战指南,涵盖基础失效率建模、安全机制效能评估及安全指标合成等关键步骤。通过公式解析、数据准备清单和避坑点分享,帮助工程师掌握ISO26262标准下的硬件量化分析技术,提升车载系统设计可靠性。

weixin_30460489的博客 193

海思方案定制hi3531dv200/SS528 DVR方案解析:从硬件选型到编解码实战应用

海思方案,Hi3518EV100,Hi3518CV100,Hi3515CV100,Hi3516CV100,Hi3516ECV100,Hi3516D,Hi3516A,Hi3519,Hi3520D,Hi3521A,Hi3535,Hi3531,Hi3536,Hi3536C,Hi3536D,Hi3518EV200,Hi3518EV201,Hi3520DV200,Hi3516CV200,Hi3516CV300,Hi3516AV200,Hi3520DV300,Hi3519V101,sd3403,hi3519av200

1584

全面理解java中的构造方法以及this关键字的用法(超详细)

java中怎样用巧用构造函数初始化成员变量😎,在类于对象中有关this的那几个用法,你真的懂了吗🤔?不再复习一下吗📝

日常学习记录、分享,愿我们都遇见更好的自己,与诸君共勉 3万+

SigFit实战:从FEA到光学仿真的热力耦合分析全流程解析

在光机系统与芯片封装等精密工程领域,热与力的耦合效应是影响产品性能与可靠性的核心物理问题。有限元分析(FEA)是预测结构在热、力载荷下变形与应力的基础工具,但其结果通常无法直接用于评估光学性能。这需要一座桥梁,将物理场数据转化为光学设计语言。其核心原理在于数据映射与面形表征技术,例如通过泽尼克多项式拟合,将离散的节点位移分解为离焦、像散等标准光学像差。这项技术的工程价值在于,它实现了多物理场仿真的闭环,使工程师能在设计阶段精准预测热变形或应力对波前误差、调制传递函数等关键光学指标的影响。其典型应用场景包括高

weixin_28630185的博客 334

一文带你快速了解Java中的【this引用】

只不过所有的操作对用户是透明的,用户不需要来传递,编译器自动完成。(下图中,this 引用的就是调用 setHero()和 printHero() 两个方法的 对象 HeroInfo )

hero_jy的博客 998

懒人精灵手游内存技术分析

教学声明:全套教程教学用到的游戏采用手游私服网游进行测试,不针对任何游戏。教学只做计算机技术研究,不做其他用途。

yizhihaoren123的博客 1655

【视频编码学习】AVS3参考软件HPM-4.1简单配置运行

1、用Visual Studio2017打开HPM-4.1文件夹 2、找到文件夹目录下x86_windows文件夹,因为是在win上运行该代码 3、然后找到对应vs版本(我当时2017版)的解决方案sln文件,双击打开可以看到该解决方案下的全部项目。 4、重新生成解决方案时发现提示sdk版本问题,所以右键点击所有的项目,选择重定向项目,修改一下sdk版本。 ...

谦虚勤奋诚实感恩 3098

Java中this的四种用法

java基础中this关键字的使用!

qq_43343746的博客 4376

coze 怎么读取excel文件,使用循环,数据库完成LLM问答并存储

本文介绍了如何在Coze平台实现"Excel读取+循环处理+LLM问答+数据库存储"的工作流。主要分为三个步骤:1)使用代码节点解析Excel文件为问答对数组;2)通过循环节点遍历问答对,调用LLM节点生成回答;3)利用数据库节点将问答结果存储到Coze内置数据库中。文中提供了代码示例和节点配置说明,并强调了注意事项如Excel格式要求、LLM调用频率控制等。该工作流适用于批量构建知识库问答系统并持久化存储结果。

ZhangJiqun&191cm&85kg 1784

JAVA学习-类与对象(韩顺平java-基础篇)

类:类代表某类数据的共性,例如 花猫 白猫 都属于猫类。类也是一种数据类型。 数据类型代表同种数据的类型,因此 int 与 猫类 都属于数据类型。一类是整数数据,yi'lei'shi

kubidaxuesheng的博客 324

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java类和对象

类和对象面向对象对象和类对象的特征对象和类类的属性类的方法局部变量和成员变量引用类型内存分析构造器方法调用this使用笔记 面向对象 对象和类 世界由对象组成 类可以生成对象,类是对象的抽象 对象:是具体的事物 类:是对对象的抽象(抽象 抽出象的部分) 先有具体的对象,然后抽象各个对象乊间象的部分,归纳出类通过类再认识其他对象。 对象的特征 属性——对象具有的各种特征 每个对象的每个属性都拥有特定值 方法——对象执行的操作 对象是用来描述客观事物的一个实体,由一组属性和方法构成 类:具有相同属性和

xiaoyuan的博客 456

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Java中面向对象的编程思想

面向对象的编程思想,学习java必要的基础知识

yzl1293346757的博客 1124

补Java基础之重生(12)类与对象(下)

*注意:**在类中如果手动的添加了一个带参数的构造方法,就必须手动添加一个无参构造方法,如果不添加就无法实现调用无参构造方法的形式实现对象的实例化。在类中定义的变量叫成员变量,成员变量有初始值,String类型的初始值为null,int为0。好处:在一个类中,有一批执行的操作内容是相同的,就可以使用方法重载去定义,简化了定义很多方法,让使用方法的过程变得简单。前提:在同一个类中,方法名相同,参数列表【参数的类型,参数的数量,参数的位置】不同,就构成方法的重载,与返回值无关。局部变量的优先级比成员变量高。

weixin_48741196的博客 213

java类人_Java基础——对象和类

将包含main方法的类称为主类。变量的作用域是指变量可以在程序中引用的范围。实例变量和静态变量的作用域是整个类,无论变量是在哪里声明的。局部变量的声明和使用都在一个方法的内部。一个类的实例变量和静态变量称为类变量或数据域。在方法内部定义的变量成为局部变量。局部变量的作用域从声明变量的地方开始,直到包含该变量的块结束为止。局部变量都必须在使用之前进行声明和赋值。(Java没有给局部变量赋默认值)无论...

weixin_35426913的博客 238

java自学笔记4

一、面向对象 1 - 面向对象和面向过程的总结 1、都是解决问题的思维方式,都是代码组织的方式。 2、解决简单问题可以使用面向过程 3、解决复杂问题:宏观上使用面向对象把握,微观处理上仍然是面向过程。 2、面向对象思考方式 遇到复杂问题,先从问题中找名词,然后确立这些名词哪些可以作为类,再根据问题需求确定的类的属性和方法,确定类之间的关系。 3、对象和类的概念 1.对象是具体的事物;类是对对象的抽象; 2.类可以看成一类对象的模板,对象可以看成该类的一个具体实例。 3.类是用于描述同一类型的对象的一个抽象

weixin_50311889的博客 124

第六章 面向对象编程(基础部分)

本文系统介绍了Java面向对象编程中的核心概念——类与对象。首先通过养猫问题的传统解决方案引出类与对象的必要性,详细讲解了类定义、对象创建、属性访问等基础操作。重点分析了对象内存布局和分配机制,包括堆栈内存结构、引用传递原理。通过Person类的实例演示了对象创建全过程,并深入探讨了属性默认值、成员变量等关键概念。最后预告了后续要讲解的成员方法、构造器、this等进阶内容。文章采用大量代码示例和内存图解,帮助读者建立完整的面向对象思维模型,为后续Java高级特性学习奠定基础。

AI时代的DevOps 1593

深入理解 Java this 关键字:用法、原理与实战

this关键字是 Java 面向对象编程的基石之一。指代当前对象的成员变量,解决命名冲突。调用本类的其他构造器,实现代码复用。调用当前对象的其他方法,使意图更明确。作为参数传递,实现对象与外部环境的交互。返回当前对象,构建流畅的方法调用链。理解并熟练运用this,能够帮助你写出更加专业、健壮和易于维护的 Java 代码。建议你在实践中多尝试、多体会,将其内化为你的编程习惯。

2601_96757044的博客 229

Java 基础进阶:数组、方法与面向对象基础笔记

本文记录了大二学生学习Java进阶知识的笔记,涵盖数组、方法、面向对象基础和字符串等内容。作者结合C++基础对比讲解了Java数组的内存机制、方法的定义与重载,重点分析了面向对象中的封装思想、构造方法和标准JavaBean类的编写规范。文章还详细介绍了String类的不可变特性与字符串比较方法,以及可变字符串容器StringBuilder和JDK8新增的StringJoiner工具类。通过IDEA开发工具的使用技巧和权限修饰符的访问控制规则,展现了Java相比C++更注重安全性和开发效率的特点,为后续学习集

yxc_71411的博客 633

java‘‘家族’’学习(二)

我们可以使用jar.exe命令把一些类的字节码文件压缩成一个jar文件,然后将这个jar文件存放到Java运行环境的扩展中,即将该jar文件存放在JDK安装目录的jre\lib\ext文件夹中,这样,Java应用程序就可以使用这个jar文件中的类来创建对象。类所声明的变量被称为对象,对象也就是变量负责存放引用,以确保对象可以操作分配给该对象的变量以及调用类中的方法,分配给对象的变量被称作。Java运行环境所提供的类库中的类都是有包名的,应用程序必须使用import语句引入相应包中的类。

qq_73063535的博客 143

面相对象编程1

1、封装 定义 封装就是把对象的属性(状态)和⽅法(⾏为)结合在⼀起,并尽可能隐蔽对象的内部细节,成为⼀个不可分割的独⽴单位(即对象),对外形成⼀个边界,只保留有限的对外接⼝使之与外部发⽣联系。 原则 使对象以外的部分不能随意存取对象的内部数据,从⽽有效的避免了外部错误对它的“交叉感染”。 数据隐藏特性提升了系统安全性,使软件错误能够局部化,减少查错和排错的难度。 2、类 定义 类就是对象的模板,⽽对象就是类的⼀个实例 。 类由属性和⽅法构成: 对象的特征在类中表⽰为成员变量,称为类的属

ssdaasd的博客 750

JavaSE学习笔记(七.面向对象编程初级)

比如人类:除了有一席属性(年龄,姓名)外,我们人类还有一些行为,比如:说话,跑步等等,也可以通过学习,做算术题,这时就要用成员方法才能完成。5.当一个方法执行完毕或者遇到return时就会返回,遵守谁调用,将结果返回给谁,同时当方法执行完毕或返回时,该方法也就执行完毕。2.跨类中的方法A类调用B类方法:需要通过对象名调用:需要通过对象名调用(先创建对象,在调用方法)。比如:对象名.方法名。7.一旦定义了自己的个构造器,默认构造器就覆盖了,就不能在使用默认无参构造器,除非显示的定义一下,即:Dog(){}

benaso的大学学习历程 257

Java面向对象编程基础

类与对象 类和对象的区别和联系 对象在内存中存在形式! 属性/成员变量/字段 如何创建对象 如何访问属性 成员方法 方法的调用机制原理! 成员方法的好处 成员方法的定义 成员方法传参机制 引用数据类型的传参机制 成员方法返回类型是引用类型应用实例 方法递归调用 方法递归调用 递归重要规则 递归调用应用实例-汉诺塔 递归调用应用实例-八皇后问题 方法重载(OverLoad) 基本介绍 重载的好处 注意事项和使用细节 可变参数 基本概念 基本语法 注意事项和使用细节 作用域 基本使用 构造方法/构造器 基本介绍

timerring的博客 496

蓝桥杯JAVA--启蒙之路(五)面向对象编程

本文介绍了面向对象编程的基本概念,重点讲解了Java中类和实例的定义与使用。文章通过Person和Book类的示例,详细说明了如何定义类字段、创建实例、访问实例变量,以及使用public和private修饰符控制访问权限。同时阐述了方法的定义与调用,包括参数绑定机制(基本类型为值传递,引用类型为对象共享)。最后强调了封装性的重要性,指出通过方法可以安全地操作实例字段,并保证逻辑一致性。文章以励志话语结尾,鼓励读者坚持学习。

WGK1005的博客 1026
上一篇: 关于数组的基础知识
下一篇: java基础(封装,方法重载,创建和初始化对象,构造器,继承,super关键字,方法重写,多态,instanceof)
平平无奇的编码小天才
博客等级 码龄6年 15粉丝 39原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值