static
/*
static:静态,可以修饰成员变量和方法。
成员变量按照有无static修饰,分为两种:
1.类变量:有static修饰,属于类,在计算机里只有一份,会被类的全部对象共享。 访问:类名.类变量(位于堆内存)
2.实例变量:(对象的变量):无static修饰,属于每个对象的。 访问:对象.实例变量
!!!成员变量有几种?各自在什么情况下定义?
类变量:数据只需要一份,且需要被共享时(访问,修改)
实例变量:每个对象都要有一份,数据各不同(如:name、score、age)
!!!访问自己类中的类变量,是否可以省略类名不写?
可以。
注意:在某个类中访问其他类里的类变量,必须带类名访问。
成员方法按照有无static修饰,分为两种:
1.类方法:有static修饰,属于类,在计算机中只有一份,会被类的全部对象共享。 访问:类名.类变量(位于堆内存)
2.实例方法:(对象的方法):无static修饰,属于每个对象的。 访问:对象.实例方法
!!!main方法也是类方法
!!!类方法的常见应用场景:
类方法最常见的应用场景是做工具类。
!!!工具类是什么?
工具类中的方法都是一些类方法,每个方法都是用来完成一个功能的,工具类是个开发人员共同使用的。
!!!使用类方法来设计工具类有啥好处?
提高了代码复用;调用方便,提高了开发效率。
static的注意事项:
1.类方法中可以直接访问类的成员,不可以访问实例成员。(因为此时可以找到类地址,但是找不到对象地址)
2.实例方法中既可以直接访问类成员,也可以访问实例成员。(因为此时既可以找到类地址,也可以找到对象地址)
3.实例方法中可以出现this关键字,类方法中不可以出现this关键字。
!!!this是什么?
this就是一个变量,可以在方法中,来拿到当前对象地址。
!!!this有啥应用场景?
this主要用来解决:变量名称冲突问题。
*/
code-block
/*
代码块概述:
代码块是类的5大成分之一(成员变量、构造器、方法、代码块、内部类)
代码块分为两种:
1.静态代码块:
格式:static{}
特点:类加载时自动执行、由于类只会加载一次,所以静态代码块也会只执行一次(!!!)。
作用:完成类的初始化,例如:对类变量(!!!)的初始化赋值。
2.实例代码块:
格式:{}
特点:每次创建对象时,执行实例代码块,并在构造器前执行。
作用:和构造器一样,都是用来完成对象的初始化的,例如:对实例变量进行初始化赋值。
应用常见:可以将构造器里重复的代码放入实例代码块内,提高开发效率。
*/
design-pattern
/*
!!!什么是设计模式?设计模式主要学什么?单例模式解决了什么问题?
1.设计模式就是具体问题的最优解决方法。
2.解决了什么问题?怎么写?
3.确保一个类只有一个对象。
!!!单例设计模式:
//饿汉式单例(拿对象时,已创建对象):
写法:
1.把类的构造器私有。
2.定义一个类变量记住类的一个对象。
3.定义一个类方法,返回对象。
public class A{
1.私有构造器
private A(){
}
2.定义一个类变量记住类的一个对象-类变量a随类A只加载一次
private static A a = new A();
3.定义一个类方法,返回对象
public static A getObject(){
return a;
}
}
应用场景和有啥好处:
1.任务管理器、Runtime
2.在这些业务场景下,使用单例设计模式,可以避免浪费内存。
!!!懒汉式单例(拿对象时,才开始创建对象)
写法:
1.把类的构造器私有。
2.定义一个类变量用于存储类的一个对象。
3.提供一个类方法,保证返回的是同一个对象。
public class B{
1.私有构造器
private B(){
}
2.定义一个类变量用于存储类的一个对象
private static B b;
3.定义一个类方法,返回对象
public static B getObject(){
if(b == null){
b = new B();
}else{
return b;
}
}
}
*/
标签:变量,对象,访问,实例,static,oop,promax,方法
From: https://www.cnblogs.com/qingandji/p/18103584