类:事物的描述。是具备某些共同特征的实体的集合,它是一种抽象的数据类型,它是对所具有相同特征实体的抽象。

对象:该类事物的实例。在Java中通过new进行创建。是一个真实世界中的实体。对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象。

类是对象的模板,对象是类的实例。类只有通过对象才可以使用,而在开发之中应该先产生类,之后再产生对象。类不能直接使用,对象是可以直接使用的。

1、类和对象内存分配机制:

  栈:一般存放基本数据类型(局部变量)。

  堆:存放对象(Cat cat,数组等)。

  方法区:常量池(常量如字符串),类加载信息。

2、创建对象内存图:

3、方法

public class Test4 {
public static void main(String[] args) {
Person person = new Person();
person.cal1();
person.cal2(5); // 将方法返回值赋给returnRes
int returnRes = person.cal3(10,20);
System.out.println(returnRes);
}
} class Person{
int age;
String name;
/*
1、public表示方法是公开
2、void表示方法没有返回值return
* */
public void cal1() { // 无参方法
int sum = 0;
for (int i = 0; i < 10; i++) {
sum+=i;
}
System.out.println(sum);
} public void cal2(int n) { // 有参方法
int sum = 0;
for (int i = 0; i < n; i++) {
sum+=i;
}
System.out.println(sum);
} /*
1、int表示方法执行后,返回一个int值。
2、return表示把结果返回方法调用者
* */
public int cal3(int n1, int n2) {
return n1 + n2;
}
}

  

方法调用机制:

  1、程序执行到方法时,会开辟一个独立空间(栈空间)。

  2、当方法执行完毕,或者执行到return语句时,就会返回。

  3、返回到调用方法的地方。

  4、返回之后,继续执行方法后面的代码。

  5、当main方法执行完毕,整个程序退出。

方法注意事项和使用细节:

  方法定义格式:访问修饰符 返回数据类型 方法名()

  public int getsum(int n1, int n2)

1、访问修饰符:作用是控制方法的使用范围,四种(public、protected、默认、private)。

2、返回类型:可以为任意类型,包含基本类型以及引用类型(数组、对象)。

3、如果需要返回:则方法体最后的语句必须为 return 值,而且返回值类型和return值类型一致。

4、如果是 void,则方法体可以没有return,或者只写 return。

5、void方法:里面可以传入不同类型的参数:public void prints(int n, String name)

6、方法不允许嵌套方法。

方法调用注意事项:

1、同一个类中的方法可以直接调用,不用创建对象来调用。

2、跨类调用方法需要通过创建对象使用对象名来调用。

3、跨类调用方法和方法的访问修饰符有关。

成员方法传参机制:

1、基本数据类型的传参:

  基本数据类型,传递的是值(值拷贝),形参的任何改变不影响实参。

   下面程序中,swap方法里面形参进行了数据交换,但是不会影响主方法中的实参。

  public static void main(String[] args) {
Person person = new Person();
int n1 = 10;
int n2 = 20;
person.Swap(n1,n2);
System.out.println("n1为:" + n1 + "\t" + "n2为:" + n2); // n1 = 10; n2 = 20
}
} class Person{
public void Swap(int n1, int n2) {
int temp;
temp = n1;
n1 = n2;
n2 = temp;
System.out.println("n1为:" + n1 + "\t" + "n2为:" + n2); // n1=20; n2=10
}
}

  

2、引用数据类型传参:

引用数据类型传递的是地址(传递的也是值,但是值是地址),可以通过形参影响实参。

  public static void main(String[] args) {
Person person = new Person();
person.age = 10;
person.name = "张三"; Persons persons = new Persons();
persons.test(person);

System.out.println(person.age); // 1000
}
} class Person {
int age;
String name;
} class Persons {
public void test(Person p) {
p.age = 1000;
}
}

------------恢复内容结束------------

