Static(静态):
-
所有的static关键字修饰的都是类相关的,类级别的。
-
所有static修饰的,都是采用“类名.”的方式访问。
-
static修饰的变量:静态变量,修饰的方法是静态方法。
Java中的一共有三大变量的存储位置:
-
局部变量:存储在栈stack中。
-
实例变量(对象级别):存储在堆内存中。
-
静态变量(类级别):存储在方法区中。
变量的分类:
-
变量根据声明的位置进行划分:
-
在方法体中声明的变量叫做:局部变量
-
在方法体外声明的变量叫做:成员变量。
-
-
成员变量又可以分为:实例变量、静态变量。。
-
如果一个属性对每个对象来说都不一样,则需要定义为实例变量
-
否则就是静态变量(一个属性都是大家所共有的)
-
class Static{
> //以下实例的都是对象相关的,访问时采用“引用.”的方式访问,需要先new对象。
> //实例相关的,必须先有对象,才能访问,可能会出现空指针异常。
> //成员变量中的实例变量;
> int i;
> //实例方法
> public void t2(){
> }
> //以下静态的都是类相关的,访问时采用“类名.”的方式访问,不需要new对象。
> //不需要对象的参与即可访问,不会出现空指针异常。
> //成员变量中的静态变量;
> static int z;
> //静态方法
> public static void test(){
> }
> }
> ```
public class text12{
• public static void main(String[] args){
• Role R = new Role("刘备");
• Role R1 = new Role("关羽");
• System.out.println(R.getInfo());
• System.out.println(R1.getInfo());
• }
}
class Role{
• private String name;
• private static String country="蜀国"; //静态变量
• public Role (String name){
• this.name = name;
• }
• public void setName(String name){
• this.name = name;
• }
• public String getName(){
• return name;
• }
• /*这一段在使用static关键字以后就可以省略,因为country的取值是他们公有的,所以只需要在该属性前声明static即可
• public void setCountry(String country){
• this.country = country;
• }
• public String getCountry(){
• return country;
• }*/
• public String getInfo(){
• return "name="+name+"country="+country;
• }
}
static——静态代码块
1、静态代码块的语法:static{
Java语句;}
2、静态代码块在类加载时执行,并且只执行一次,
3、特点:静态代码块是在main()方法执行之前执行的。
public class test02 {
static {
System.out.println("A");
}
public static void main(String[] args){
System.out.println("最后执行的!!!");
}
static{
System.out.println("B");
}
}
/* A
B
最后执行的!!!
*/
public class test{
//静态变量
static exam e = new exam();//注意这里!!!!!!
public static void main(String args[]) {
test.e.exam(); //注意这里!!!!!!
}
}
class exam{
public void exam(){
System.out.println("考试了");
}
}
分析:i变量在main方法中能不能直接访问???
public class test02 {
int i = 250;
static int k = 190+60;
public static void main(String[] args){
//java: 无法从静态上下文中引用非静态 变量 i
System.out.println(i);
//应该改为test02 t = new test02();
//System.out.println(t.i);//250
System.out.println(test02.k);//250
//注意:这个test02.可以省略。。。。
}
}
答案:
//不能。。。。。。。。。
总结:
1.使用static关键字修饰一个属性,声明为static的变量实质上就是全局变量(静态变量)
2.使用static关键字修饰一个方法,通常在一个类中定义一个方法为static
3.使用static关键字修饰一个类(通常是在内部类中)
以上就是Java中的静态变量static的应用了,欢迎大佬指正错误。