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

对象:该类事物的实例。在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;
}
}

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

最新文章

  1. 复杂的xml转化为java实体
  2. 获取ip ,百度地图坐标点 和 在 后台调用 url()
  3. 输入一个数组,求最小的K个数
  4. es6新特性学习
  5. JavaScript空判断
  6. CentOS配置FTP(VSFTPD)
  7. 动态生成xml文件
  8. FusionCharts
  9. java中String、StringBuilder、StringBuffer三者的区别
  10. 熟悉java堆内存和栈内存和mysql的insert语句中含有id的处理
  11. 【转】常用背景色RGB数值
  12. aspx中如何加入javascript
  13. Chapter 1 First Sight——23
  14. python安装paramiko需要的依赖
  15. Vue中过度动画效果应用
  16. 6.3 x86处理器如何处理MSI-X中断请求
  17. 跟我学ASP.NET MVC之五:SportsStrore开始
  18. 【DevExpress】GridView的RowClick事件禁用Checkbox选择的解决办法
  19. Redis-05.主从复制与Sentinel
  20. 奇淫怪巧之在Delphi中调用不申明函数

热门文章

  1. HOMER docker版本安装详细流程
  2. Web前端--HTML+Canvas+Js实现3D魔方小游戏
  3. ColorFolder文件管理工具使用教程
  4. 栈——stack的用法
  5. Dao包 对数据库的操作
  6. Linux基础之用户、组和权限管理
  7. CF846E - Chemistry in Berland
  8. 记录一个cpu彪高的BUG处理--jvm调优
  9. 【故障公告】Kubernetes 集群节点宕机造成博客站点故障
  10. 【转载】python解决文本乱码问题及文本二进制读取后的处理