1、类和对象

1 类

类是我们Java程序中最小的执行单元:面向对象思想开发(方法)
Python:函数 面向对象+函数式编程

类使用class关键字修饰
类名使用首字母大写的写法
一个源文件不能代表一个类,原因是一个源文件中可以存放多个类

2 对象

对象:能看到到或者说在程序中可以直接使用的内容被称之为对象
通过new关键字创建的 :类名 对象名=new 类名();

3 类中的成员变量

类中的成员变量具有什么特点,和我们之前在main方法中声明变量有什么不同?
1 成员变量是具备默认值的
2 访问修饰符修饰 static private public

4 类对象的实例化: new关键字

clone克隆
反射的:newInstance();
代理: Proxy.newInstance();

5 对象数组

几个知识点:

  1. 类:
  • [1] 类不占用内存空间的
  • [2] 类可以看作为对象的模板 蓝图 所有对象都是通过自身类构建的
  • [3] 类是将部分实体相同的动态特征和静态特征组成的一种结构
  1. 对象:
  • [1] 对象是通过类实例化来的 占用内存空间
  • [2] 类看做为对象的抽象概念 对象看作为类的实例
  • [3] 关心与程序运行相关的特征
  1. 访问修饰符

  2. 方法|函数

  3. 对象数组

    //创建对象数组
        Person[] pers=new Person[10];
        pers[0]=per;
       	pers[1]=per1;
    	int numbers[]=new int[10];//菜单序号数组
    	String names[]=new String[10];//菜单名称
    	double price[]=new double[10];
    	numbers[0]=1;
    	names[0]="松鼠鲤鱼";
    	price[0]=58;
    	numbers[1]=2;
    	names[1]="小葱拌豆腐";
    	price[1]=20;
    	numbers[2]=3;
    	names[2]="水煮肉片";
    	price[2]=36;
    	System.out.println("序号          菜名             价格");
    	for (int i = 0; i < numbers.length; i++) {
    		System.out.println(numbers[i]+"    "+names[i]+"     "+price[i]);
    	}
    	System.out.println("序号          菜名             价格");
    	Menus[] pers=new Menus[10]; //对象数组 保存的对象呢
    	Menus m1=new Menus();
    	Menus m2=new Menus();
    	Menus m3=new Menus();
    	m1.number=1;
    	m1.name="松鼠鲤鱼";
    	m1.price=58;
    	m2.number=2;
    	m2.name="小葱拌豆腐";
    	m2.price=20;
    	m3.number=3;
    	m3.name="佛跳墙";
    	m3.price=1000;
    	pers[0]=m1;
    	pers[1]=m2;
    	pers[2]=m3;
    	for (int i = 0; i < pers.length; i++) {
    		if(pers[i]!=null)
    		  System.out.println(pers[i].number+"   "+pers[i].name+"     "+pers[i].price);
    	}
    

java中的四种访问级别:修饰符

public:公共 范围是最广的 使用public关键字修饰的任何成员都可以进行调用
private:私有的 范围是最窄的 使用private修饰的成员只能在本身类中进行调用
protected
default:默认不编写访问修饰符的权限 在同级包中的其他类可以使用 不能跨包使用

成员变量:修饰实体的静态特征,成员变量拥有默认值 数值类型的变量:0
boolean:false
String:null
数组:null

成员方法: 访问修饰符 返回值类型 方法名(参数){方法体} 声明*
什么是方法的返回值类型:函数执行结束后的结果类型 void 代表为空返回值 return 1 返回值2 结束方法的运行
return 后不能编写任何代码
什么是参数:方法执行的必备条件,参数的个数没有限制

调用阶段:通过对象调用函数 对象名.函数名
参数的数据类型
参数的个数
参数的顺序

方法好处:提高了代码的复用性
提升开发效率
可读性强
结构化程序,做结构优化 减少大量的冗余代码

this:当前类对象 谁调用就是谁

练习1

创建学员类和教员类
学员类:姓名 年龄 爱好 并提供自我介绍的函数
教员类:姓名 专业方向 授课课程 教龄 并提供自我介绍的函数
分别实例化两个类,并调用自我介绍的函数

