static关键字:开发中如何定义一个共享的信息,给所有对象共享访问,如在线人数信息等
设计模式:单例 有些类只需要一个对象就可以了,如任务管理器对象,如何实现一个类只能对外产生同一个对象
面向对象三大特征:继承 大量角色类的属性和行为存在重复代码,如果把一类的角色信息进行优化,提升代码复用,降低代码冗余
静态关键字:
static的作用,修饰成员变量的用法 static是静态的意思,可以修饰成员变量,表示该成员变量只在内存中只存储一份,可以被共享访问、修改
成员变量可以分为两类
静态成员变量(有static修饰,属于类,内存中加载一次):常表示在线人数信息,需要被共享的信息,可以被共享访问
类名.静态成员变量(推荐) 对象.静态成员变量(不推荐)
实例成员变量(无static修饰,存在与每个对象中):常表示姓名name、年龄age、等属于每个对象的信息
对象.实例成员变量
package com.itheima.d1_foeld; public class User { //在线人数信息,静态成员变量 public static int onLineNumber=162; //实例成员变量 private String name; private int age; public static void main(String[] args) { //1。类名.静态成员变量 System.out.println(onLineNumber); //注意:同一个类中访问静态成员变量,类名可以省略不写 User.onLineNumber++; //2.对象.实例成员变量 User u1=new User(); u1.name="猪八戒"; u1.age=36; System.out.println(u1.name); System.out.println(u1.age); //对象.静态成员变量(不推荐) System.out.println(u1.onLineNumber); User u2 = new User(); u2.name="孙悟空"; u2.age=38; System.out.println(u2.name); System.out.println(u2.age); //对象.静态成员变量(不推荐这样访问) u2.onLineNumber++; System.out.println(onLineNumber); } }
成员变量的分类和访问分别是什么样的?
静态成员变量(有static修饰,属于类、加载一次,可以被共享访问)访问格式
类名.静态成员变量(推荐)
对象.静态成员变量(不推荐)
实例成员变量(无static修饰,属于对象)访问格式:
对象.实例成员变量
两种成员变量各自在什么情况下定义?
静态成员变量:表示在线人数等需要被共享的信息
实例成员变量:属于每个对象,且每个对象信息不同时(name,age...等)
static修饰方法的基本用法
之前我们定义的方法有的有static修饰,有的是没有的,有什么不同?
public void run(){
System.out.println(name+"正在好好学习,天天向上-");
}
public static int getMax(int a,int b){
return a>b?a:b;
}
成员方法的分类:
静态成员方法(有static修饰、属于类),建议用类名访问,也可以用对象访问
实例成员方法(无static修饰,属于对象),只能用对象触发访问
表示对象自己的行为,且方法中需要访问实例成员的,则该方法必须申明成实例方法
如果该方法是以执行一个通用功能为目的,或者需要方便访问,则可以申明成静态方法
成员方法的分类和访问分别是什么样的?
静态成员方法(有static修饰,属于类和对象共享)访问格式
类名.静态成员方法
对象.静态成员方法(不推荐)
实例成员方法(无static修饰,属于对象)的访问格式:对象.实例成员方法
每种成员方法的使用场景是怎么样的?
表示对象自己的行为的,且方法中需要访问实例成员的,则方法中组要访问实例成员的,则该方法必须申明成实例方法
如果该方法是以执行一个通用功能位目的,或者需要方便访问,则可以申明成静态方法
static实际应用案例:使用静态方法定义工具类
package com.itheima.d12_static_test; import java.util.Random; public class VerifyTool { //验证码 public static String createCode(int n) { //1.使用String开发一个验证码 String chars = "vbueohyouyonrfiufupoerohgARFEARGRTQEAF$fr$"; //2.定义一个变量用来存储作为验证码 String code = ""; //3.循环 Random ra = new Random(); for (int i = 0; i < 5; i++) { int index = ra.nextInt(chars.length()); /