java 类和方法

1、类的创建

        在 面向对象 这一章中,我们知道了对象的定义、类的定义以及对象和类的关系,则创建对象首先需要创建一个类,创建一个类需要包含如下元素:类名、类属性和类方法

// 先定义一个类名
public class Student {
    // 定义类的属性
    public String id;
    public String name;
    public int age;
    public char gender;

    // 定义类的方法
    public void Study() {
        System.out.println("好好学习,天天向上");
    }
}

2、对象的创建及使用

        对象的创建将会经历两个过程:在堆空间创建一个类的空间,再在栈空间声明一个类的引用值并指向该空间

Student stu = new Student();

        以创建一个 Student 对象为例,先根据 new 方法,扫描这个类文件是否被加载,若未被加载(或者说在 main 方法中第一次创建该对象),则先进行类的加载、解析、初始化,再根据加载后的类,在堆空间分配一个内存创建一个类空间,最后在栈空间创建一个 Student 类型的引用值指向这个空间,此时类就被创建成功

3、方法的定义

        首先,我们需要知道什么是方法,方法是对类某种行为的描述以及概括

        其次,我们需要知道,这种行为需要外界传入什么激励才能顺发进行,行为完成的同时是否会反馈内容。根据这些需要,方法被分为:无参方法、有参方法、多参方法以及有返回值的方法

       无参方法

        即不需要任何参数,就可以完成这个行为

public class Student{
	public int id;
	public String name;	

	public void sayHello(){
		System.out.printf("Hello,大家好,我叫%s, 我的学号是%d", name, id);	
	}
}

       有参方法、多参方法

        即需要一个或多个满足条件的参数才能完成行为的完成

// 有参方法
public class Juicer{
	public String brand;
	public int volumn;	
	public void juicing(String fruit){ // 形参
		System.out.printf("榨出了一杯%s汁", fruit);
	}	
}

// 多参方法
public void add(int numA, int numB){
	int numbC = numA + numB;
}

       带返回值的方法

        行为结束后反馈的内容即为返回值,通过 return 关键字实现返回传递

public class Juicer{
	public String brand;
	public int volumn;	
	public String juicing2(String fruit){
	    String juice = fruit + "汁";
		return juice;  
	}	
}

4、方法的调用(形参、实参)

        根据方法的分类,方法的调用又可以分为无参调用、有参调用、带返回值方法调用(紧承上述代码)

// 无参调用
    Student student = new Student();
    student.id=100;
    student.name="张三";
    student.Study();

// 有参调用
    Juicer juicer = new Juicer();
    String fruit = "苹果";  // 定义的变量名不要求必须与方法定义时的保持一致
    juicer.juicing(fruit);  // 实参
    juicer.juicing("西瓜");

// 带返回值方法调用
    Juicer juicer = new Juicer();
    String fruit = "苹果";
    String juice = juicer.juicing2(fruit);
    System.out.println(juice);

        这里我们需要知道,方法定义中的 fruit 被称为形参,而方法调用中的 fruit 被称为实参;在传入参数时,并不要求实参和形参的变量名必须一致,可以变化

        需要注意的是,当使用带返回值方法调用时,接受返回值的数据类型需要和返回值的数据类型保持一致,否则编译报错

        当多参调用时,需要注意参数的顺序必须依照定义标准,否则结果会出错

    public void div(int numA, int numB){
    	int numbC = numA / numB;
    }

    int a = 2;
    int b = 10;
    div(a,b);  // 0
    div(b,a);  // 5

5、值传递和址传递

        通过 这一章 的介绍,我们已经粗略知道内存的分配规则,那么参数的传递可以根据这一规则划分为值传递和址传递

       值传递

        根据下面的代码

    public void change(int a, int b){
    	int temp = a;
    	a = b;
    	b = temp;	
    }

    int numA = 10;
    int numB = 20;
    change(numA, numB);

        我们简单描绘一个内存分配图

        不难看出,值传递时,并不会改变 main() 方法中的变量,如果需要改变  main() 方法中的变量,那么我们需要通过数组来进行实现

       址传递

        同样,我们先出代码

    public void SortBubble(int[] arr) {
        int temp = 0;
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }

    int[] arr = {29,35,63,54,16};
    SortBubble(arr);

         在进行内存分析

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值