静态类static和普通类

静态类(static)和普通类

@ 什么情况下定义静态类和普通类:

一般这个类经常被调用,很频繁被调用,定义成静态的就不用每次给他实例化了,直接用类去调用可以了,像工具类一般都定义成静态的,这样不用每次实例化了。

@静态变量是共享的, 在整个JVM中只存在一个, 而成员变量是每一个实例所独有的.成员变量就是供实例自己使用的,就好比,公司的名字为 static 的,那么公司所有员工都公用这个公司名

@ 用静态的类比常用的类有什么好处吗:

1.不用每次调用时再实例化了,方便吧,(缺点:是定义静态的会一直占有内存,从对相被创建时,他就会      创建一块内存,会一直占着内存)

2.直接用类名去调用(普通类调用时,必须先要给他new 下,才能去调用)

3 如果调用静态方法   可以类名.方法名也可以直接写个方法名

   public class qin{

       private static int num=10;

       public static void main(String[] args) {

       show();//qin.show();  //都可以,直接类名.方法名可以,也可以直接方法名

       System.out.println(num);

       static void show(){

       int age=20;

       print();

       add();

       System.out.println("我是静态方法!");

 }

1 静态变量不能定义在在静态方法里,必须定义成全局的(否则程序会报错)看<1>

   只要是静态的成员变量,不管这个方法是不是静态的,都必须要申明成全局的(不然要报错)      

   或者是既然这个方法都已经定义成static了,那他里面的方法或属性也就是静态的,没必要加static了看<2> 

   <1> public  class Dd {                                   

          int a;  或者是       

    <2>  int a;   

            static int b = 0;

            public static int func1(){

                public static int func1()   

                         {

                      {   

  int b =0;  //去掉static ,因为他当前这个functc1()方法已经是静态的,那说明他里面的方法或属性也已经是静    态的了

  b++;                                           b++; 

  System.out.println(b);                         system.out.println(b); 

   return b;                                      return b;

   }                                               } 

       public static void main(String[] args){

// Dd d = new Dd();

  Dd.func1();

   

   }                                                }

   2,private static final String url="jdbc:sqlserver://127......."

      加static 作用是:调用的时候不用new 了,直接类名.url

   3,程序中如果有static,程序首先会执行static,然后才执行别的。。。

   4 private static int num=10;加上static的时候,该变量只被实例化一次当该变量重复调用时候,相对而言节约内存,可以被其他的共享。

   5 public class qin{

private static int num=10;

        static{      

           System.out.println("我是静态代码块!");

}

public static void main(String[] args) {

   show();//qin.show();  //都可以,直接类名.方法名可以,也可以直接方法名

   System.out.println(num);

static void show(){

   int age=20;

   print();

   add();

   System.out.println("我是静态方法!");

}

 注意以下6点:

   //1.在静态方法中不可以调用实例方法

   //2.在实例方法中可以调用static方法

   //3.静态方法调用方法:1.类名 2.对象

   //4.实例方法调用方法:1.对象

   //5.静态方法里只能包含静态方法  非静态变量 

   //6.实例方法可以有静态方法 

@ 如果是静态类,可直接调用,不需要new 对象了,普通方法则需要先new对象了



 

     

猜你喜欢

转载自957484162.iteye.com/blog/2415208