静态类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对象了