• 初识对象,对象的创建以及方法的定义规则


    什么是对象

    对象:现实世界中客观存下的实体都是对象(只要你能看得见、摸得着的物体都是对象),由属性和方法组成。万事万物皆对象

    什么是类

    :具有相同属性和方法的多个对象的集合

    • 类是对象的抽象,对象是类的具体
    • 类是对象的模板,对象是类的特例
    package cn.bdqn.demo01;
    
    public class Dog {
    	
    	//定义属性
    	public String name;
    	public int health;
    	public int love;
    	
    	//定义方法
    	public void print(){
    		System.out.println("狗的昵称:"+name+",健康值:"+health+",亲密度:"+love);
    	}
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    定义属性

    数据类型 属性名;

    package cn.bdqn.demo01;
    
    public class School {
    	
    	//定义属性: 数据类型 属性名;
    	String schoolName;
    	String address;
    	int year;
    	String phoneNumber;
    public void printInfo(){
    		System.out.println("学校名称:"+schoolName+",地址:"+address+",创办年数:"+year+",联系电话:"+phoneNumber);
    	}
    	
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    定义方法

    访问权限修饰符 返回值类型 方法名([参数列表]){
    方法体
    }

    创建School类对象
    类名 对象名 = new 类名();

    package cn.bdqn.demo01;
    
    public class SchoolTest {
    
    	public static void main(String[] args) {
    		
    		//创建School类对象
    		//类名 对象名 = new 类名();
    		School school1 = new School();
    		//给对象的属性赋值  对象名.属性名 = 数据;
    		school1.schoolName = "魔法学院";
    		school1.address = "安徽合肥";
    		school1.year = 100;
    		school1.phoneNumber = "13822556677";
    		
    		//对象调用方法  对象名.方法名();
    		school1.printInfo();
    		
    		
    		School school2 = new School();
    		school2.schoolName = "北大青鸟";
    		school2.address = "合肥创投产业园";
    		school2.year = 30;
    		school2.phoneNumber = "13288889999";
    		school2.printInfo();
    		System.out.println(school2.schoolName);
    		
    		
    
    	}
    
    }
    
    
    • 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

    访问权限修饰符:描述的是方法的作用范围,主要有public(公共)、默认的(什么都不写)、protected(受保护的)、private(私有的)
    返回值类型:调用方法返回结果的类型,可以是8大基本类型,也可以是3大引用类型,还可以没有返回值,写void
    方法名:方法的名称,小驼峰命名法,做到见名知意
    参数列表:方法可以需要你传递参数,也可以不需要参数,当方法有参数的时候,可以有一个参数,也可以有多个参数,多个参数之间使用,隔开
    方法体:方法实现功能的具体代码体现

    package cn.bdqn.demo02;
    
    public class Teacher {
    	//定义属性
    	String name;
    	String professionalDirection;
    	String teachingCourses;
    	int teachingExperience;
    	
    	//定义方法
    	public void print(){
    		System.out.println(name);
    		System.out.println("专业方向:"+professionalDirection);
    		System.out.println("教授课程:"+teachingCourses);
    		System.out.println("教龄:"+teachingExperience);
    	}
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    package cn.bdqn.demo02;
    
    public class TeacherTest {
    
    	public static void main(String[] args) {
    		//创建Teacher类对象
    		Teacher teacher1 = new Teacher();
    		teacher1.name = "王老师";
    		teacher1.professionalDirection = "计算机";
    		teacher1.teachingCourses = "使用Java语言理解程序逻辑";
    		teacher1.teachingExperience = 5;
    		
    		//调用print()方法
    		teacher1.print();
    	}
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    方法的定义

    根据方法是否有返回值,将方法定义为

    1. 无返回值的方法
      返回值类型写void,在调用无返回值的方法,不需要用任何变量来接收

    2. 有返回值的方法
      1)返回值可以是任意的基本数据类型和任意的引用数据类型,调用有返回值的方法,需要用对应类型的变量来接收,或者直接将返回值输出
      2)有返回值的方法需要在方法体内通过return关键字将结果返回回去

    根据方法是有有参数列表,将方法定义为

    • 无参方法
      方法名后面的()中没有任何参数

    • 有参方法
      方法名后面的()中有参数,参数的个数可以是1个或者多个,参数的类型可以是基本数据类型,也可以是引用数据类型
      *
      综上所述,方法的种类主要有以下几种:

    • 无返回值的无参方法

    • 无返回值的有参方法

    • 有返回值的无参方法

    • 有返回值的有参方法

    方法调用的2个原则:

    1. 方法需要什么参数,就按照定义的规则传递参数----》要什么给什么
    2. 方法返回什么类型的结果,就用什么类型的变量接收(也可以直接输出返回的结果)----》给什么接什么
    package cn.bdqn.demo03;
    
    public class Demo01 {
    public void test1(){
    		System.out.println("我是没有返回值的方法");
    	}
    	
    	public String test2(){
    		String str = "hello java";
    		return str;
    	}
    
    //num1和num2是定义方法时表示的参数名称,是一个形式参数,简称形参
    	public void test3(int num1,int num2){
    		System.out.println("你传递的两个参数数据是:"+num1+","+num2);
    	}
    	
    	
    	public int test4(int num1,int num2,int num3){
    		return num1+num2+num3;
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    package cn.bdqn.demo03;
    
    public class Demo01Test {
    
    	public static void main(String[] args) {
    		//创建Demo01的对象,通过对象来调用Demo01类中的test1()和test2()方法
    		
    		Demo01 d1 = new Demo01();
    		d1.test1();
    		String result =d1.test2();
    		System.out.println(result);
    		System.out.println(d1.test2());
    		
    		d1.test3(10, 20);
    		
    		int a =100;
    		int b =200;
    		//调用有参方法的时候,传递的a和b是实际参数,简称实参,形参和实参的名称不需要一样,但是数据类型要一样
    		d1.test3(a, b);
    		
    		int result2 =d1.test4(100, 200, 185);
    		System.out.println(result2);
    		System.out.println(d1.test4(10, 20, 30));
    		
    	}
    
    }
    
    
    • 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

    对数组进行升序排序,遍历输出,复制操作

    package cn.bdqn.demo04;
    
    public class ArraysMethod {
    
    	// 定义一个方法实现对int类型的数组进行升序排序
    	public static void sortUp(int[] array) {
    		for (int i = 0; i < array.length - 1; i++) {
    			for (int j = 0; j < array.length - 1 - i; j++) {
    				if (array[j] > array[j + 1]) {
    					int temp = array[j];
    					array[j] = array[j + 1];
    					array[j + 1] = temp;
    				}
    			}
    		}
    	}
    
    	// 定义一个方法将数组输出
    	public static void showArrays(int[] array) {
    		for (int i = 0; i < array.length; i++) {
    			if (i == 0) {
    				System.out.print("[");
    			}
    			if (i != array.length - 1) {
    				System.out.print(array[i] + ",");
    			} else {
    				System.out.print(array[i]);
    			}
    
    			if (i == array.length - 1) {
    				System.out.println("]");
    			}
    		}
    	}
    
    	// 定义一个方法实现对数组进行复制操作
    	public static int[] copyArray(int[] arr, int length) {
    		int[] newArray = new int[length];
    		// 要先判断length的值和arr.length值的大小
    		if (length <= arr.length) {
    			for (int i = 0; i < length; i++) {
    				newArray[i] = arr[i];
    			}
    		} else {
    			for (int i = 0; i < arr.length; i++) {
    				newArray[i] = arr[i];
    			}
    		}
    
    		return newArray;
    
    	}
    
    
    	/*定义一个方法实现对已经升序排序的数组中插入一个元素
    	*public static int[] insertArray(int[] nums,int number){
    	*	
    	*	
    	*	
    	*	return nums;
    	*	
    	*}
    	*/
    
    }
    
    
    • 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
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    package cn.bdqn.demo04;
    
    public class Test {
    
    	public static void main(String[] args) {
    		
    		int[] num1 = {11,56,98,76,46,33,19,85};
    		
    		//遍历前输出数组
    		ArraysMethod.showArrays(num1);
    		
    		ArraysMethod.sortUp(num1);
    		
    		//遍历后输出数组
    		ArraysMethod.showArrays(num1);
    		
    		int[] newNums =ArraysMethod.copyArray(num1, 18);
    		ArraysMethod.showArrays(newNums);
    
    	}
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 方法在同一个类中,可以直接调用,不需要通过对象名调用
      实践:小于18岁大于60岁免20块门票。
    package cn.bdqn.demo06;
    
    public class Visitor {
    		
    	//定义一个方法,实现根据年龄输出门票价格
    	public void price(String name,int age){
    		if(age>=18&&age<=60){
    			System.out.println(name+"的年龄为"+age+",门票价格:20元");
    		}else{
    			System.out.println(name+"的年龄为"+age+",门票免费");
    		}
    	}
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    package cn.bdqn.demo06;
    
    import java.util.Scanner;
    
    public class Test {
    
    	public static void main(String[] args) {
    		
    		Scanner sc = new Scanner(System.in);
    		Visitor v = new Visitor();
    		String name =null;
    		
    		System.out.println("输入姓名:");
    		name =sc.next();
    		while(!name.equals("n")){
    			System.out.println("输入年龄:");
    			int age =sc.nextInt();
    			v.price(name, age);
    			System.out.println("输入姓名:");
    			name =sc.next();
    		}
    		
    		System.out.println("退出程序");
    	}
    
    }
    
    
    • 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

    总结

    1)访问权限修饰符 返回值类型 方法名([参数列表]){
    方法体
    }

    2)创建School类对象:类名 对象名 = new 类名();

    3)方法的种类主要有以下几种:无返回值的无参方法,无返回值的有参方法,有返回值的无参方法,有返回值的有参方法。

    4)无返回值的方法
    返回值类型写void,在调用无返回值的方法,不需要用任何变量来接收

    5)有返回值的方法

    1. 返回值可以是任意的基本数据类型和任意的引用数据类型,调用有返回值的方法,需要用对应类型的变量来接收,或者直接将返回值输出
    2. 有返回值的方法需要在方法体内通过return关键字将结果返回回去

    6)无参方法
    方法名后面的()中没有任何参数

    7)有参方法
    方法名后面的()中有参数,参数的个数可以是1个或者多个,参数的类型可以是基本数据类型,也可以是引用数据类型

    8)方法调用的2个原则:

    1. 方法需要什么参数,就按照定义的规则传递参数----》要什么给什么
    2. 方法返回什么类型的结果,就用什么类型的变量接收(也可以直接输出返回的结果)----》给什么接什么

    课后作业

    01:写一个人的类
    属性:名字,性别,年龄
    方法:(1)自我介绍的方法(2)吃饭的方法
    创建一个对象“张三”

    02:写一个汽车类:
    属性:品牌;车长;颜色;价格;
    方法:跑的方法
    创建五个对象:“捷达”,“宝马”,“劳斯莱斯”,“科鲁兹”,“迈锐宝”

    03:写一个课程类:
    属性:课程名;学时;任课老师;
    创建五个对象:“c语言”,“Java编程”,“php网络编程”,“c++”,“数据结构”

    04: 0——————>X
    |
    |
    | . P(X,Y)
    |
    |
    Y
    定义一个类,用于描述坐标点
    (1) 具有计算当前点到原点距离的功能
    (2) 求到任意一点(m,n)的距离
    (3) 具有坐标点显示功能,显示格式(x,y)

    05:定义一个圆类型
    提供显示圆周长功能的方法
    提供显示圆面积的方法

    06:编程创建一个Box类,在其中定义三个变量表示一个立方体的长、宽和高,定义一个方法求立方体的体积。创建一个对象,求给定尺寸的立方体的体积。

    07:定义一个计算机类:
    属性:品牌;价格;颜色;
    方法:(1)编程的功能 (2)上网的功能
    实例化两个对象:“lenovo”;“hasee”

    08:编写一个类Student,代表学员,要求:
    (1)具有属性:学号、姓名、年龄、性别、专业。
    (2)具有方法:自我介绍,负责输出该学员的姓名、年龄、性别以及专业。

    09:Java对内存的划分分为几类?
    划分一:运行时数据区域; 程序计数器; Java虚拟机栈; 本地方法栈; 堆; 方法区;运行时常量池; 对象访问。
    划分二:栈区、堆区、静态区、代码区。

    10:堆和栈的区别?
    堆:存放的是引用数据类型;
    栈: 存放的是基本数据类型;容量小、速度快、适合存放小型数据。

  • 相关阅读:
    selectTree单选iview+vue
    怎样用读写锁快速实现一个缓存?
    Azkaban (一) --------- Azkaban 概论
    云原生2.0网关API标准发展趋势
    云原生消息流系统 Apache RocketMQ 在腾讯云的大规模生产实践
    05-RabbitMQ之原生API使用
    java的基础用法和常见错误
    业内首份!博睿数据入选中国信通院《中国AIOps现状调查报告(2022)》
    第一个Mybatis程序
    通达信程序化接口能为投资解决哪些问题?
  • 原文地址:https://blog.csdn.net/qq_45734913/article/details/126822468