IE盒子

搜索
查看: 110|回复: 0

Java关键字

[复制链接]

3

主题

7

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2023-3-10 20:04:54 | 显示全部楼层 |阅读模式
package:


  • 声明包;package 包名,例如:package name
  • 创建包时建议包名使用全小写,可以使用.
  • 避免类名重复;同包中的类不可以有相同的类名,不同包中的类类名可以同名
  • 相同包中的类可以直接访问,不同包中的类不能直接访问,需要通过包名.类名的方式来访问
//a.aa包
package a.aa; //声明a.aa包
public class a1 { //a.aa包的a1类
    b.bb.b1 aa = new b.bb.b1(); //a1类需要访问b1类则需要包.类名的方式来访问
}

//b.bb包
package b.bb; //声明b.bb包
public class b1 { //b.bb包的b1类
    b2 bb = new b2(); //b1可以直接访问b2
}
package b.bb; //声明b.bb包
public class b2 { //b.bb包的b2类
    b1 bb = new b1(); //b2可以直接访问b1
}import:


  • 导入类,方便跨包访问
//a.aa包
package a.aa; //声明a.aa包
import b.bb.b1; //在a.aa包,导入b1类
public class a1 { //a.aa包的a1类
    b1 aa = new b1(); //导入类后,可以直接访问
}

//b.bb包
package b.bb; //声明b.bb包
public class b1 { //b.bb包的b1类
}访问控制修饰符:


  • public:公开的,可以被任何类访问
  • protected:受保护的,所在类、派生类、同包类能访问
  • 默认(什么也不写):本类,同包类能访问
  • private:私有的,只有所在类能访问


  • 用于保护数据安全,设置访问权限
  • 类的访问控制修饰符只有public和默认两种方式,类中的成员(变量、方法)的访问控制修饰符可以是public、protected、默认、private任意一种
  • Java不建议使用默认的访问控制修饰符
//a.aa包
package a.aa; //声明a.aa包
import b.bb.b1; //在a.aa包,导入b1类
public class a1 { //a1类
    void a1test() {
        b1 aa = new b1();
        aa.a = 1;
        //aa.b = 2; //报错,a1和b1不同包
        //aa.c = 3; //报错,a1和b1不同包
        //aa.d = 4; //报错,a1和b1不同包
    }
}
package a.aa; //声明a.aa包
import b.bb.b1; //在a.aa包,导入b1类
public class a2 extends b1{ //a2类,继承b1类
    void a2test() {
        a = 1;
        b = 2; //a2是b1的派生类,可正常访问
        //c = 3; //报错,a1和b1不同包
        //d = 4; //报错,a1和b1不同包
    }
}

//b.bb包
package b.bb; //声明b.bb包
public class b1 { //b1类
    public int a;
    protected int b;
    int c;
    private int d;
    void b1test() {
        a = 1;
        b = 2;
        c = 3;
        d = 4;
    }
}
package b.bb; //声明b.bb包
public class b3 { //b3类
    b1 cc = new b1();
    void b3test() {
        cc.a = 1;
        cc.b = 2;
        cc.c = 3;
        //cc.d = 4; //报错,b1和b3是不同类
    }
}static静态修饰:


  • 静态变量和静态方法由static修饰
  • 静态变量是属于类的变量(实例变量是属于对象的变量)
  • 静态变量和静态方法在内存中只加载一次,如果对象的变量中有共享的部分,可将变量设置为静态变量;静态变量适用于存放图片、音乐、视频等多媒体数据
  • 静态变量和静态方法直接通过类名.静态变量或静态方法进行访问
  • 静态方法没有隐式的this,因此与对象实例变量访问有关的方法,不可以使用静态方法;与对象无关的方法可以设置成静态方法
静态变量
//静态变量
public class a {
    int a1;
    static int a2;
    a() {
        a1++;
        a2++;
    }

}
public class b {
    public static void main(String[] args) {
        a b1 = new a();
        a b2 = new a();
        a b3 = new a();
    }
}
//运行结果:
1-1
1-2
1-3
//实例变量一直是1,每次创建一个新的对象,就会出现一个实例变量,构造方法中赋值是多少实列变量就是多少;
//静态变量只有一个,会一直叠加

//访问静态变量
public class b {
    public static void main(String[] args) {
        a.a2 = 100; //类名.静态变量
        System.out.println(a.a2); //输出100
    }
}静态方法
package test;
public class aaa {
    int a1;
    static int a2;
    void test1() {
        System.out.println(a1);
    }
    static void test2() { //静态方法
        //System.out.println(a1); //报错:a1是实例变量与对象有关,因静态方法不支持this.
        System.out.println(a2);
    }
}

package test;
public class StaticMethod {
    public static void main(String[] args) {
        aaa a1 = new aaa();
        a1.test1();
        aaa.test2(); //通过类名.方法名调用静态方法
    }
}
补充:静态块

  • 静态块:static {}
  • 一个类中可以有多个静态块,加载顺序由上到下
  • 静态块和静态方法搭配使用
  • 静态块和类一样,只在方法区加载一次
package test;
public class aaa {
    static int a1;
    static int a2;
    static {
        a1 = 1;
        a2 = 2;
    }
    static void test2() {
        System.out.println(a1 + "," + a2);
    }
}

package test;
public class StaticMethod {
    public static void main(String[] args) {
        aaa.test2();
    }
}final:


  • final修饰的变量,变量的值不能被修改
  • final修饰的方法不能重写
  • final修饰的类不能被继承,可以继承其他类
static final(常量):


  • 声明的同时必须初始化
  • 常量通过类名.常量名访问
  • 常量的命名建议使用全大写,单词之间使用_分开
  • 编译时Java会将常量直接替换成具体的值,效率高
  • 程序运行时数据永远不变,且使用频率高的,适合作为常量
package test;
public class aaa {
    public static final double a1 = 1.23;
}

package test;
public class StaticMethod {
    public static void main(String[] args) {
        System.out.println(aaa.a1);
    }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表