1.1类和对象说明
面向过程(c语言,写代码用到的if语句,for循环等等)——>面向对象
面向对象:业务分门别列起来。设计成一个个类。使用类生成对象
类:比如人(抽象概念,单个)
对象:比如张三(多个)
C不是面向对象的编程语言,无法做到真正意义上的面向对象,c++,java可以做到面向对象
1.2类的属性和方法
类:依据于对象集分析,总结对象具有的属性。
属性:属于静态特征 (举例:人的姓名,性别,年龄)
方法(函数):属于动态属性 (举例:人的技能)
1.3类的入门案例
1.在scr文件中先新建一个类名
public类名与文件名一样
类的定义
//类名 public class School {//静态特征 // 属性 String name;//名称 int jsnumber;//教师数目 int jfnumber;//机房数目 //方法 public void show(){//展示方法 System.out.println("名称:"+name+",教师数目"+jsnumber+",机房数目:"+jfnumber); } }
如何在Demo01类中使用School中内容
把School作为一种自定义类型,再声明一种这种类型的变量
再分配内存空间
用school.来访问School类里面的内容
1.4类的入门案例内存图
-
堆:堆是一种特殊的树形结构,主要用于申请内存,可以根据具体的需要动态地为程序分配和释放内存,使得程序可以根据其运行需求随时调整内存的使用量。堆的优点是可以满足复杂的内存需求,便于程序员申请和释放内存,但其缺点是由于动态分配内存,每次申请内存和释放内存都会耗费大量的时间和空间开销。
-
栈:栈是一种特殊的线性表,具有先进后出的原则,栈顶指向栈中最后一个存储的元素。栈主要用来储存函数调用时的信息,因此也称为调用栈。栈的优点是操作简单,易于书写,且存取的时间复杂度低。由于只允许在一端进行插入和删除操作,因此数据的存取是有限的
通过空指针Null去访问属性会报错,出现指针异常
栈和堆类似于指针关系,是栈指向堆
1.5游客案例
修改管理员密码
public class Manager { String name="admin1";//用户名 int password=111111; }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); while(true){ System.out.println("请输入用户名"); String name=scanner.next(); Manager manager=new Manager(); if(name.equals(manager.name)){ manager.name=name; } else { System.out.println("输入用户名错误"); continue; } System.out.println("请输入旧密码"); while(true){ int password=scanner.nextInt(); if(manager.password==password){ System.out.println("请输入新密码"); int mima= scanner.nextInt(); manager.password=mima; System.out.println("修改成功你的密码是"+manager.password); break; } else { System.out.println("旧密码输入错误"); continue; } } } } }
当然在main函数里面给类里面变量赋值也可以,但要注意一定要改变里面的值
1.6客户积分回馈
public class Custom {
int jifen;
String name;
int a;
public void huikui(){
if((name.equals("金卡")&&jifen>1000)||(name.equals("普卡")&&jifen>1000)){
a=1;
System.out.println("回馈积分500分");
}
else a=0;
}
public void show(){
System.out.println("顾客卡的类型"+name+"顾客的积分:"+jifen);
}
}
import java.util.Scanner; public class Donm1 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); while(true){ System.out.println("请输入顾客的积分"); int jifen=scanner.nextInt(); System.out.println("请输入顾客卡类型"); String name= scanner.next(); Custom custom=new Custom(); custom.name=name; custom.jifen=jifen; custom.huikui(); if (custom.a==1) { custom.jifen=jifen+500; } else custom.jifen=jifen; custom.show(); } } }