//学生类

    package com.wenyue;
    
    public class Student {
    	String name;
    	int age;
    	String grade;
    	String hobby;
    	
    	public void selfIntroduction() {
    		System.out.printf("我叫%s,今年%s岁,我是%s班的学生,我的爱好是%s。\n",name,age,grade,hobby);
    	}
    }


       //老师类
        package com.wenyue;

public class Teacher {
	String name;
	String Majors;
	String course;
	String schoolAge;
	
	public void selfintroduction() {
		System.out.printf("我叫%s,我是%s专业方向的教员,教授的课程是%s,至今教龄已有%s年。\n",name,Majors,course,schoolAge);
	}
}
//主方法
package com.wenyue;

public class Work01 {
	public static void main(String[] args) {
		Student a = new Student();
		Teacher b = new Teacher();
		a.name = "温越";
		a.age = 22;
		a.grade = "b01";
		a.hobby = "游戏";
		b.name = "山间的风";
		b.Majors = "计算机";
		b.course = "Java";
		b.schoolAge = "b01";
		a.selfIntroduction();
		b.selfintroduction();
	}
}

练习2

创建学院查询类,分别提供以下三个方法:

  1. 增加学员姓名的方法
  2. 显示本班学员的方法
  3. 在一定区间内查找本班学生的方法
    要求:使用数据存储学生姓名,长度为10。并分别对以上的方法进行调用

package com.wenyue;

public class StudentSeek {
//方法一
public String[] nameAdd(String[] a,String name) {
	for (int i = 0; i < a.length; i++) {
		if (a[i]==null) {
			a[i] = name;
			break;
		}
		if (i==a.length-1) {
			break;
		}
	}
	return a;
}
//方法二
public String[] nameShow(String[] a) {
	for (int i = 0; i < a.length; i++) {
		if (a[i] != null) {
			System.out.print(a[i]+" ");
		}
	}
	System.out.println();
	return a;
}
//方法三
public void nameseek(String[] a,int b,int c,String d) {
	int i =0;
	for (i = b-1; i <= c-1; i++) {
		if (a[i]!=null) {
			if (a[i].equals(d)) {
				System.out.println("该学生在此区间的第"+(i-b+2)+"个。");
				break;
			}
		}
		if (i==c-1) {
			System.out.println("该学生不在此区间中。");
			break;
		}
	}
	
}


 }
package com.wenyue;

import java.util.Scanner;

public class Work02 {
//主方法
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		String[] a1 = new String[10];
		StudentSeek a = new StudentSeek();
		for (int i = 0; i < a1.length; i++) {
			System.out.print("请输入学生的名字");
			String s=input.next();
			a.nameAdd(a1,s);
			a.nameShow(a1);
			System.out.print("输入0,停止输入学生名字,输入1继续!");
			int o = input.nextInt();
			if (o == 0) {
				System.out.println("输入学生名字停止!");
				break;
			}
		}
		System.out.print("请输入要查找学生的名字");
		String name=input.next();
		System.out.print("请输入要查找的区间(位数区间)");
		int q=input.nextInt();
		System.out.print("至");
		int p=input.nextInt();
		a.nameseek(a1, q, p, name);
		
	}
}

练习3

实现简易计算器的设计 要求提供两个操作数,进行+ - * /运算

package com.wenyue;
//运算符
public class Operation {
	public double operation(double a,double b,char c) {
		double d=0;
		switch (c) {
		case '+':
			d=a+b;
			break;
		case '-':
			d=a-b;
			break;
		case '*':
			d=a*b;
			break;
		case '/':
			d=a/b;
			break;
		default:
			System.out.println("输入符号错误,请重新输入!");
		}
		return d;
		
	}
}
package com.wenyue;

import java.util.Scanner;

public class Work03 {
//主方法
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in); 
		System.out.print("请输入第一个数:");
		double s = input.nextDouble();
		System.out.print("请输入运算符:");
		char f = input.next().charAt(0);
		System.out.print("请输入第二个数:");
		double d = input.nextDouble();
		Operation a= new Operation();
		System.out.println(a.operation(s, d, f));
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值