Java基础学习:4、类和对象及方法的更多相关文章

  1. Java基础学习笔记-类与对象

    对象 名称唯一 属性.数据区(值) 方法.功能 类 在软件中,类是一个模板,定义了一类事物的状态和行为 类是一种抽象的复合数据类型 类与对象的关系,这个跟JS也差不多 类和对象之间是抽象和具体的关系. ...

  2. 零基础学习python_类和对象(36-40课)

    今天我们开始学习面向对象的知识咯,之前我对面向对象也学的懵懵的,因为感觉知道好像又不是特别清楚,接下来我们一起来学习类和对象吧.零基础的课程我都是看小甲鱼的视频学的,没基础的可以去这个网址下载视频学习 ...

  3. Java基础 之二 类和对象

    1.基础概念 1) 概念 简单来说,类是具有相同特征事物的抽象,比如有轮子的都可以抽象为车:对象则可以看做类的具体实例,比如创建一个法拉利的车,就是车这个类的实例. 抽象.封装.继承.多态是类的四个特 ...

  4. java基础:详解类和对象,类和对象的应用,封装思想,构造方法详解,附练习案列

    1. 类和对象 面向对象和面向过程的思想对比 : 面向过程 :是一种以过程为中心的编程思想,实现功能的每一步,都是自己实现的 面向对象 :是一种以对象为中心的编程思想,通过指挥对象实现具体的功能 1. ...

  5. Java基础学习笔记-类的静态属性和静态方法--待继续补充

    程序运行时的内存占用 代码区(code area) 存放代码 数据区(data area) 存放全局数据.静态数据 堆区(heap area) 存放动态申请的数据 栈区(stack area) 存放局 ...

  6. JAVA基础学习day22--IO流四-对象序列化、管道流、RandomAccessFile、DataStream、ByteArrayStream、转换流的字符编码

    一.对象序列化 1.1.对象序列化 被操作的对象需要实现Serializable接口 1.2.对象序列化流ObjectOutputStream与ObjectInputStream ObjectInpu ...

  7. Java基础_0302:类和对象

    定义类 class Book { // 定义一个新的类 String title; // 书的名字 double price; // 书的价格 /** * 输出对象完整信息 */ public voi ...

  8. Java基础学习(二)——对象

    类:是抽象的概念集合,表示的是一个共性的产物,类之中定义的是属性和行为(方法): 对象:对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象. 对象=实例 对象 ...

  9. Java基础学习总结(1)——equals方法

    一.equals方法介绍 1.1.通过下面的例子掌握equals的用法 package cn.galc.test; public class TestEquals { public static vo ...

  10. java 基础知识九 类与对象

    java  基础知识九  类与对象 1.OO(Object–Oriented )面向对象,OO方法(Object-Oriented Method,面向对象方法,面向对象的方法)是一种把面向对象的思想应 ...

随机推荐

  1. Vue31 消息订阅和发布

    1 简介 组件之间的通信除了使用事件总线之外,还可以使用一些插件来通过消息的订阅和发布来实现.pubsub-js就是一个不错的选择. 2 使用 2.1 安装 npm i pubsub-js # 或 y ...

  2. JSON Crack 数据可视化工具

    JSON Crack简介 JSON Crack 是一个很方便的 JSON 数据可视化工具. 该项目不是简单的展示 JSON 数据,而是将其转化为类似思维导图的形式,支持放大/缩小.展开/收缩.搜索节点 ...

  3. Spring(IOC自动装配-基于注解开发)

    Spring IoC 自动装载 autowire: 自动装载是Spring提供的一种更加简单的方式,来完成DI,不需要手动配置property ,IoC容器会自动选择Bean玩成注入. 自动装载俩种: ...

  4. windows下dapr的代码调试--非docker部署

    上一篇大概的整理了一下在vm虚拟机下通过docker部署dapr应用,作服务之间调用的例子. 今天整理一下windows下dapr的非docker部署调试,毕竟大部分开发不需要花费太多时间做部署. 源 ...

  5. Uncaught ReferenceError: Cannot access 'constantRouterMap' before initialization

    这个问题可以在 main.js 中,调整 import  store from '@/store 和  import router from @/router 的先后顺序进行解决 router 在 s ...

  6. 把 URL 中文和一堆百分号转换成字符串

    https://www.cnblogs.com/Enziandom/tag/Web%20%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91 JS 有解析这样的 URL 的函数,主 ...

  7. 剖析flutter_download_manager学习如何做下载管理,暂停和取消

    前言 内容类应用中图片或文件下载,一般应用中应用更新和升级,这些都是经典的下载场景.下载是项目中基础且重要的模块. 从代码逻辑复用性和人力成本考虑,一直想实现一个纯Dart实现的下载库,作为技术储备. ...

  8. LeetCode-1219 黄金矿工

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/path-with-maximum-gold 题目描述 你要开发一座金矿,地质勘测学家已经探明了这 ...

  9. 【调试】ftrace(一)基本使用方法

    简介 Ftrace是Linux Kernel的官方tracing系统,支持Function trace.静态tracepoint.动态Tracepoint的跟踪,还提供各种Tracer,用于统计最大i ...

  10. Spring构造函数

    Spring构造函数 目录 Spring构造函数 一.分析说明 2.1.一个构造函数 java版本 xml配置版 2.2.多个构造函数 源码思路 为什么分越少优先级越高? 一.分析说明 Spring中 ...