一、static关键字
1、static关键字
1)使用static关键字修饰一个属性
声明为static的变量实质上就是全局变量
2)使用static关键字修饰一个方法
通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法
3)使用static关键字修饰一个类
2、声明static的方法限制
声明static的方法有以下几条限制
1)它们仅能调用其他的static方法
2)它们只能访问static数据
3)它们不能以任何方式引用this或super
注意:静态属性和方法在类加载后就存到方法区内存中,此时,还没有产生对象,而普通方法和属性属于对象
/**
static关键字
*/
public class staticKeyWordDemo{
public static void main(String[] args){
Mistress m1 = new Mistress("小白");
Mistress m2 = new Mistress("小红");
m1.desc();
m2.desc();
m1.profession = "小三";
m1.desc();
m2.desc();
//静态数据不属于对象,属于类
//非静态的可调用静态的,静态的最好用类调用
//Mistress.profession;
//用类调用静态方法
Mistress.promosion();
m1.desc();
}
}
class Mistress{
String name;
static String profession = "情人";//用static修饰属性
public Mistress(String name){
this.name = name;
}
//此处没有进行封装
public void desc(){
System.out.println("我的名字是:" + name + "我是职业" + profession);
}
//晋升
//使用static修饰一个方法(表示这个方法是静态方法,不属于对象,属于类)
public static void promosion(){
System.out.println("转正啦");
profession = "主妇";
}
//public与static都是修饰符,Java中没有严格定义其位置
}
二、main方法
为主方法,是程序运行的入口,不需要生成对象就可以调用。
public static void main(String[] args){
//代码块
}
public:公有的
static:静态的
void:表示没有返回值
main:方法名
String[] args:表示参数为字符串数组
/**
main方法
*/
public class MainMethodDemo{
public static void main(String[] args){
System.out.println(args.length);
//有对象args,不为空,但长度为0
//可通过命令行进行传参格式为:Java 类名 + 参数(如果有多个参数要用空格隔开)
}
}
三、static作业
题目描述:创建一个羊类,使用static实现数羊,记录一共创建了几只羊。
/**
作业:
创建一个羊类,使用static实现数羊,记录一共创建了几只羊。
*/
public class HomeWork{
public static void main(String[] args){
Sheep s1 = new Sheep("喜羊羊");
Sheep s2 = new Sheep("美羊羊");
Sheep s3 = new Sheep("慢羊羊");
System.out.println("一共创建了" + Sheep.count + "只羊");
}
}
class Sheep{
private String name;
private static int count = 0;//计数器
public Sheep(String name){
this.name = name;
count++;
}
//获取羊的数量
public static int getCount(){
return count;
}
}