1 类
类是我们Java程序中最小的执行单元:面向对象思想开发(方法)
Python:函数 面向对象+函数式编程
类使用class关键字修饰
类名使用首字母大写的写法
一个源文件不能代表一个类,原因是一个源文件中可以存放多个类
2 对象
对象:能看到到或者说在程序中可以直接使用的内容被称之为对象
通过new关键字创建的 :类名 对象名=new 类名();
3 类中的成员变量
类中的成员变量具有什么特点,和我们之前在main方法中声明变量有什么不同?
1 成员变量是具备默认值的
2 访问修饰符修饰 static private public
4 类对象的实例化: new关键字
clone克隆
反射的:newInstance();
代理: Proxy.newInstance();
5 对象数组
几个知识点:
- 类:
- [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
创建学院查询类,分别提供以下三个方法:
- 增加学员姓名的方法
- 显示本班学员的方法
- 在一定区间内查找本班学生的方法
要求:使用数据存储学生姓名,长度为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));
}
}