静态变量基础

static优先于对象存在,因为static的成员随着类的加载就已经存在了。

静态代码块:随着类的加载而执行,优先级最高

 

内存分为堆内存(存放new出来的对象),栈内存(存放局部变量),数据区(存放静态变量和字符串常量),代码区(存放JAVA中方法的代码)。

 

37.在静态方法里面不能调用动态的方法   在类的构造方法里面可以this调用方法,可以省略this

 

main 方法是静态方法,
静态方法是不能调用非静态方法。
因为静态方法是提前加载的。这个时候可能非静态方法根本就还没加载。所以,是不允许在静态方法里面调用非静态方法的。(静态方法变量优先与对象加载)                     

可以在静态方法中,获得非静态方法所在的类的对象实例( new 一个对象)。

在静态方法中,用这个实例去调用非静态方法。


静态的是共享的(类名,对象名都可以调用) 非静态的是特有的,静态方法不再是针对于某个对象调用,所以不能访问非静态的成员

局部变量不能是静态的,全局变量可以是静态的(在外面定义)

局部变量前不能放置任何访问修饰符 (private,public,和protected)。

 

静态方法变量,不能使用this,super  (静态变量优先于对象加载)


类有2种访问控制权限: 公有的(可被所有类共享)  缺省的(可被当前包中的类访问)

类中成员有4种访问控制权限:

私有成员(private):该成员仅能被当前类的成员访问。

没有修饰符表示缺省权限(当前包可见):说明该成员能被当前类以及包中的其他类所访问,称在当前包可见

protected声明保护成员:该成员能被当前类及其子类、或当前包中的其他类访问,称在子类中可见

public声明公有成员:该成员可被所有类访问

(在一个java文件里面不能写两个public的class  只能写一个  mian函数只能写在public的class文件里)




import java.util.ArrayList;
import java.util.List;

public class bb
{
    public TTT tt;
    
//    public bb bb1 ;
    
    public void getname(bb bb1)
    {
        bb1.setTt(tt);
    }
    
    public TTT getTt()
    {
        return tt;
    }
    
    public void setTt(TTT tt)
    {
        this.tt = tt;
    }
    
    public static void main(String[] args)
    {
        //  System.out.println(thi);
      //静态方法不再是针对于某个对象调用,静态变量属于类,所以不能访问非静态成员(super,this代表当前对象)
      //静态变量优先于对象存在  
      // bb1. 
      // System.out.println(super.getClass().getName());
        bb bb2 = new bb();
        bb2.getname(bb2);
       System.out.println(bb2.getClass()); 
        TTT tt = new TTT();
        String str[] = {};
        String s[] = new String[0];
        System.out.println(new String[0]);
    }
    
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值