网站建设多选题,网站做流量推广的方式,网站建设是必须的吗,电信开放81端口怎样做网站同一个类中#xff0c;访问其类成员#xff0c;可以省略类名不写
static#xff1a;叫静态#xff0c;可以修饰成员变量#xff0c;成员方法。
成员变量按照有无static修饰#xff0c;分为两种#xff1a;
类变量#xff1a;有static修饰#xff0c;属于类#xf…同一个类中访问其类成员可以省略类名不写
static叫静态可以修饰成员变量成员方法。
成员变量按照有无static修饰分为两种
类变量有static修饰属于类在计算机中只有一份会被类的所有对象共享
类名.类变量
实例变量(对象的变量)无static修饰属于每个对象每个对象都会一份
实例变量只能通过对象访问
创建一个学生类
public class student {static String name;//类变量int age;//实例变量对象变量
} 进行操作
public class test1 {public static void main(String[] args) {//1:类变量的用法//类名.类变量student.namehhh;//对象名.类变量student s1new student();s1.namexxx;student s2new student();s2.nameaaa;类变量在计算机中只有一份System.out.println(s1.name);//aaaSystem.out.println(student.name);//aaa}}类变量的应用场景 在开发中如果某个数据只需要一份且希望能够被共享则该数据可以定义类变量记住。
成员方法
类方法有static修饰的成员方法属于类。
实例方法无static修饰的成员方法属于对象。
类方法的使用场景
用来做工具类。
工具类就是一些类方法每个方法都是用来完成一个功能的。
这是我写了一个生成任意数验证码的工具类
public class myutil {private myutil() {}//别人不能创建对象public static String createCode(int n){String tmpabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWSYZ1234567890;String code;Random ranew Random();for (int i 0; i n; i) {int indexra.nextInt(tmp.length());codetmp.charAt(index);}return code;}
}类方法不用生成对象占用内存。
static的注意事项
1 类方法可以直接访问类成员变量和方法不可以直接访问实例成员
2 实例方法可以直接访问类成员也可以直接访问实例成员
3 类方法中不可以出现this关键字但是实例方法中可以出现this;
代码块
静态代码块
格式static {}
特点类加载会自动执行由于类只会加载一次所以静态代码块只会加载一次1
作用完成类的初始化例如对类变量的初始化赋值
使用 定义了一个学生类
public class student {public static int number10;static//静态代码块{System.out.println(静态代码块执行);}
}
使用
public class test {public static void main(String[] args) {System.out.println(student.number);/*静态代码块执行10*/System.out.println(student.number);//10;}
}
可以发现静态代码块只执行了一次
实例代码块 格式{}
特点每次创建对象时执行实例代码块并在构造器前执行
作用和构造器一样都是用来完成对象的初始化的。例如对实例对象进行初始化赋值 单例设计模式
确保类只有以一个对象 写法 把类的构造器私有化定义一个类变量记住类的一个对象定义一个类方法返回对象 创建一个类
public class sin {
//1私有化无参构造器private sin(){}
//2定义一个类变量记住类的一个对象private static sin anew sin();
//定义一个类方法返回对象public static sin getsin(){return a;}
}
操作
public class test {public static void main(String[] args) {//只能通过sin.getsin获取对象且此对象是static静态的只有一份所以是单例模式//sin anew sin()//errorsin() has private access//可见不能通过无参构造器创建对象sin a1 sin.getsin();sin a2 sin.getsin();System.out.println(a1);System.out.println(a2);//结果/*com.he.static3.sin2f4d3709com.he.static3.sin2f4d3709*/}
}上面这个单例设计模式叫饿汉式单例返回对象时对象已经创建好 懒汉式单例设计模式 写法 把类的构造器私有化定义一个类变量用于存储对象提供一个类方法保证返回的是同一个对象 public class lan {private lan(){}
//2定义一个类变量先不初始化用于存储对象。private static lan b;
//3提供一个类方法保证返回的是同一个对象 public static lan getlan(){if(bnull){bnew lan();}return b;}
}