🐒个人主页
🏅JavaSE系列专栏
关键字this
【🪂大家都知道
方法的形参
,只能在方法内部操作,并且出了方法体数据就销毁了。而我不想销毁数据,所以只能定义到外面-成员变量。若方法的形参与成员变量名字不同
,会导致产生很多很多变量(假设做项目)有点乱。
int name;//成员变量
int age;//成员变量
public void show(int name,int age){
this.name=name;
this.age=age;
}
🪅由于方法的形参与成员变量名字相同,会引发歧义,方法体遵循
就近原则
,优先调用局部的。为此我们使用this.可以表示当前对象下的属性和方法,常常用来区分同名的成员变量和局部变量。】
关键字static
概念
:static被称为静态,可以用来修饰类的属性,方法,代码块,内部类。
特点
:
• 随着类的加载而加载
• 优先于对象存在
• 修饰的成员,被所有对象所共享(只剩一份)
• 可不创建对象,直接被类调用,(也支持对象调用)
【注意】在static方法内部只能访问
类的static属性,不能访问
类的非static属性,static属性先加载。
【注意】static可以修饰成员方法的,修饰后的成员方法只能访问
静态的成员变量。因为静态方法也是随着类的加载而加载,类加载后,可能还没有创建对象。
●模拟卖票
public class TicketSeller {
private static int ticket = 11;/ /
票数只有一份 声明为静态的
public static void sellticket() {
ticket = ticket - 1;
System.out.println("卖票的静态方法");
}
}
public class Test {
public static void main(String[] args) {
TicketSeller.sellticket();/ /没有创建对象也可以访问静态方法
}
}
代码块
概念
:代码块在类中声明,类似一个没有名称的方法体(代码块),代码分实例块和静态块
🎇实例块:每次创建对象时自动调用
{
//任何符合语法的Java代码
}
🎇静态块:类加载时自动调用,仅一次,与是否创建对象无关。
static {
//任何符合语法的Java代码
}
知识延伸
–设计模式
概念
: 前人总结出来的解决某类问题的最优方案–模板
单例模式:设计模式的一种,需求在某个类在整个应用程序中只能打开一个窗口
(只能创建一个对象)。
🪀构造途径:将构造方法私有化,在程序的其他地方不能随意调用构造方法(封装思想
)
🎀懒汉单例:
public class Test {
static Test 唯一对象;
private Test(){//不能从外界直接创建对象
}
public static Test getTest(){
if(唯一对象==null){
唯一对象=new Test();
}
return 唯一对象;//调用的始终为这个对象
}
}
🎀饿汉单例:(急切式单例)
public class Test {
static Test 唯一对象=new Test();
private Test(){//不能从外界直接创建对象
}
public static Test getTest(){
return 唯一对象;//调用的始终为这个对象
}
}
【注意】
:懒汉单例与饿汉单例相比较,懒汉单例是不安全的
。在多线程的情况下,倘若 唯一对象=null ;两个线程同时进入
if()判断创建对象,会导致线程休眠