编程练习生的第五天
昨日回顾
This关键字
- this关键字 :代表当前对象
- this在构造器的首行调用其他构造器(本类中的其他构思器)
- this(参数)->匹配不同的构造器的参数
- 区分同名变量问题(成员变量与局部变量,参数之间同名问题)
- this使用在构造器中,指代当前创建的对象
- this使用在成员方法中,this指代当前调用成员方法的对象
- 默认发生就近原则
- 不存在同名变量|参数问题,变量就是指代成员,前面默认省略this.
- 1.调用构造器的时候this必须存在第一行才行
- 2.构造器之间不能相互调用
- 3.this不能使用在static修饰的内容中
*/
class Person{
public String name;
public int age;
public boolean gender; //true->女 false->男
public Person() {
// TODO Auto-generated constructor stub
}
public Person(String name) {
this.name=name;
}
//给人的姓名,年龄赋值
public Person(String name,int age) {
//this("",100,false);
this.name=name;
this.age=age;
System.out.println("2个参数的构造器");
}
public Person(String name,int age,boolean gender) {
//上一个构造器就是给name,age赋值的
//选中当前行上下移动->alt+方向上下键
this(name,age); //调用其他构造器,本类 如果实参位置是变量,传递的就是变量的值
this.gender=gender;
System.out.println("三个参数的构造器");
}
Static关键字
-
static关键字 静态的 成员修饰符
-
类变量|静态变量: static修饰变量,只能成员变量,不能修饰局部变量
-
类 方法|静态方法: static修饰的方法
静态的内容的使用方式: -
类名.方法名([参数列表]); 类名.属性名;
-
对象.方法名字([参数列表]); 对象.属性名;
-
被static修饰的静态的内容是属于类的,可以通过类使用的,可以通过对象去使用
-
成员的内容是属于对象的,成员变量,成员方法只能通过对象调用
-
静态的内容中只能直接使用静态的内容,成员内容需要通过对象使用
-
非静态的内容中,可以直接使用静态的,可以直接使用非静态的内容
-
只在类第一次加载的时候初始化一次,静态的内容是独一份的,所有的对象共享一个类中的静态内容
*/
public class StaticDemo01 {
//静态变量
static int age=5;
//成员变量
int id=10;
public void change(){
age++; //静态的
id++; //成员的
System.out.println(age+"-->"+id);
System.out.println("this:"+this);
}
public static void change2(){
age++; //静态的
StaticDemo01 demo=new StaticDemo01();
demo.id++; //成员的
System.out.println(age+"-->"+demo.id);
}
}
** * 块block: {}->作用域**
-
块block: {}->作用域
-
{}定义在方法中->局部代码块|普通语句块 执行时机:调用方法
-
{}定义在类中方法外->构造块 执行时机:new
-
static{}定义在类中方法外->静态块 执行时机:在类第一次加载以后执行一次
-
同步块
-
构造块先于构造器的代码执行,如果存在多个构造块,从上到下以此执行
-
静态块先于主方法执行,如果存在多个静态块,从上到下依次执行
-
static->main->构造块->构造器
*/
//如果存在静态块,静态变量,从上到下依次执行2019.07.05