在一个类的方法或构造方法内部,可以使用“this.成员变量名”这样的 格式来引用成员变量名,常常用来区分同名的成员变量和局部变量.
static关键字static被称为静态,可以用来修饰类的属性,方法,代码块,内部类。 • 随着类的加载而加载,类加载后,在方法区中存储,内存只有一个 • 优先于对象存在(先加载类) • 修饰的成员,被所有对象所共享 •被static修饰的方法只能访问静态的
public class Chinese {
static String country="中国";
String name;
int age;
public static void sentence(){
System.out.println("我们都在"+country);
}
}
public class ChineseTest {
public static void main(String[] args) {
System.out.println(Chinese.country);//优先于对象存在,可以用类调用(类加载后,在方法区里存储)
Chinese.sentence();
Chinese a=new Chinese();
a.age=10;
a.name="小明";
Chinese b=new Chinese();
b.name="小红";
b.age=20;
System.out.println(a.country);//也可以使用对象调用
b.country="美国";
System.out.println(a.country);
System.out.println(b.country);
System.out.println(Chinese.country);
Chinese.sentence();
}
}
测试结果:
代码块
代码块:相当于没有方法名的方法体
分为实例块(每次创建对象时自动调用)和静态块(在类第一次被加载的时候自动调用,仅一次)
public class Demo {
//成员变量
static int a=10;//静态
int b=20;//非静态
//构造方法
public Demo(){
System.out.println("这是无参构造方法");
}
public Demo(int b){
this.b=b;
System.out.println("这是有参构造方法");
}
//代码块
{
System.out.println("这是实例块"+a);
}
{
System.out.println("这是实例块"+b);
}
static {
System.out.println("这是静态块"+a);
}
static {
System.out.println("这是静态块");
}
//成员方法
public void show(){
System.out.println("人可以说话");
}
}
public class DemoTest {
public static void main(String[] args) {
new Demo();
new Demo();
}
}
测试结果:
包
用于区别类名的命名空间
作用:
1.避免类重复
2.按照不同的功能管理类
3.控制访问权限全类名:包名+类名简写
ep.关键字:import用于导入其他包中的类,同一个包中的类不需要导入
java.lang不需要导入,可以直接使用
访问权限修饰符public
1.公有的
2.可以被全部类访问
3.修饰类,属性,方法
protected
1.受保护的
2.可以被同一个类和同一个包中的其他类访问,不同包的该类的子类可以访问
3.修饰属性,方法
默认的
1.可以被同一个类和同一个包中的其他类访问
2.修饰类,属性,方法
private
-
私有的
-
只能被同一个类访问
-
修饰属性,方法
public class Demo1 {
public int pubnum = 5;
protected int pronum = 10;
int num = 15;
private int prinum = 6;
public void test() {
System.out.println(pubnum);
System.out.println(pronum);
System.out.println(num);
System.out.println(prinum);
}
protected void show(){
System.out.println("这是受保护的");
}
void show2(){
System.out.println("这是默认的");
}
private void show3(){
System.out.println("这是私有的");
}
}
public class Demo1Test {
public static void main(String[] args) {
Demo1 demo=new Demo1();
System.out.println(demo.pubnum);
System.out.println(demo.pronum);
System.out.println(demo.num);
demo.show();
demo.show2();
demo.test();
}
}
测试结果:



