java中static关键字简介
Posted 苦海123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中static关键字简介相关的知识,希望对你有一定的参考价值。
static静态关键字:
static关键字可以修饰成员变量和成员方法,被修饰的成员是属于类的,而不是简简单单的属于某个对象,也就是说可以不用通过对象调用,而是通过类直接调用。
类变量(静态变量):被static修饰的成员变量称为类变量。当创建对象后,各个对象都共享同一个类变量的值,任何对象都可以更改类变量的值,也可以在不创建对象的情况下对该类进行操作。
静态方法:被static修饰的方法称为静态方法,此方法不属于对象,而是属于类。静态方法不能直接访问成员变量和成员方法,可以直接访问类变量和静态方法;静态方法中不能使用this关键字
定义一个包含静态变量和静态方法的类:
// 定义一个有static关键字修饰成员变量的标准类:
public class StaticKey{
// 定义成员变量:
private String names;
private int age;
// 定义成员方法:
public String gowhere(){
return ",通过成员方方法去水立方";
}
// 1-1.类变量的定义格式:static 数据类型 变量名,如:
static String bus;//类变量可以直接通过类名点.访问,也可以通过对象.访问,但是不推荐使用对象访问
// 1-2.静态方法的定义格式:修饰符 static 返回值类型 方法名(){},如:
public static String gowherestatic(){
// System.out.println(this.names+"通过静态方法去迪士尼");静态方法不能直接访问成员变量和成员方法,也不能使用this关键字,静态方法只能访问静态成员。
return ",通过静态方法去迪士尼";
}
// 2.该类的无参数构造方法:每创建一次对象就会执行一次该构造方法
public StaticKey(){
System.out.println("无参数构造方法执行了");
}
// 3.该类的全参数构造方法:
public StaticKey(String na,int ag){
this.names = na;
this.age = ag;
}
// 4.names成员变量的get-和set-方法:
public String getNames(){
return names;
}
public void setNames(String na){
this.names = na;
}
// 5.age成员变量的get-和set-方法:
public int getAge(){
return age;
}
public void setAge(int ag){
this.age = ag;
}
}
通过上面的类实例化对象:
public class Passenger{
public static void main(String[] args){
// 1.通过StaticKey类实例化对象:
StaticKey passenger1 = new StaticKey("jack",18);
StaticKey passenger2 = new StaticKey("sherry",17);
// 没创建一次对象就会执行一次无参数构造方法,打印2次:全参数构造方法执行了
// 2.访问类变量:(不推荐通过对象访问类变量)
passenger1.bus = "大巴-001";
// 3-1.测试:通过对象访问类变量(不推荐使用)
System.out.println("姓名:"+passenger1.getNames()+",年龄:"+passenger1.getAge()+",大巴:"+passenger1.bus);//姓名:jack,年龄:18,大巴:大巴-001
System.out.println("姓名:"+passenger2.getNames()+",年龄:"+passenger2.getAge()+",大巴:"+passenger2.bus);//姓名:sherry,年龄:17,大巴:大巴-001
// 3-2:通过类直接访问类变量:(推荐使用)
StaticKey.bus = "大巴-002";
System.out.println("姓名:"+passenger1.getNames()+",年龄:"+passenger1.getAge()+",大巴更改为:"+StaticKey.bus);//姓名:jack,年龄:18,大巴更改为:大巴-002
System.out.println("姓名:"+passenger2.getNames()+",年龄:"+passenger2.getAge()+",大巴更改为:"+StaticKey.bus);//姓名:sherry,年龄:17,大巴更改为:大巴-002
// 4-1:通过对象调用成员方法:
System.out.println("姓名:"+passenger1.getNames()+",年龄:"+passenger1.getAge()+",大巴更改为:"+StaticKey.bus+passenger1.gowhere());//姓名:jack,年龄:18,大巴更改为:大巴-002,通过成员方方法去水立方
System.out.println("姓名:"+passenger2.getNames()+",年龄:"+passenger2.getAge()+",大巴更改为:"+StaticKey.bus+passenger2.gowhere());//姓名:sherry,年龄:17,大巴更改为:大巴-002,通过成员方方法去水立方
// 4-2:通过对象调用静态方法,不推荐使用,推荐使用类调用静态方法:(通过对象访问静态方法最终会被编译为通过类访问静态方法)
System.out.println("姓名:"+passenger1.getNames()+",年龄:"+passenger1.getAge()+",大巴更改为:"+StaticKey.bus+passenger1.gowherestatic());//姓名:jack,年龄:18,大巴更改为:大巴-002,通过静态方法去迪士尼
System.out.println("姓名:"+passenger2.getNames()+",年龄:"+passenger2.getAge()+",大巴更改为:"+StaticKey.bus+passenger2.gowherestatic());//姓名:sherry,年龄:17,大巴更改为:大巴-002,通过静态方法去迪士尼
System.out.println("姓名:"+passenger1.getNames()+",年龄:"+passenger1.getAge()+",大巴更改为:"+StaticKey.bus+StaticKey.gowherestatic());//姓名:jack,年龄:18,大巴更改为:大巴-002,通过静态方法去迪士尼
System.out.println("姓名:"+passenger2.getNames()+",年龄:"+passenger2.getAge()+",大巴更改为:"+StaticKey.bus+StaticKey.gowherestatic());//姓名:sherry,年龄:17,大巴更改为:大巴-002,通过静态方法去迪士尼
/*
总结:
成员方法可以访问成员变量和静态变量,静态方法不能直接访问非静态,因为在内存中是先有静态内容,后有非静态内容的,即前者无法访问后者,后者可以访问前者。
访问静态时,与对象无关,在内存中直接通过方法区-静态区访问,而不是通过某个对象间接访问。
*/
}
}
静态代码块:
直接在类中通过关键字static修饰大括号,特点:在某个java文件中第一次用到本类时只会执行一次,再使用此类将不再执行静态代码块中的内容(另一个java文件中会再次执行),如:
public class StaticBlock{
static {
System.out.println("这里是静态代码块");//这里只会执行一次,那就是在第一次使用到该类的时候,后面再使用到不会再执行静态代码块中的内容。
}
}
使用静态代码块类的实例对象:
public class StaticBlockObj{
public static void main(String[] args){
StaticBlock staticblock = new StaticBlock();
StaticBlock staticblock2 = new StaticBlock();
}
}
另一个java文件源码:
public class StaticBlockObj2{
public static void main(String[] args){
StaticBlock staticblock = new StaticBlock();
StaticBlock staticblock2 = new StaticBlock();
}
}
提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:810665436@qq.com联系笔者删除。
笔者:苦海
以上是关于java中static关键字简介的主要内容,如果未能解决你的问题,请参考以下文章