Java基础学习:4、类和对象及方法
类:事物的描述。是具备某些共同特征的实体的集合,它是一种抽象的数据类型,它是对所具有相同特征实体的抽象。
对象:该类事物的实例。在Java中通过new进行创建。是一个真实世界中的实体。对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象。
类是对象的模板,对象是类的实例。类只有通过对象才可以使用,而在开发之中应该先产生类,之后再产生对象。类不能直接使用,对象是可以直接使用的。
1、类和对象内存分配机制:
栈:一般存放基本数据类型(局部变量)。
堆:存放对象(Cat cat,数组等)。
方法区:常量池(常量如字符串),类加载信息。
2、创建对象内存图:
3、方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 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方法里面形参进行了数据交换,但是不会影响主方法中的实参。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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、引用数据类型传参:
引用数据类型传递的是地址(传递的也是值,但是值是地址),可以通过形参影响实参。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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 ; } } |
------------恢复内容结束------------
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· [翻译] 为什么 Tracebit 用 C# 开发
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端