this 关键字
this代表当前对象,代表将来创建好的对象
this的使用场所:
- 在普通方法中使用,用于获取成员变量
- 在普通方法中使用,可以使用this 调用其他方法,通常这个this,可以被省略
- 可以在构造器中通过this 区分局部变量和成员变量
- this 必须是构造器中第一个语句
public class Teacher {
String name;
int age;
boolean isMarried;
public Teacher() {
System.out.println("无参构造器");
}
public Teacher(String name, int age) {
this();
System.out.println("两个参数的构造器");
this.name = name;
this.age = age;
}
//构造器的复用
public Teacher(String name, int age, boolean isMarried) {
//this();//调用无参构造
this(name,age);//调用两个参数构造
System.out.println("有参构造器");
//可以在构造器中通过this 区分局部变量和成员变量
this.isMarried = isMarried;
}
public void show(){
System.out.println(name +":"+age+":"+isMarried);
// 在普通方法中使用,可以使用this 调用其他方法,通常这个this,可以被省略
this.work();
}
public void work(){
System.out.println("我要赚钱");
}
public static void main(String[] args) {
//创建Teacher 对象
Teacher teacher = new Teacher("张杰", 25, false);
//调用方法
teacher.show();
}
}
package
package 用于管理类和接口,有时候,多个类有重名的情况可以使用package类管理 类使用package 可以更加合理的规划项目结构,不同的类应该放在合理的包下
import (导包)
基本类型,
//定义一个方法,需要传入两个整数,功能是将两个整数进行互换
public class Test {
public void exchange(int a,int b){
System.out.println("交换前:"+a+":"+b);
int temp;
temp=a;
a=b;
b=temp;
System.out.println("交换后:"+a+":"+b);
}
public static void main(String[] args) {
//创建对象
Test test = new Test();
test.exchange(3, 5);
}
}
引用类型参数传递
public class Test2 {
int x;
int y;
public Test2(){}
public Test2(int x, int y) {
super();
this.x = x;
this.y = y;
}
public void exchange(Test2 t){
int temp =t.x;
t.x=t.y;
t.y=temp;
}
public static void main(String[] args) {
//使用构造器创建对象
Test2 t = new Test2(45,56);
System.out.println("交换前"+t.x+":"+t.y);
t.exchange(t);
System.out.println("交换后"+t.x+":"+t.y);
}
}
结论
基本数据类型传参时传递的是值-------传值
引用数据类型传参时传递的是址------传址
static 关键字
static 静态 可以修饰属性和方法
修饰属性
static 修饰的属性被称为静态属性(静态成员变量)
普通的成员变量属于对象需要创建对象才能使用。
静态成员变量隶属于类,被所有的对象共享,静态成员变量存放在方法区。(在对象还未创建就已经存在)。
修饰方法
static 修饰的方法被称之为静态方法。静态方法中无法使用非静态的成员,也不能使用this 关键字
原因是静态方法在类被加载的时候就被加载,此时对象还未创建可以直接:类名.方法使用;不需要创建对象
static修饰的方法中不能使用,this 和普通成员变量
//以Math为例 math,中方法
double pi = Math.PI;
静态代码块
静态代码块也属于类组成成员。
格式:
类里面:成员变量,方法 ,构造器,静态代码块
public class TestStatic {
int num;
static String str;
public TestStatic(){}
public TestStatic(int num){
this.num=num;
System.out.println("有参构造器被创建");
}
public void show(){
System.out.println("普通方法:"+this.num);
}
public static void testStatic(){
System.out.println("静态方法:"+str);
}
/**
* 静态代码块,通常用于静态成员变量进行初始化操作
*/
static{
str="测试静态代码块";
System.out.println("静态代码块执行");//因为类只加载一次所以静态代码块只会执行一次
}
public static void main(String[] args) {
//创建对象
TestStatic testStatic = new TestStatic(123);
//调用普通方法
testStatic.show();
//调用静态方法
TestStatic.testStatic();
}
}
静态代码块:特征: 在类被加载的同时,就会加载静态代码块
通常用于为静态成员变量进行初始化操作