static关键字,代码块的学习

1、类

package com.wyq.study;

public class Student {//创建类
	//创建属性
	static String name;
	static int age;
	//创建静态属性
	static String school;
	//静态变量,类变量,因为在使用时,使用语法为 类名.静态变量名 Student.school = "sdfdsf";
	//创建构造方法
	public Student(){
		System.out.println("这里是无参的构造方法。。。");
	}
	public Student(String name){
		System.out.println("这里是带一个参数的构造方法:name="+name);
	}
	public Student(String name,int age,String school){
		System.out.println("这里是带有三个参数的构造方法:大家好,我叫:"+name+",我今年:"+age+"岁了,我就读的学校是:"+school);
	}
	//创建普通成员方法
	public void study(String lesson,double score){
		learn(name, name, name);
		System.out.println("这里是带有三个参数的构造方法:大家好,我叫:"+this.name+",我今年:"+this.age+"岁了,我就读的学校是:"+this.school);
		System.out.println("在今年的考试中,我学了"+lesson+"课程,考了"+score+"分。");
	}
	//创建静态方法
	public static void learn(String lesson1,String lesson2,String lesson3){		
		System.out.println("这里是带有三个参数的构造方法:大家好,我叫:"+name+",我今年:"+age+"岁了,我就读的学校是:"+school);
		System.out.println("在今年的考试中,我学了"+lesson1+"课程,还学习了"+lesson2+"课程和"+lesson3+"课程。");
	}
	
	//创建普通代码块
	{
		System.out.println("这里是普通代码块");
	}
	static {
		System.out.println("这里是静态代码块。");
	}
	/**
	 * 代码块:
	 * (1)普通代码块,就是一个简单的代码块,用花括号{}括起来的
	 * (2)构造代码块,在类中定义,运行效果优先于构造方法先执行
	 * (3)静态代码块,在构造代码块前边加static关键字
	 * (4)同步代码块,使用sychronized进行修饰
	 * 运行顺序为:静态代码块》main方法》构造代码块》构造方法
	 */
}

2、调用

package com.wyq.study;

public class TestStudent {
	public static void main(String[] args) {
		//首先创建对象
		Student stu = null;	//在栈内存中声明
		stu = new Student();	//在堆内存中开空间,同时,这也是调用无参的构造方法,印证了构造方法是在创建对象时调用
		/**
		 *(1) static修饰的属性,在赋值的时候,需要使用类名.属性名去赋值,但是也可以使用对象名.属性名去赋值;
		 * 而非静态属性,在赋值的时候,一般使用对象名.属性名进行赋值。
		 * (2)static修饰静态方法,使用static修饰的静态方法,里边使用到的属性都必须是静态属性
		 * 同时在static方法中不可以使用this关键字,因为static的属性或者方法,在类加载到内存的时候,一同加载到内存中了,而在这个时候,还没有创建对象呢,所以不能使用this,
		 * 所以程序里边不能使用this.name,成员变量,也不能使用成员方法。
		 * 如果需要在静态方法中使用其他的普通方法或者普通属性,那么必须将其他的属性或者方法变成静态的属性或者方法,否则程序会报错。
		 * (3)
		 */
		//给属性赋值
		stu.age = 20;
		stu.name = "张三";
		//给静态属性赋值
		Student.school = "北京大学";
		stu.school = "清华大学";
		//调用普通方法
//		stu.study("计算机", 99.99);
//		System.out.println("普通方法调用完毕。。");
//		System.out.println("程序将要调用静态方法了。。。");
//		stu.learn("java", "语文", "数学");
	}
}

static关键字进行修饰:

1、修饰属性,被static修饰的属性,在进行赋值的时候,使用类名.属性名进行赋值,或者使用对姓名.属性名进行赋值

2、修饰方法,被static修饰的方法,在使用属性的时候,所涉及到的属性都必须是使用static修饰过得

3、static修饰的方法中,在使用属性的时候,不能使用this.属性名,因为static修饰的是在类加载到内存的时候已经加载进来了,可是this修饰的,在这时候,还没有创建对象,所以还没有加载类

4、static可以修饰代码块,被static修饰的代码块称谓静态代码块,执行顺序是优先于main方法先执行的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值